From deae92ed1e85df461d43fd26ae524c7a37e98a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Andr=C3=A9n?= Date: Wed, 21 Feb 2024 13:29:27 +0100 Subject: [PATCH] fix: JoinConfigChecker and Scala 3 One classpath scanned entry was anonoymous and encoded to different names on Scala 2.13 and Scala 3, so making it an actual class to keep the name stable. --- .../akka-cluster/reflect-config.json | 2 +- .../cluster/JoinConfigCompatChecker.scala | 21 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/akka-cluster/src/main/resources/META-INF/native-image/com.typesafe.akka/akka-cluster/reflect-config.json b/akka-cluster/src/main/resources/META-INF/native-image/com.typesafe.akka/akka-cluster/reflect-config.json index 4389f5fccb0..eac7df8f1a6 100644 --- a/akka-cluster/src/main/resources/META-INF/native-image/com.typesafe.akka/akka-cluster/reflect-config.json +++ b/akka-cluster/src/main/resources/META-INF/native-image/com.typesafe.akka/akka-cluster/reflect-config.json @@ -47,7 +47,7 @@ "name" : "" } ] }, { - "name" : "akka.cluster.JoinConfigCompatChecker$$anon$1", + "name" : "akka.cluster.JoinConfigCompatChecker$CompositeChecker", "methods" : [ { "name" : "" } ] diff --git a/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala b/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala index 3b19852e9f5..ff9aeb46268 100644 --- a/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala +++ b/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala @@ -148,17 +148,18 @@ object JoinConfigCompatChecker { .get // can't continue if we can't load it } - // composite checker - new JoinConfigCompatChecker { - override val requiredKeys: im.Seq[String] = { - // Always include akka.version (used in join logging) - "akka.version" +: checkers.flatMap(_.requiredKeys).to(im.Seq) - } - override def check(toValidate: Config, clusterConfig: Config): ConfigValidation = - checkers.foldLeft(Valid: ConfigValidation) { (acc, checker) => - acc ++ checker.check(toValidate, clusterConfig) - } + new CompositeChecker(checkers) + } + + private final class CompositeChecker(checkers: Set[JoinConfigCompatChecker]) extends JoinConfigCompatChecker { + override val requiredKeys: im.Seq[String] = { + // Always include akka.version (used in join logging) + "akka.version" +: checkers.flatMap(_.requiredKeys).to(im.Seq) } + override def check(toValidate: Config, clusterConfig: Config): ConfigValidation = + checkers.foldLeft(Valid: ConfigValidation) { (acc, checker) => + acc ++ checker.check(toValidate, clusterConfig) + } } }