From 838c3355ae12952caf4c5b62533c27ccf66f76f3 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Tue, 26 Nov 2019 21:22:07 +0100 Subject: [PATCH] Revert to old extension load failure handling logic Partially reverting #28248 to make the existing tests succeed again Fixes #28254 --- .../main/scala/akka/actor/ActorSystem.scala | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala index 8e85475a7d..9eace92b95 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala @@ -1179,29 +1179,25 @@ private[akka] class ActorSystemImpl( private def loadExtensions(): Unit = { /* - * @param throwOnLoadFail Throw exception when an extension fails to load (needed for backwards compatibility) + * @param throwOnLoadFail + * Throw exception when an extension fails to load (needed for backwards compatibility. + * when the extension cannot be found at all we throw regardless of this setting) */ def loadExtensions(key: String, throwOnLoadFail: Boolean): Unit = { - def handleException(fqcn: String, problem: Throwable): Unit = { - if (!throwOnLoadFail) log.error(problem, "While trying to load extension [{}], skipping...", fqcn) - else throw new RuntimeException(s"While trying to load extension [$fqcn]", problem) - } - immutableSeq(settings.config.getStringList(key)).foreach { fqcn => dynamicAccess.getObjectFor[AnyRef](fqcn).recoverWith { case _ => dynamicAccess.createInstanceFor[AnyRef](fqcn, Nil) } match { case Success(p: ExtensionIdProvider) => - try registerExtension(p.lookup()) - catch { case NonFatal(e) => handleException(fqcn, e) } + registerExtension(p.lookup()) case Success(p: ExtensionId[_]) => - try registerExtension(p) - catch { case NonFatal(e) => handleException(fqcn, e) } + registerExtension(p) case Success(_) => if (!throwOnLoadFail) log.error("[{}] is not an 'ExtensionIdProvider' or 'ExtensionId', skipping...", fqcn) else throw new RuntimeException(s"[$fqcn] is not an 'ExtensionIdProvider' or 'ExtensionId'") case Failure(problem) => - handleException(fqcn, problem) + if (!throwOnLoadFail) log.error(problem, "While trying to load extension [{}], skipping...", fqcn) + else throw new RuntimeException(s"While trying to load extension [$fqcn]", problem) } } }