From bb852d9a202b579cb734e1f7ed8658a3673d18e6 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sat, 25 Apr 2026 13:56:36 +0200 Subject: [PATCH 01/11] try to build with pekko 2 --- pekko-sample-cluster-client-grpc-java/pom.xml | 2 +- pekko-sample-cluster-client-grpc-scala/build.sbt | 2 +- .../project/plugins.sbt | 2 +- pekko-sample-cluster-docker-compose-java/build.sbt | 2 +- pekko-sample-cluster-docker-compose-scala/build.sbt | 2 +- pekko-sample-cluster-java/build.sbt | 2 +- pekko-sample-cluster-java/pom.xml | 2 +- pekko-sample-cluster-kubernetes-java/pom.xml | 6 +++--- pekko-sample-cluster-kubernetes-scala/build.sbt | 6 +++--- pekko-sample-cluster-scala/build.sbt | 2 +- pekko-sample-distributed-data-java/build.sbt | 2 +- pekko-sample-distributed-data-scala/build.sbt | 2 +- pekko-sample-distributed-workers-scala/build.sbt | 3 ++- pekko-sample-fsm-java/pom.xml | 2 +- pekko-sample-fsm-scala/build.sbt | 2 +- pekko-sample-grpc-kubernetes-scala/build.sbt | 6 +++--- pekko-sample-grpc-kubernetes-scala/project/plugins.sbt | 2 +- pekko-sample-kafka-to-sharding-scala/build.sbt | 8 ++++---- pekko-sample-kafka-to-sharding-scala/project/plugins.sbt | 2 +- pekko-sample-persistence-dc-java/pom.xml | 6 +++--- pekko-sample-persistence-dc-scala/build.sbt | 7 ++++--- pekko-sample-persistence-java/pom.xml | 2 +- pekko-sample-persistence-scala/build.sbt | 2 +- pekko-sample-sharding-java/build.sbt | 4 ++-- pekko-sample-sharding-java/killrweather-fog/pom.xml | 4 ++-- pekko-sample-sharding-java/killrweather/pom.xml | 4 ++-- pekko-sample-sharding-scala/build.sbt | 4 ++-- 27 files changed, 46 insertions(+), 44 deletions(-) diff --git a/pekko-sample-cluster-client-grpc-java/pom.xml b/pekko-sample-cluster-client-grpc-java/pom.xml index de95cad5..a5bd2891 100644 --- a/pekko-sample-cluster-client-grpc-java/pom.xml +++ b/pekko-sample-cluster-client-grpc-java/pom.xml @@ -10,7 +10,7 @@ UTF-8 - 1.5.0 + 2.0.0-M1 1.2.0 3 diff --git a/pekko-sample-cluster-client-grpc-scala/build.sbt b/pekko-sample-cluster-client-grpc-scala/build.sbt index 75bcf4fb..050f9fe4 100644 --- a/pekko-sample-cluster-client-grpc-scala/build.sbt +++ b/pekko-sample-cluster-client-grpc-scala/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" lazy val `pekko-sample-cluster-client-grpc-scala` = project .in(file(".")) diff --git a/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt b/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt index d460e3f7..bfb8cc62 100644 --- a/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt +++ b/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "1.2.0") +addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M1") addSbtPlugin("com.github.sbt" % "sbt-javaagent" % "0.2.0") addSbtPlugin("com.github.sbt" % "sbt-multi-jvm" % "0.6.0") diff --git a/pekko-sample-cluster-docker-compose-java/build.sbt b/pekko-sample-cluster-docker-compose-java/build.sbt index 8ddb2471..48b51687 100644 --- a/pekko-sample-cluster-docker-compose-java/build.sbt +++ b/pekko-sample-cluster-docker-compose-java/build.sbt @@ -9,7 +9,7 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" /* dependencies */ diff --git a/pekko-sample-cluster-docker-compose-scala/build.sbt b/pekko-sample-cluster-docker-compose-scala/build.sbt index 6572b67d..de4c8936 100644 --- a/pekko-sample-cluster-docker-compose-scala/build.sbt +++ b/pekko-sample-cluster-docker-compose-scala/build.sbt @@ -10,7 +10,7 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" /* dependencies */ diff --git a/pekko-sample-cluster-java/build.sbt b/pekko-sample-cluster-java/build.sbt index e63fe1bb..3b81ca1a 100644 --- a/pekko-sample-cluster-java/build.sbt +++ b/pekko-sample-cluster-java/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" lazy val `pekko-sample-cluster-java` = project diff --git a/pekko-sample-cluster-java/pom.xml b/pekko-sample-cluster-java/pom.xml index 2ed52172..cb36d7c8 100644 --- a/pekko-sample-cluster-java/pom.xml +++ b/pekko-sample-cluster-java/pom.xml @@ -11,7 +11,7 @@ UTF-8 - 1.5.0 + 2.0.0-M1 3 diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index 3f0e2980..6b232fbe 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -18,9 +18,9 @@ 1.8 1.8 UTF-8 - 1.5.0 - 1.3.0 - 1.2.1 + 2.0.0-M1 + 2.0.0-M1 + 2.0.0-M1 3 ${git.commit.time}-${git.commit.id.abbrev} diff --git a/pekko-sample-cluster-kubernetes-scala/build.sbt b/pekko-sample-cluster-kubernetes-scala/build.sbt index 7f209869..6dd6c03b 100644 --- a/pekko-sample-cluster-kubernetes-scala/build.sbt +++ b/pekko-sample-cluster-kubernetes-scala/build.sbt @@ -3,9 +3,9 @@ ThisBuild / organization := "org.apache.pekko" name := "pekko-sample-cluster-kubernetes-scala" scalaVersion := "3.3.7" -val pekkoHttpVersion = "1.3.0" -val pekkoVersion = "1.5.0" -val pekkoManagementVersion = "1.2.1" +val pekkoHttpVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M1" +val pekkoManagementVersion = "2.0.0-M1" val logbackVersion = "1.3.15" // make version compatible with docker for publishing diff --git a/pekko-sample-cluster-scala/build.sbt b/pekko-sample-cluster-scala/build.sbt index ca9fded7..65c83687 100644 --- a/pekko-sample-cluster-scala/build.sbt +++ b/pekko-sample-cluster-scala/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" lazy val `pekko-sample-cluster-scala` = project diff --git a/pekko-sample-distributed-data-java/build.sbt b/pekko-sample-distributed-data-java/build.sbt index d339b733..579b7d7d 100644 --- a/pekko-sample-distributed-data-java/build.sbt +++ b/pekko-sample-distributed-data-java/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" val `pekko-sample-distributed-data-java` = project diff --git a/pekko-sample-distributed-data-scala/build.sbt b/pekko-sample-distributed-data-scala/build.sbt index ca8e2efa..b9439d84 100644 --- a/pekko-sample-distributed-data-scala/build.sbt +++ b/pekko-sample-distributed-data-scala/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" val `pekko-sample-distributed-data-scala` = project diff --git a/pekko-sample-distributed-workers-scala/build.sbt b/pekko-sample-distributed-workers-scala/build.sbt index 26a3b3d9..01f1688e 100644 --- a/pekko-sample-distributed-workers-scala/build.sbt +++ b/pekko-sample-distributed-workers-scala/build.sbt @@ -4,7 +4,8 @@ version := "1.0" scalaVersion := "3.3.7" -val pekkoVersion = "1.5.0" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M1" val cassandraPluginVersion = "1.1.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-fsm-java/pom.xml b/pekko-sample-fsm-java/pom.xml index 299f69bf..eb718698 100644 --- a/pekko-sample-fsm-java/pom.xml +++ b/pekko-sample-fsm-java/pom.xml @@ -6,7 +6,7 @@ UTF-8 - 1.5.0 + 2.0.0-M1 3 diff --git a/pekko-sample-fsm-scala/build.sbt b/pekko-sample-fsm-scala/build.sbt index ba65fa0e..c2938125 100644 --- a/pekko-sample-fsm-scala/build.sbt +++ b/pekko-sample-fsm-scala/build.sbt @@ -1,7 +1,7 @@ organization := "org.apache.pekko" name := "pekko-sample-fsm-scala" -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" scalaVersion := "3.3.7" diff --git a/pekko-sample-grpc-kubernetes-scala/build.sbt b/pekko-sample-grpc-kubernetes-scala/build.sbt index dc165c1b..85e50571 100644 --- a/pekko-sample-grpc-kubernetes-scala/build.sbt +++ b/pekko-sample-grpc-kubernetes-scala/build.sbt @@ -1,9 +1,9 @@ name := "pekko-grpc-kubernetes" scalaVersion := "3.3.7" -lazy val pekkoVersion = "1.5.0" -lazy val pekkoManagementVersion = "1.2.1" -lazy val pekkoHttpVersion = "1.3.0" +lazy val pekkoVersion = "2.0.0-M1" +lazy val pekkoManagementVersion = "2.0.0-M1" +lazy val pekkoHttpVersion = "2.0.0-M1" lazy val root = (project in file(".")) .aggregate(httpToGrpc, grpcService) diff --git a/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt b/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt index 61688eef..21f62eda 100644 --- a/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt +++ b/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt @@ -1,4 +1,4 @@ dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "2.2.0" -addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "1.2.0") +addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M1") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.8.0") diff --git a/pekko-sample-kafka-to-sharding-scala/build.sbt b/pekko-sample-kafka-to-sharding-scala/build.sbt index 4353e02f..0d368621 100644 --- a/pekko-sample-kafka-to-sharding-scala/build.sbt +++ b/pekko-sample-kafka-to-sharding-scala/build.sbt @@ -1,8 +1,8 @@ -val pekkoVersion = "1.5.0" -val pekkoHttpVersion = "1.3.0" +val pekkoVersion = "2.0.0-M1" +val pekkoHttpVersion = "2.0.0-M1" -val pekkoConnectorsKafkaVersion = "1.1.0" -val pekkoManagementVersion = "1.2.1" +val pekkoConnectorsKafkaVersion = "2.0.0-M1" +val pekkoManagementVersion = "2.0.0-M1" val EmbeddedKafkaVersion = "2.4.1.1" val logbackVersion = "1.3.15" val slf4jVersion = "2.0.17" diff --git a/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt b/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt index 81e1d48d..8312fdb6 100644 --- a/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt +++ b/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "1.2.0") +addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M1") addSbtPlugin("com.github.sbt" % "sbt-javaagent" % "0.2.0") // ALPN agent addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.8") diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml index 54f36ff9..9f7f910f 100644 --- a/pekko-sample-persistence-dc-java/pom.xml +++ b/pekko-sample-persistence-dc-java/pom.xml @@ -18,10 +18,10 @@ UTF-8 - 1.5.0 + 2.0.0-M1 1.1.0 - 1.3.0 - 1.2.1 + 2.0.0-M1 + 2.0.0-M1 3 diff --git a/pekko-sample-persistence-dc-scala/build.sbt b/pekko-sample-persistence-dc-scala/build.sbt index fe704cc6..f5d83f9c 100644 --- a/pekko-sample-persistence-dc-scala/build.sbt +++ b/pekko-sample-persistence-dc-scala/build.sbt @@ -3,11 +3,12 @@ name := "pekko-sample-replicated-event-sourcing-scala" scalaVersion := "3.3.7" -val pekkoVersion = "1.5.0" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M1" val cassandraPluginVersion = "1.1.0" -val pekkoHttpVersion = "1.3.0" -val pekkoClusterManagementVersion = "1.2.1" +val pekkoHttpVersion = "2.0.0-M1" +val pekkoClusterManagementVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-persistence-java/pom.xml b/pekko-sample-persistence-java/pom.xml index f3e11cf7..517dd144 100644 --- a/pekko-sample-persistence-java/pom.xml +++ b/pekko-sample-persistence-java/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 1.5.0 + 2.0.0-M1 3 diff --git a/pekko-sample-persistence-scala/build.sbt b/pekko-sample-persistence-scala/build.sbt index 6cc8b478..7acb2fe1 100644 --- a/pekko-sample-persistence-scala/build.sbt +++ b/pekko-sample-persistence-scala/build.sbt @@ -3,7 +3,7 @@ name := "pekko-sample-persistence-scala" scalaVersion := "3.3.7" -val pekkoVersion = "1.5.0" +val pekkoVersion = "2.0.0-M1" val logbackVersion = "1.3.15" libraryDependencies ++= Seq( diff --git a/pekko-sample-sharding-java/build.sbt b/pekko-sample-sharding-java/build.sbt index 335042a3..3ea05a1b 100644 --- a/pekko-sample-sharding-java/build.sbt +++ b/pekko-sample-sharding-java/build.sbt @@ -1,5 +1,5 @@ -val pekkoVersion = "1.5.0" -val pekkoHttpVersion = "1.3.0" +val pekkoVersion = "2.0.0-M1" +val pekkoHttpVersion = "2.0.0-M1" val logbackVersion = "1.3.15" lazy val buildSettings = Seq( diff --git a/pekko-sample-sharding-java/killrweather-fog/pom.xml b/pekko-sample-sharding-java/killrweather-fog/pom.xml index afcfb8d1..baaddc8c 100644 --- a/pekko-sample-sharding-java/killrweather-fog/pom.xml +++ b/pekko-sample-sharding-java/killrweather-fog/pom.xml @@ -18,8 +18,8 @@ UTF-8 - 1.5.0 - 1.3.0 + 2.0.0-M1 + 2.0.0-M1 3 diff --git a/pekko-sample-sharding-java/killrweather/pom.xml b/pekko-sample-sharding-java/killrweather/pom.xml index ad693442..1568cfe1 100644 --- a/pekko-sample-sharding-java/killrweather/pom.xml +++ b/pekko-sample-sharding-java/killrweather/pom.xml @@ -18,8 +18,8 @@ UTF-8 - 1.5.0 - 1.3.0 + 2.0.0-M1 + 2.0.0-M1 3 diff --git a/pekko-sample-sharding-scala/build.sbt b/pekko-sample-sharding-scala/build.sbt index bad87437..38276718 100644 --- a/pekko-sample-sharding-scala/build.sbt +++ b/pekko-sample-sharding-scala/build.sbt @@ -1,5 +1,5 @@ -val pekkoVersion = "1.5.0" -val pekkoHttpVersion = "1.3.0" +val pekkoVersion = "2.0.0-M1" +val pekkoHttpVersion = "2.0.0-M1" val logbackVersion = "1.3.15" lazy val buildSettings = Seq( From 3ba8f4409abaf9255872a29df1ec29cb9bfb6173 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sat, 25 Apr 2026 14:22:26 +0200 Subject: [PATCH 02/11] java 17 --- .github/workflows/build-test.yml | 4 ++-- .github/workflows/publish-nightly.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index b41ee033..1fc80148 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -22,11 +22,11 @@ jobs: # we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves fetch-depth: 0 - - name: Setup Java 11 + - name: Setup Java 17 uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Install sbt uses: sbt/setup-sbt@b113b960ba361e87e08ce02a390d51871b7ee459 # v1.5.13 diff --git a/.github/workflows/publish-nightly.yml b/.github/workflows/publish-nightly.yml index edb80072..d57fde11 100644 --- a/.github/workflows/publish-nightly.yml +++ b/.github/workflows/publish-nightly.yml @@ -37,11 +37,11 @@ jobs: # we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves fetch-depth: 0 - - name: Setup Java 11 + - name: Setup Java 17 uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Cache Coursier cache uses: coursier/cache-action@ee0650f98295f27a505e4bfd284c9bfaa913a465 # v9.0.1 From 5a47c9393c69d28c7d8d0dabbcbaef3bbc115fa2 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 4 Oct 2026 19:00:30 +0100 Subject: [PATCH 03/11] Upgrade to Pekko 2.0.0-M4 and fix compile issues Motivation: Pekko 2.0.0-M4 is the latest core milestone and removes APIs the samples still used. Modification: - Bump Pekko core to 2.0.0-M4 and Pekko gRPC to 2.0.0-M2 (other modules stay on their latest 2.0.0-M1). - Replace removed OverflowStrategy.dropNew with dropTail in the cluster client gRPC samples (Java and Scala). - Replace removed Http().bindAndHandle/bindAndHandleAsync with newServerAt(...).bind(...). - Align ScalaPB compilerplugin with pekko-grpc 2.0.0-M2 (1.0.0-alpha.5). - Set evictionErrorLevel to Info where mixed milestones trip semver checks. - Set scalaVersion at ThisBuild in grpc-kubernetes so subprojects do not fall back to Scala 2.12. Result: All sbt and Maven samples compile against Pekko 2.0.0-M4. Tests: - sbt Test/compile (+ MultiJvm/compile) and mvn test-compile: pass for all samples - sharding-scala sbt test: pass; kafka-to-sharding-scala sbt test: pass - cluster-client-grpc-java mvn test: fails without --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED (Agrona 2.x), passes with it - cluster-client-grpc-scala multi-jvm:test: fails with the same Agrona error References: Refs #151 --- pekko-sample-cluster-client-grpc-java/pom.xml | 4 ++-- .../java/sample/cluster/client/grpc/ClusterClient.java | 2 +- .../client/grpc/ClusterClientReceptionistGrpcImpl.java | 2 +- pekko-sample-cluster-client-grpc-scala/build.sbt | 3 ++- .../project/plugins.sbt | 2 +- .../scala/sample/cluster/client/grpc/ClusterClient.scala | 4 ++-- .../cluster/client/grpc/ClusterClientReceptionist.scala | 7 +------ .../client/grpc/ClusterClientReceptionistGrpcImpl.scala | 2 +- pekko-sample-cluster-docker-compose-java/build.sbt | 2 +- pekko-sample-cluster-docker-compose-scala/build.sbt | 2 +- pekko-sample-cluster-java/build.sbt | 2 +- pekko-sample-cluster-java/pom.xml | 2 +- pekko-sample-cluster-kubernetes-java/pom.xml | 2 +- pekko-sample-cluster-kubernetes-scala/build.sbt | 3 ++- pekko-sample-cluster-scala/build.sbt | 2 +- pekko-sample-distributed-data-java/build.sbt | 2 +- pekko-sample-distributed-data-scala/build.sbt | 2 +- pekko-sample-distributed-workers-scala/build.sbt | 2 +- pekko-sample-fsm-java/pom.xml | 2 +- pekko-sample-fsm-scala/build.sbt | 2 +- pekko-sample-grpc-kubernetes-scala/build.sbt | 5 +++-- pekko-sample-grpc-kubernetes-scala/project/plugins.sbt | 2 +- pekko-sample-kafka-to-sharding-scala/build.sbt | 3 ++- .../src/main/scala/sample/sharding/kafka/Main.scala | 8 +------- pekko-sample-kafka-to-sharding-scala/project/plugins.sbt | 4 ++-- pekko-sample-persistence-dc-java/pom.xml | 2 +- pekko-sample-persistence-dc-scala/build.sbt | 2 +- pekko-sample-persistence-java/pom.xml | 2 +- pekko-sample-persistence-scala/build.sbt | 2 +- pekko-sample-sharding-java/build.sbt | 3 ++- pekko-sample-sharding-java/killrweather-fog/pom.xml | 2 +- pekko-sample-sharding-java/killrweather/pom.xml | 2 +- pekko-sample-sharding-scala/build.sbt | 3 ++- .../scala/sample/killrweather/WeatherHttpServer.scala | 2 +- 34 files changed, 44 insertions(+), 49 deletions(-) diff --git a/pekko-sample-cluster-client-grpc-java/pom.xml b/pekko-sample-cluster-client-grpc-java/pom.xml index a5bd2891..d91a7517 100644 --- a/pekko-sample-cluster-client-grpc-java/pom.xml +++ b/pekko-sample-cluster-client-grpc-java/pom.xml @@ -10,8 +10,8 @@ UTF-8 - 2.0.0-M1 - 1.2.0 + 2.0.0-M4 + 2.0.0-M2 3 diff --git a/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java b/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java index c62be6f4..c492e446 100644 --- a/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java +++ b/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java @@ -157,7 +157,7 @@ private static CompletionStage newSession( // never fail from stream element elem -> Optional.empty(), settings.bufferSize, - OverflowStrategy.dropNew() + OverflowStrategy.dropTail() ) .via(killSwitch.flow()) .map(msg -> { diff --git a/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.java b/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.java index 71bca704..6e03dd22 100644 --- a/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.java +++ b/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.java @@ -40,7 +40,7 @@ public Source newSession(Source in) { // never fail from stream element elem -> Optional.empty(), settings.bufferSize, - OverflowStrategy.dropNew()) + OverflowStrategy.dropTail()) .map( rsp -> { Payload payload = serialization.serializePayload(rsp); return Rsp.newBuilder().setPayload(payload).build(); diff --git a/pekko-sample-cluster-client-grpc-scala/build.sbt b/pekko-sample-cluster-client-grpc-scala/build.sbt index 050f9fe4..7042e5a3 100644 --- a/pekko-sample-cluster-client-grpc-scala/build.sbt +++ b/pekko-sample-cluster-client-grpc-scala/build.sbt @@ -1,6 +1,7 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M1" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M4" lazy val `pekko-sample-cluster-client-grpc-scala` = project .in(file(".")) diff --git a/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt b/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt index bfb8cc62..ab5b1e91 100644 --- a/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt +++ b/pekko-sample-cluster-client-grpc-scala/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M1") +addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M2") addSbtPlugin("com.github.sbt" % "sbt-javaagent" % "0.2.0") addSbtPlugin("com.github.sbt" % "sbt-multi-jvm" % "0.6.0") diff --git a/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClient.scala b/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClient.scala index 6354e555..7c2368d3 100644 --- a/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClient.scala +++ b/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClient.scala @@ -65,12 +65,12 @@ object ClusterClient { Source .actorRef[Any]( bufferSize = settings.bufferSize, - overflowStrategy = OverflowStrategy.dropNew, + overflowStrategy = OverflowStrategy.dropTail, // never complete from stream element completionMatcher = PartialFunction.empty, // never fail from stream element failureMatcher = PartialFunction.empty) - // .actorRef[Any](bufferSize = settings.bufferSize, overflowStrategy = OverflowStrategy.dropNew) + // .actorRef[Any](bufferSize = settings.bufferSize, overflowStrategy = OverflowStrategy.dropTail) .via(killSwitch.flow) .map { case send: Send => diff --git a/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionist.scala b/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionist.scala index 48764c53..0de0b3d0 100644 --- a/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionist.scala +++ b/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionist.scala @@ -17,7 +17,6 @@ import org.apache.pekko.cluster.pubsub.DistributedPubSub import org.apache.pekko.cluster.pubsub.DistributedPubSubMediator import org.apache.pekko.event.Logging import org.apache.pekko.http.scaladsl.Http -import org.apache.pekko.http.scaladsl.HttpConnectionContext import org.apache.pekko.http.scaladsl.model.HttpRequest import org.apache.pekko.http.scaladsl.model.HttpResponse import org.apache.pekko.stream.Materializer @@ -100,11 +99,7 @@ final class ClusterClientReceptionist(system: ExtendedActorSystem) extends Exten ClusterClientReceptionistServiceHandler( new ClusterClientReceptionistGrpcImpl(settings, pubSubMediator, serialization)(materializer, log)) - Http().bindAndHandleAsync( - service, - interface = settings.hostPort.hostname, - settings.hostPort.port, - connectionContext = HttpConnectionContext()) + Http().newServerAt(settings.hostPort.hostname, settings.hostPort.port).bind(service) } server.onComplete { result => diff --git a/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.scala b/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.scala index df2459ea..03636aea 100644 --- a/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.scala +++ b/pekko-sample-cluster-client-grpc-scala/src/main/scala/sample/cluster/client/grpc/ClusterClientReceptionistGrpcImpl.scala @@ -28,7 +28,7 @@ class ClusterClientReceptionistGrpcImpl( Source .actorRef[Any]( bufferSize = settings.bufferSize, - overflowStrategy = OverflowStrategy.dropNew, + overflowStrategy = OverflowStrategy.dropTail, // never complete from stream element completionMatcher = PartialFunction.empty, // never fail from stream element diff --git a/pekko-sample-cluster-docker-compose-java/build.sbt b/pekko-sample-cluster-docker-compose-java/build.sbt index 48b51687..5ba14f37 100644 --- a/pekko-sample-cluster-docker-compose-java/build.sbt +++ b/pekko-sample-cluster-docker-compose-java/build.sbt @@ -9,7 +9,7 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" /* dependencies */ diff --git a/pekko-sample-cluster-docker-compose-scala/build.sbt b/pekko-sample-cluster-docker-compose-scala/build.sbt index de4c8936..3657bdbf 100644 --- a/pekko-sample-cluster-docker-compose-scala/build.sbt +++ b/pekko-sample-cluster-docker-compose-scala/build.sbt @@ -10,7 +10,7 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" /* dependencies */ diff --git a/pekko-sample-cluster-java/build.sbt b/pekko-sample-cluster-java/build.sbt index 3b81ca1a..ff908b46 100644 --- a/pekko-sample-cluster-java/build.sbt +++ b/pekko-sample-cluster-java/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" lazy val `pekko-sample-cluster-java` = project diff --git a/pekko-sample-cluster-java/pom.xml b/pekko-sample-cluster-java/pom.xml index cb36d7c8..e4f1fb09 100644 --- a/pekko-sample-cluster-java/pom.xml +++ b/pekko-sample-cluster-java/pom.xml @@ -11,7 +11,7 @@ UTF-8 - 2.0.0-M1 + 2.0.0-M4 3 diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index 6b232fbe..d3e91bda 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -18,7 +18,7 @@ 1.8 1.8 UTF-8 - 2.0.0-M1 + 2.0.0-M4 2.0.0-M1 2.0.0-M1 3 diff --git a/pekko-sample-cluster-kubernetes-scala/build.sbt b/pekko-sample-cluster-kubernetes-scala/build.sbt index 6dd6c03b..f13bb6a1 100644 --- a/pekko-sample-cluster-kubernetes-scala/build.sbt +++ b/pekko-sample-cluster-kubernetes-scala/build.sbt @@ -4,7 +4,8 @@ name := "pekko-sample-cluster-kubernetes-scala" scalaVersion := "3.3.7" val pekkoHttpVersion = "2.0.0-M1" -val pekkoVersion = "2.0.0-M1" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M4" val pekkoManagementVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-cluster-scala/build.sbt b/pekko-sample-cluster-scala/build.sbt index 65c83687..80d1487a 100644 --- a/pekko-sample-cluster-scala/build.sbt +++ b/pekko-sample-cluster-scala/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" lazy val `pekko-sample-cluster-scala` = project diff --git a/pekko-sample-distributed-data-java/build.sbt b/pekko-sample-distributed-data-java/build.sbt index 579b7d7d..58e86d61 100644 --- a/pekko-sample-distributed-data-java/build.sbt +++ b/pekko-sample-distributed-data-java/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" val `pekko-sample-distributed-data-java` = project diff --git a/pekko-sample-distributed-data-scala/build.sbt b/pekko-sample-distributed-data-scala/build.sbt index b9439d84..c3050fd5 100644 --- a/pekko-sample-distributed-data-scala/build.sbt +++ b/pekko-sample-distributed-data-scala/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" val `pekko-sample-distributed-data-scala` = project diff --git a/pekko-sample-distributed-workers-scala/build.sbt b/pekko-sample-distributed-workers-scala/build.sbt index 01f1688e..3bf4e378 100644 --- a/pekko-sample-distributed-workers-scala/build.sbt +++ b/pekko-sample-distributed-workers-scala/build.sbt @@ -5,7 +5,7 @@ version := "1.0" scalaVersion := "3.3.7" ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val cassandraPluginVersion = "1.1.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-fsm-java/pom.xml b/pekko-sample-fsm-java/pom.xml index eb718698..b92e30f6 100644 --- a/pekko-sample-fsm-java/pom.xml +++ b/pekko-sample-fsm-java/pom.xml @@ -6,7 +6,7 @@ UTF-8 - 2.0.0-M1 + 2.0.0-M4 3 diff --git a/pekko-sample-fsm-scala/build.sbt b/pekko-sample-fsm-scala/build.sbt index c2938125..3881b6bb 100644 --- a/pekko-sample-fsm-scala/build.sbt +++ b/pekko-sample-fsm-scala/build.sbt @@ -1,7 +1,7 @@ organization := "org.apache.pekko" name := "pekko-sample-fsm-scala" -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" scalaVersion := "3.3.7" diff --git a/pekko-sample-grpc-kubernetes-scala/build.sbt b/pekko-sample-grpc-kubernetes-scala/build.sbt index 85e50571..0a7bbf75 100644 --- a/pekko-sample-grpc-kubernetes-scala/build.sbt +++ b/pekko-sample-grpc-kubernetes-scala/build.sbt @@ -1,7 +1,8 @@ name := "pekko-grpc-kubernetes" -scalaVersion := "3.3.7" +ThisBuild / scalaVersion := "3.3.7" -lazy val pekkoVersion = "2.0.0-M1" +ThisBuild / evictionErrorLevel := Level.Info +lazy val pekkoVersion = "2.0.0-M4" lazy val pekkoManagementVersion = "2.0.0-M1" lazy val pekkoHttpVersion = "2.0.0-M1" diff --git a/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt b/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt index 21f62eda..0545d6ff 100644 --- a/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt +++ b/pekko-sample-grpc-kubernetes-scala/project/plugins.sbt @@ -1,4 +1,4 @@ dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "2.2.0" -addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M1") +addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M2") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.8.0") diff --git a/pekko-sample-kafka-to-sharding-scala/build.sbt b/pekko-sample-kafka-to-sharding-scala/build.sbt index 0d368621..12d59bc1 100644 --- a/pekko-sample-kafka-to-sharding-scala/build.sbt +++ b/pekko-sample-kafka-to-sharding-scala/build.sbt @@ -1,4 +1,5 @@ -val pekkoVersion = "2.0.0-M1" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M4" val pekkoHttpVersion = "2.0.0-M1" val pekkoConnectorsKafkaVersion = "2.0.0-M1" diff --git a/pekko-sample-kafka-to-sharding-scala/processor/src/main/scala/sample/sharding/kafka/Main.scala b/pekko-sample-kafka-to-sharding-scala/processor/src/main/scala/sample/sharding/kafka/Main.scala index 027fcf3b..44ed6ca1 100644 --- a/pekko-sample-kafka-to-sharding-scala/processor/src/main/scala/sample/sharding/kafka/Main.scala +++ b/pekko-sample-kafka-to-sharding-scala/processor/src/main/scala/sample/sharding/kafka/Main.scala @@ -7,7 +7,6 @@ import org.apache.pekko.cluster.typed.{ Cluster, SelfUp, Subscribe } import org.apache.pekko.http.scaladsl._ import org.apache.pekko.http.scaladsl.model.{ HttpRequest, HttpResponse } import org.apache.pekko.management.scaladsl.PekkoManagement -import org.apache.pekko.stream.Materializer import com.typesafe.config.{ Config, ConfigFactory } import scala.concurrent.Future @@ -96,14 +95,9 @@ object Main { def startGrpc( system: ActorSystem[?], frontEndPort: Int, region: ActorRef[UserEvents.Command]): Future[Http.ServerBinding] = { - val mat = Materializer.createMaterializer(system.toClassic) val service: HttpRequest => Future[HttpResponse] = UserServiceHandler(new UserGrpcService(system, region))(system.toClassic) - Http()(system.toClassic).bindAndHandleAsync( - service, - interface = "127.0.0.1", - port = frontEndPort, - connectionContext = HttpConnectionContext())(mat) + Http()(system.toClassic).newServerAt("127.0.0.1", frontEndPort).bind(service) } diff --git a/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt b/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt index 8312fdb6..8bfdca86 100644 --- a/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt +++ b/pekko-sample-kafka-to-sharding-scala/project/plugins.sbt @@ -1,6 +1,6 @@ -addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M1") +addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "2.0.0-M2") addSbtPlugin("com.github.sbt" % "sbt-javaagent" % "0.2.0") // ALPN agent addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.8") -libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.11.20" +libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "1.0.0-alpha.5" diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml index 9f7f910f..854d02fc 100644 --- a/pekko-sample-persistence-dc-java/pom.xml +++ b/pekko-sample-persistence-dc-java/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 2.0.0-M1 + 2.0.0-M4 1.1.0 2.0.0-M1 2.0.0-M1 diff --git a/pekko-sample-persistence-dc-scala/build.sbt b/pekko-sample-persistence-dc-scala/build.sbt index f5d83f9c..830b74e7 100644 --- a/pekko-sample-persistence-dc-scala/build.sbt +++ b/pekko-sample-persistence-dc-scala/build.sbt @@ -4,7 +4,7 @@ name := "pekko-sample-replicated-event-sourcing-scala" scalaVersion := "3.3.7" ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val cassandraPluginVersion = "1.1.0" val pekkoHttpVersion = "2.0.0-M1" diff --git a/pekko-sample-persistence-java/pom.xml b/pekko-sample-persistence-java/pom.xml index 517dd144..a7cb1f8d 100644 --- a/pekko-sample-persistence-java/pom.xml +++ b/pekko-sample-persistence-java/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 2.0.0-M1 + 2.0.0-M4 3 diff --git a/pekko-sample-persistence-scala/build.sbt b/pekko-sample-persistence-scala/build.sbt index 7acb2fe1..e8a5cb50 100644 --- a/pekko-sample-persistence-scala/build.sbt +++ b/pekko-sample-persistence-scala/build.sbt @@ -3,7 +3,7 @@ name := "pekko-sample-persistence-scala" scalaVersion := "3.3.7" -val pekkoVersion = "2.0.0-M1" +val pekkoVersion = "2.0.0-M4" val logbackVersion = "1.3.15" libraryDependencies ++= Seq( diff --git a/pekko-sample-sharding-java/build.sbt b/pekko-sample-sharding-java/build.sbt index 3ea05a1b..07d8bd99 100644 --- a/pekko-sample-sharding-java/build.sbt +++ b/pekko-sample-sharding-java/build.sbt @@ -1,4 +1,5 @@ -val pekkoVersion = "2.0.0-M1" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M4" val pekkoHttpVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-sharding-java/killrweather-fog/pom.xml b/pekko-sample-sharding-java/killrweather-fog/pom.xml index baaddc8c..31c841ea 100644 --- a/pekko-sample-sharding-java/killrweather-fog/pom.xml +++ b/pekko-sample-sharding-java/killrweather-fog/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 2.0.0-M1 + 2.0.0-M4 2.0.0-M1 3 diff --git a/pekko-sample-sharding-java/killrweather/pom.xml b/pekko-sample-sharding-java/killrweather/pom.xml index 1568cfe1..78df3d92 100644 --- a/pekko-sample-sharding-java/killrweather/pom.xml +++ b/pekko-sample-sharding-java/killrweather/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 2.0.0-M1 + 2.0.0-M4 2.0.0-M1 3 diff --git a/pekko-sample-sharding-scala/build.sbt b/pekko-sample-sharding-scala/build.sbt index 38276718..cb685d79 100644 --- a/pekko-sample-sharding-scala/build.sbt +++ b/pekko-sample-sharding-scala/build.sbt @@ -1,4 +1,5 @@ -val pekkoVersion = "2.0.0-M1" +ThisBuild / evictionErrorLevel := Level.Info +val pekkoVersion = "2.0.0-M4" val pekkoHttpVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/WeatherHttpServer.scala b/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/WeatherHttpServer.scala index 372ef50e..052f4f9a 100644 --- a/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/WeatherHttpServer.scala +++ b/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/WeatherHttpServer.scala @@ -21,7 +21,7 @@ private[killrweather] object WeatherHttpServer { import system.executionContext - Http().bindAndHandle(routes, "localhost", port).onComplete { + Http().newServerAt("localhost", port).bind(routes).onComplete { case Success(binding) => val address = binding.localAddress system.log.info( From b84a1498df637efad0a2de38f5feaaa90229734c Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 4 Oct 2026 19:13:41 +0100 Subject: [PATCH 04/11] Add jdk.internal.misc add-opens for samples using pekko-remote Motivation: Pekko 2's pekko-remote depends on Agrona 2.x, which Artery uses for its buffer pools. Agrona needs access to jdk.internal.misc.Unsafe, so any node that starts remoting fails on JDK 17 with an IllegalAccessError. Modification: Pass --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED, only in samples that use pekko-remote/cluster, through every launch path: - .jvmopts for in-process sbt tests and non-forked sbt run - run/javaOptions for forked runs and MultiJvm/jvmOptions for multi-jvm - javaOptions for the forked kafka-to-sharding processor - argLine property for Maven surefire and .mvn/jvm.config for exec:java - start script / entrypoint of the Docker images Docker base images move from Java 11 to eclipse-temurin:17, since Pekko 2 requires Java 17. Result: Remote/cluster samples start and their tests pass on JDK 17. Tests: - sbt multi-jvm:test: cluster-java, cluster-scala, cluster-client-grpc-scala, distributed-data-java, distributed-data-scala - pass - sbt test: distributed-workers-scala, persistence-dc-scala, sharding-java, sharding-scala, kafka-to-sharding-scala, cluster-kubernetes-scala - pass - mvn test: cluster-java, cluster-client-grpc-java, persistence-dc-java, sharding-java - pass; cluster-kubernetes-java mvn test-compile - pass - sbt stage for both docker-compose samples: start script contains the flag - Docker-compose and minikube jobs: Not run References: Refs #151 --- pekko-sample-cluster-client-grpc-java/.mvn/jvm.config | 1 + pekko-sample-cluster-client-grpc-java/pom.xml | 2 ++ pekko-sample-cluster-client-grpc-scala/.jvmopts | 1 + pekko-sample-cluster-client-grpc-scala/build.sbt | 2 ++ pekko-sample-cluster-docker-compose-java/.jvmopts | 1 + pekko-sample-cluster-docker-compose-java/build.sbt | 4 +++- pekko-sample-cluster-docker-compose-scala/.jvmopts | 1 + pekko-sample-cluster-docker-compose-scala/build.sbt | 4 +++- pekko-sample-cluster-java/.jvmopts | 1 + pekko-sample-cluster-java/.mvn/jvm.config | 1 + pekko-sample-cluster-java/build.sbt | 2 ++ pekko-sample-cluster-java/pom.xml | 2 ++ pekko-sample-cluster-kubernetes-java/.mvn/jvm.config | 1 + pekko-sample-cluster-kubernetes-java/pom.xml | 6 ++++-- pekko-sample-cluster-kubernetes-scala/.jvmopts | 1 + pekko-sample-cluster-kubernetes-scala/build.sbt | 5 ++++- pekko-sample-cluster-scala/.jvmopts | 1 + pekko-sample-cluster-scala/build.sbt | 2 ++ pekko-sample-distributed-data-java/.jvmopts | 1 + pekko-sample-distributed-data-java/build.sbt | 4 +++- pekko-sample-distributed-data-scala/.jvmopts | 1 + pekko-sample-distributed-data-scala/build.sbt | 4 +++- pekko-sample-distributed-workers-scala/.jvmopts | 1 + pekko-sample-kafka-to-sharding-scala/.jvmopts | 1 + pekko-sample-kafka-to-sharding-scala/build.sbt | 2 ++ pekko-sample-persistence-dc-java/.mvn/jvm.config | 1 + pekko-sample-persistence-dc-java/pom.xml | 2 ++ pekko-sample-persistence-dc-scala/.jvmopts | 1 + pekko-sample-sharding-java/.jvmopts | 1 + pekko-sample-sharding-java/.mvn/jvm.config | 1 + pekko-sample-sharding-java/killrweather/pom.xml | 2 ++ pekko-sample-sharding-scala/.jvmopts | 1 + 32 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 pekko-sample-cluster-client-grpc-java/.mvn/jvm.config create mode 100644 pekko-sample-cluster-client-grpc-scala/.jvmopts create mode 100644 pekko-sample-cluster-docker-compose-java/.jvmopts create mode 100644 pekko-sample-cluster-docker-compose-scala/.jvmopts create mode 100644 pekko-sample-cluster-java/.jvmopts create mode 100644 pekko-sample-cluster-java/.mvn/jvm.config create mode 100644 pekko-sample-cluster-kubernetes-java/.mvn/jvm.config create mode 100644 pekko-sample-cluster-kubernetes-scala/.jvmopts create mode 100644 pekko-sample-cluster-scala/.jvmopts create mode 100644 pekko-sample-distributed-data-java/.jvmopts create mode 100644 pekko-sample-distributed-data-scala/.jvmopts create mode 100644 pekko-sample-distributed-workers-scala/.jvmopts create mode 100644 pekko-sample-kafka-to-sharding-scala/.jvmopts create mode 100644 pekko-sample-persistence-dc-java/.mvn/jvm.config create mode 100644 pekko-sample-persistence-dc-scala/.jvmopts create mode 100644 pekko-sample-sharding-java/.jvmopts create mode 100644 pekko-sample-sharding-java/.mvn/jvm.config create mode 100644 pekko-sample-sharding-scala/.jvmopts diff --git a/pekko-sample-cluster-client-grpc-java/.mvn/jvm.config b/pekko-sample-cluster-client-grpc-java/.mvn/jvm.config new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-client-grpc-java/.mvn/jvm.config @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-client-grpc-java/pom.xml b/pekko-sample-cluster-client-grpc-java/pom.xml index d91a7517..2bed759d 100644 --- a/pekko-sample-cluster-client-grpc-java/pom.xml +++ b/pekko-sample-cluster-client-grpc-java/pom.xml @@ -13,6 +13,8 @@ 2.0.0-M4 2.0.0-M2 3 + + --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-client-grpc-scala/.jvmopts b/pekko-sample-cluster-client-grpc-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-client-grpc-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-client-grpc-scala/build.sbt b/pekko-sample-cluster-client-grpc-scala/build.sbt index 7042e5a3..1c43e965 100644 --- a/pekko-sample-cluster-client-grpc-scala/build.sbt +++ b/pekko-sample-cluster-client-grpc-scala/build.sbt @@ -10,6 +10,8 @@ lazy val `pekko-sample-cluster-client-grpc-scala` = project .settings(multiJvmSettings: _*) .settings( organization := "org.apache.pekko", + // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe + MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), scalaVersion := "3.3.7", Compile / scalacOptions ++= Seq( "-deprecation", diff --git a/pekko-sample-cluster-docker-compose-java/.jvmopts b/pekko-sample-cluster-docker-compose-java/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-docker-compose-java/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-docker-compose-java/build.sbt b/pekko-sample-cluster-docker-compose-java/build.sbt index 5ba14f37..9b1da9d1 100644 --- a/pekko-sample-cluster-docker-compose-java/build.sbt +++ b/pekko-sample-cluster-docker-compose-java/build.sbt @@ -28,5 +28,7 @@ Docker / dockerEntrypoint := Seq("sh", "-c", "bin/clustering $*") dockerRepository := Some("pekko") -dockerBaseImage := "eclipse-temurin:11" +dockerBaseImage := "eclipse-temurin:17" +// Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe +bashScriptExtraDefines += """addJava "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"""" enablePlugins(JavaAppPackaging) diff --git a/pekko-sample-cluster-docker-compose-scala/.jvmopts b/pekko-sample-cluster-docker-compose-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-docker-compose-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-docker-compose-scala/build.sbt b/pekko-sample-cluster-docker-compose-scala/build.sbt index 3657bdbf..eb0b92c6 100644 --- a/pekko-sample-cluster-docker-compose-scala/build.sbt +++ b/pekko-sample-cluster-docker-compose-scala/build.sbt @@ -24,5 +24,7 @@ libraryDependencies ++= Seq( Docker / version := "latest" Docker / dockerExposedPorts := Seq(1600) dockerRepository := Some("pekko") -dockerBaseImage := "eclipse-temurin:11" +dockerBaseImage := "eclipse-temurin:17" +// Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe +bashScriptExtraDefines += """addJava "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"""" enablePlugins(JavaAppPackaging) diff --git a/pekko-sample-cluster-java/.jvmopts b/pekko-sample-cluster-java/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-java/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-java/.mvn/jvm.config b/pekko-sample-cluster-java/.mvn/jvm.config new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-java/.mvn/jvm.config @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-java/build.sbt b/pekko-sample-cluster-java/build.sbt index ff908b46..7c9e429c 100644 --- a/pekko-sample-cluster-java/build.sbt +++ b/pekko-sample-cluster-java/build.sbt @@ -8,6 +8,8 @@ lazy val `pekko-sample-cluster-java` = project .settings(multiJvmSettings: _*) .settings( organization := "org.apache.pekko", + // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe + MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), scalaVersion := "3.3.7", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-parameters", "-Xlint:unchecked", "-Xlint:deprecation"), diff --git a/pekko-sample-cluster-java/pom.xml b/pekko-sample-cluster-java/pom.xml index e4f1fb09..51681393 100644 --- a/pekko-sample-cluster-java/pom.xml +++ b/pekko-sample-cluster-java/pom.xml @@ -13,6 +13,8 @@ UTF-8 2.0.0-M4 3 + + --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-kubernetes-java/.mvn/jvm.config b/pekko-sample-cluster-kubernetes-java/.mvn/jvm.config new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-kubernetes-java/.mvn/jvm.config @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index d3e91bda..0c1eaa34 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -23,6 +23,8 @@ 2.0.0-M1 3 ${git.commit.time}-${git.commit.id.abbrev} + + --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED @@ -97,13 +99,13 @@ ${version.number} latest - adoptopenjdk:11-jre-hotspot + eclipse-temurin:17 8080 7626 - java $JAVA_OPTS -cp '/maven/*' org.apache.pekko.cluster.bootstrap.demo.DemoApp + java --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED $JAVA_OPTS -cp '/maven/*' org.apache.pekko.cluster.bootstrap.demo.DemoApp artifact-with-dependencies diff --git a/pekko-sample-cluster-kubernetes-scala/.jvmopts b/pekko-sample-cluster-kubernetes-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-kubernetes-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-kubernetes-scala/build.sbt b/pekko-sample-cluster-kubernetes-scala/build.sbt index f13bb6a1..13b45f91 100644 --- a/pekko-sample-cluster-kubernetes-scala/build.sbt +++ b/pekko-sample-cluster-kubernetes-scala/build.sbt @@ -16,6 +16,9 @@ scalacOptions := Seq("-feature", "-unchecked", "-deprecation", "-encoding", "utf classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.AllLibraryJars run / fork := true Compile / run / fork := true +// Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe +run / javaOptions += "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED" +bashScriptExtraDefines += """addJava "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"""" Compile / run / mainClass := Some("pekko.sample.cluster.kubernetes.DemoApp") @@ -25,7 +28,7 @@ dockerExposedPorts := Seq(8080, 7626, 17355) dockerUpdateLatest := true dockerUsername := sys.props.get("docker.username") dockerRepository := sys.props.get("docker.registry") -dockerBaseImage := "adoptopenjdk:11-jre-hotspot" +dockerBaseImage := "eclipse-temurin:17" libraryDependencies ++= { Seq( diff --git a/pekko-sample-cluster-scala/.jvmopts b/pekko-sample-cluster-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-cluster-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-cluster-scala/build.sbt b/pekko-sample-cluster-scala/build.sbt index 80d1487a..d8bfa811 100644 --- a/pekko-sample-cluster-scala/build.sbt +++ b/pekko-sample-cluster-scala/build.sbt @@ -8,6 +8,8 @@ lazy val `pekko-sample-cluster-scala` = project .settings(multiJvmSettings: _*) .settings( organization := "org.apache.pekko", + // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe + MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), scalaVersion := "3.3.7", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-Xlint:unchecked", "-Xlint:deprecation"), diff --git a/pekko-sample-distributed-data-java/.jvmopts b/pekko-sample-distributed-data-java/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-distributed-data-java/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-distributed-data-java/build.sbt b/pekko-sample-distributed-data-java/build.sbt index 58e86d61..9be0db38 100644 --- a/pekko-sample-distributed-data-java/build.sbt +++ b/pekko-sample-distributed-data-java/build.sbt @@ -8,11 +8,13 @@ val `pekko-sample-distributed-data-java` = project .settings(multiJvmSettings: _*) .settings( organization := "org.apache.pekko", + // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe + MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), version := "1.0", scalaVersion := "3.3.7", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-parameters", "-Xlint:unchecked", "-Xlint:deprecation", "-Xdiags:verbose"), - run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m"), + run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m", "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-cluster-typed" % pekkoVersion, "org.apache.pekko" %% "pekko-serialization-jackson" % pekkoVersion, diff --git a/pekko-sample-distributed-data-scala/.jvmopts b/pekko-sample-distributed-data-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-distributed-data-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-distributed-data-scala/build.sbt b/pekko-sample-distributed-data-scala/build.sbt index c3050fd5..b207adcf 100644 --- a/pekko-sample-distributed-data-scala/build.sbt +++ b/pekko-sample-distributed-data-scala/build.sbt @@ -8,11 +8,13 @@ val `pekko-sample-distributed-data-scala` = project .settings(multiJvmSettings: _*) .settings( organization := "org.apache.pekko", + // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe + MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), version := "1.0", scalaVersion := "3.3.7", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-Xlint:unchecked", "-Xlint:deprecation"), - run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m"), + run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m", "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-cluster-typed" % pekkoVersion, "org.apache.pekko" %% "pekko-serialization-jackson" % pekkoVersion, diff --git a/pekko-sample-distributed-workers-scala/.jvmopts b/pekko-sample-distributed-workers-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-distributed-workers-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-kafka-to-sharding-scala/.jvmopts b/pekko-sample-kafka-to-sharding-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-kafka-to-sharding-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-kafka-to-sharding-scala/build.sbt b/pekko-sample-kafka-to-sharding-scala/build.sbt index 12d59bc1..5a8eb987 100644 --- a/pekko-sample-kafka-to-sharding-scala/build.sbt +++ b/pekko-sample-kafka-to-sharding-scala/build.sbt @@ -43,6 +43,8 @@ lazy val processor = project .in(file("processor")) .enablePlugins(PekkoGrpcPlugin, JavaAgent) .settings(javaAgents += "org.mortbay.jetty.alpn" % "jetty-alpn-agent" % "2.0.10" % "runtime;test") + // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe + .settings(javaOptions += "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED") .settings(libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-connectors-kafka" % pekkoConnectorsKafkaVersion, "org.apache.pekko" %% "pekko-connectors-kafka-cluster-sharding" % pekkoConnectorsKafkaVersion, diff --git a/pekko-sample-persistence-dc-java/.mvn/jvm.config b/pekko-sample-persistence-dc-java/.mvn/jvm.config new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-persistence-dc-java/.mvn/jvm.config @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml index 854d02fc..d5b5c817 100644 --- a/pekko-sample-persistence-dc-java/pom.xml +++ b/pekko-sample-persistence-dc-java/pom.xml @@ -23,6 +23,8 @@ 2.0.0-M1 2.0.0-M1 3 + + --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-persistence-dc-scala/.jvmopts b/pekko-sample-persistence-dc-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-persistence-dc-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-sharding-java/.jvmopts b/pekko-sample-sharding-java/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-sharding-java/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-sharding-java/.mvn/jvm.config b/pekko-sample-sharding-java/.mvn/jvm.config new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-sharding-java/.mvn/jvm.config @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-sharding-java/killrweather/pom.xml b/pekko-sample-sharding-java/killrweather/pom.xml index 78df3d92..0fe25ed1 100644 --- a/pekko-sample-sharding-java/killrweather/pom.xml +++ b/pekko-sample-sharding-java/killrweather/pom.xml @@ -21,6 +21,8 @@ 2.0.0-M4 2.0.0-M1 3 + + --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED diff --git a/pekko-sample-sharding-scala/.jvmopts b/pekko-sample-sharding-scala/.jvmopts new file mode 100644 index 00000000..4df36e78 --- /dev/null +++ b/pekko-sample-sharding-scala/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED From d3dd1aae35ba8bfe073fbcdf192d25a3b72046c9 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 4 Oct 2026 20:10:58 +0100 Subject: [PATCH 05/11] Pin pekko-pki in cluster-kubernetes-java Motivation: The cluster-kubernetes-java pods failed at startup with Pekko's mixed-version check: Maven's nearest-wins resolution picked pekko-pki 2.0.0-M1 from pekko-http/pekko-management while core is 2.0.0-M4. Modification: Add an explicit pekko-pki dependency at ${pekko.version}. Result: All core Pekko modules resolve to 2.0.0-M4 and the app starts. Tests: - Checked resolved core Pekko artifacts for every sample (sbt export fullClasspath / mvn dependency:list): only this sample was affected; sbt picks the highest version so sbt builds already got pekko-pki M4 - Ran DemoApp locally: no mixed-version error, reaches Cluster Bootstrap - minikube job: Not run locally References: Refs #151 --- pekko-sample-cluster-kubernetes-java/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index 0c1eaa34..3db2f239 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -63,6 +63,12 @@ pekko-discovery_${scala.binary.version} ${pekko.version} + + + org.apache.pekko + pekko-pki_${scala.binary.version} + ${pekko.version} + ch.qos.logback logback-classic From 505b9399ab8e02108d0a095bd2f499f186194817 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 4 Oct 2026 20:35:03 +0100 Subject: [PATCH 06/11] Open java.lang for docs-gen on JDK 17 Motivation: With CI on JDK 17, `sbt paradox` in docs-gen fails: parboiled (used by Paradox's markdown reader) reflectively calls ClassLoader.findLoadedClass, which JDK 17 blocks without an add-opens. Modification: Add docs-gen/.jvmopts with --add-opens=java.base/java.lang=ALL-UNNAMED. pekko-sbt-paradox 1.0.1 is already the latest release. Result: docs-gen builds on JDK 17. Tests: - docs-gen sbt paradox on JDK 17: fails without the file, passes with it References: Refs #151 --- docs-gen/.jvmopts | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs-gen/.jvmopts diff --git a/docs-gen/.jvmopts b/docs-gen/.jvmopts new file mode 100644 index 00000000..576efaef --- /dev/null +++ b/docs-gen/.jvmopts @@ -0,0 +1 @@ +--add-opens=java.base/java.lang=ALL-UNNAMED From 5009efed127bdeeb108b91f6fd146590603db0eb Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 4 Oct 2026 20:38:18 +0100 Subject: [PATCH 07/11] Use latest Paradox plugins in docs-gen instead of add-opens workaround Motivation: pekko-sbt-paradox 1.0.1 brings in sbt-paradox 0.9.2, whose parboiled version does not work on JDK 17. The previous commit worked around this with an add-opens in docs-gen/.jvmopts. Modification: - Declare sbt-paradox and sbt-paradox-theme 0.11.1 explicitly in docs-gen/project/plugins.sbt, as the pekko build does. - Remove docs-gen/.jvmopts. - Add docs-gen/.sbtopts with -J-Xmx2G: the newer plugins' ClassGraph scan across the 15 doc subprojects runs out of the default heap. Result: docs-gen builds on JDK 17 without opening java.lang. Tests: - docs-gen sbt paradox on JDK 17: pass, 15 sample sites generated (OutOfMemoryError without the heap setting) References: Refs #151 --- docs-gen/.jvmopts | 1 - docs-gen/.sbtopts | 1 + docs-gen/project/plugins.sbt | 2 ++ 3 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 docs-gen/.jvmopts create mode 100644 docs-gen/.sbtopts diff --git a/docs-gen/.jvmopts b/docs-gen/.jvmopts deleted file mode 100644 index 576efaef..00000000 --- a/docs-gen/.jvmopts +++ /dev/null @@ -1 +0,0 @@ ---add-opens=java.base/java.lang=ALL-UNNAMED diff --git a/docs-gen/.sbtopts b/docs-gen/.sbtopts new file mode 100644 index 00000000..1ca6d0b3 --- /dev/null +++ b/docs-gen/.sbtopts @@ -0,0 +1 @@ +-J-Xmx2G diff --git a/docs-gen/project/plugins.sbt b/docs-gen/project/plugins.sbt index 3266aba0..b54fbf94 100644 --- a/docs-gen/project/plugins.sbt +++ b/docs-gen/project/plugins.sbt @@ -1 +1,3 @@ addSbtPlugin("org.apache.pekko" % "pekko-sbt-paradox" % "1.0.1") +addSbtPlugin("com.lightbend.paradox" % "sbt-paradox" % "0.11.1") +addSbtPlugin("com.lightbend.paradox" % "sbt-paradox-theme" % "0.11.1") From b49b8318543bf8e8a1acd88db16937006eae6f1d Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Tue, 3 Nov 2026 08:26:25 +0100 Subject: [PATCH 08/11] Upgrade to Pekko 2.0.0 and pekko-http 2.0.0-M2 Motivation: Pekko 2.0.0 is staged on repository.apache.org for its release vote. Modification: Bump Pekko 2.0.0-M4 to 2.0.0 and pekko-http 2.0.0-M1 to 2.0.0-M2 in all sbt and Maven builds. Add the Apache staging repository as a resolver in every sbt build and Maven pom. Bump sbt to 1.12.15. Result: Samples build against the staged Pekko 2.0.0 artifacts. Tests: - Not run locally - relying on CI References: Refs #151 --- docs-gen/project/build.properties | 2 +- pekko-sample-cluster-client-grpc-java/pom.xml | 10 +++++++++- pekko-sample-cluster-client-grpc-scala/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-cluster-docker-compose-java/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-cluster-docker-compose-scala/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-cluster-java/build.sbt | 3 ++- pekko-sample-cluster-java/pom.xml | 10 +++++++++- pekko-sample-cluster-java/project/build.properties | 2 +- pekko-sample-cluster-kubernetes-java/pom.xml | 12 ++++++++++-- pekko-sample-cluster-kubernetes-scala/build.sbt | 5 +++-- .../project/build.properties | 2 +- pekko-sample-cluster-scala/build.sbt | 3 ++- pekko-sample-cluster-scala/project/build.properties | 2 +- pekko-sample-distributed-data-java/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-distributed-data-scala/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-distributed-workers-scala/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-fsm-java/pom.xml | 10 +++++++++- pekko-sample-fsm-scala/build.sbt | 3 ++- pekko-sample-fsm-scala/project/build.properties | 2 +- pekko-sample-grpc-kubernetes-scala/build.sbt | 5 +++-- .../project/build.properties | 2 +- pekko-sample-kafka-to-sharding-scala/build.sbt | 5 +++-- .../project/build.properties | 2 +- pekko-sample-persistence-dc-java/pom.xml | 12 ++++++++++-- pekko-sample-persistence-dc-scala/build.sbt | 5 +++-- .../project/build.properties | 2 +- pekko-sample-persistence-java/pom.xml | 10 +++++++++- pekko-sample-persistence-scala/build.sbt | 3 ++- .../project/build.properties | 2 +- pekko-sample-sharding-java/build.sbt | 5 +++-- pekko-sample-sharding-java/killrweather-fog/pom.xml | 9 +++++++-- pekko-sample-sharding-java/killrweather/pom.xml | 9 +++++++-- pekko-sample-sharding-java/project/build.properties | 2 +- pekko-sample-sharding-scala/build.sbt | 5 +++-- pekko-sample-sharding-scala/project/build.properties | 2 +- 41 files changed, 125 insertions(+), 51 deletions(-) diff --git a/docs-gen/project/build.properties b/docs-gen/project/build.properties index df061f4f..cc1ebf34 100644 --- a/docs-gen/project/build.properties +++ b/docs-gen/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-cluster-client-grpc-java/pom.xml b/pekko-sample-cluster-client-grpc-java/pom.xml index 2bed759d..18574f82 100644 --- a/pekko-sample-cluster-client-grpc-java/pom.xml +++ b/pekko-sample-cluster-client-grpc-java/pom.xml @@ -10,13 +10,21 @@ UTF-8 - 2.0.0-M4 + 2.0.0 2.0.0-M2 3 --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED + + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + + + org.apache.pekko diff --git a/pekko-sample-cluster-client-grpc-scala/build.sbt b/pekko-sample-cluster-client-grpc-scala/build.sbt index 1c43e965..ed13ed48 100644 --- a/pekko-sample-cluster-client-grpc-scala/build.sbt +++ b/pekko-sample-cluster-client-grpc-scala/build.sbt @@ -1,7 +1,8 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" lazy val `pekko-sample-cluster-client-grpc-scala` = project .in(file(".")) diff --git a/pekko-sample-cluster-client-grpc-scala/project/build.properties b/pekko-sample-cluster-client-grpc-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-cluster-client-grpc-scala/project/build.properties +++ b/pekko-sample-cluster-client-grpc-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-cluster-docker-compose-java/build.sbt b/pekko-sample-cluster-docker-compose-java/build.sbt index 9b1da9d1..d19c6613 100644 --- a/pekko-sample-cluster-docker-compose-java/build.sbt +++ b/pekko-sample-cluster-docker-compose-java/build.sbt @@ -9,7 +9,8 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" /* dependencies */ diff --git a/pekko-sample-cluster-docker-compose-java/project/build.properties b/pekko-sample-cluster-docker-compose-java/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-cluster-docker-compose-java/project/build.properties +++ b/pekko-sample-cluster-docker-compose-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-cluster-docker-compose-scala/build.sbt b/pekko-sample-cluster-docker-compose-scala/build.sbt index eb0b92c6..2b89dbbc 100644 --- a/pekko-sample-cluster-docker-compose-scala/build.sbt +++ b/pekko-sample-cluster-docker-compose-scala/build.sbt @@ -10,7 +10,8 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" /* dependencies */ diff --git a/pekko-sample-cluster-docker-compose-scala/project/build.properties b/pekko-sample-cluster-docker-compose-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-cluster-docker-compose-scala/project/build.properties +++ b/pekko-sample-cluster-docker-compose-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-cluster-java/build.sbt b/pekko-sample-cluster-java/build.sbt index 7c9e429c..5327a2d4 100644 --- a/pekko-sample-cluster-java/build.sbt +++ b/pekko-sample-cluster-java/build.sbt @@ -1,6 +1,7 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" lazy val `pekko-sample-cluster-java` = project diff --git a/pekko-sample-cluster-java/pom.xml b/pekko-sample-cluster-java/pom.xml index 51681393..98b86d09 100644 --- a/pekko-sample-cluster-java/pom.xml +++ b/pekko-sample-cluster-java/pom.xml @@ -11,12 +11,20 @@ UTF-8 - 2.0.0-M4 + 2.0.0 3 --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED + + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + + + org.apache.pekko diff --git a/pekko-sample-cluster-java/project/build.properties b/pekko-sample-cluster-java/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-cluster-java/project/build.properties +++ b/pekko-sample-cluster-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index 3db2f239..3f37ccfb 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -18,8 +18,8 @@ 1.8 1.8 UTF-8 - 2.0.0-M4 - 2.0.0-M1 + 2.0.0 + 2.0.0-M2 2.0.0-M1 3 ${git.commit.time}-${git.commit.id.abbrev} @@ -27,6 +27,14 @@ --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED + + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + + + org.apache.pekko diff --git a/pekko-sample-cluster-kubernetes-scala/build.sbt b/pekko-sample-cluster-kubernetes-scala/build.sbt index 13b45f91..a3e46cbe 100644 --- a/pekko-sample-cluster-kubernetes-scala/build.sbt +++ b/pekko-sample-cluster-kubernetes-scala/build.sbt @@ -3,9 +3,10 @@ ThisBuild / organization := "org.apache.pekko" name := "pekko-sample-cluster-kubernetes-scala" scalaVersion := "3.3.7" -val pekkoHttpVersion = "2.0.0-M1" +val pekkoHttpVersion = "2.0.0-M2" ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val pekkoManagementVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-cluster-kubernetes-scala/project/build.properties b/pekko-sample-cluster-kubernetes-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-cluster-kubernetes-scala/project/build.properties +++ b/pekko-sample-cluster-kubernetes-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-cluster-scala/build.sbt b/pekko-sample-cluster-scala/build.sbt index d8bfa811..d5c1457f 100644 --- a/pekko-sample-cluster-scala/build.sbt +++ b/pekko-sample-cluster-scala/build.sbt @@ -1,6 +1,7 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" lazy val `pekko-sample-cluster-scala` = project diff --git a/pekko-sample-cluster-scala/project/build.properties b/pekko-sample-cluster-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-cluster-scala/project/build.properties +++ b/pekko-sample-cluster-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-distributed-data-java/build.sbt b/pekko-sample-distributed-data-java/build.sbt index 9be0db38..13bbbe42 100644 --- a/pekko-sample-distributed-data-java/build.sbt +++ b/pekko-sample-distributed-data-java/build.sbt @@ -1,6 +1,7 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" val `pekko-sample-distributed-data-java` = project diff --git a/pekko-sample-distributed-data-java/project/build.properties b/pekko-sample-distributed-data-java/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-distributed-data-java/project/build.properties +++ b/pekko-sample-distributed-data-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-distributed-data-scala/build.sbt b/pekko-sample-distributed-data-scala/build.sbt index b207adcf..7df2d8d5 100644 --- a/pekko-sample-distributed-data-scala/build.sbt +++ b/pekko-sample-distributed-data-scala/build.sbt @@ -1,6 +1,7 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" val `pekko-sample-distributed-data-scala` = project diff --git a/pekko-sample-distributed-data-scala/project/build.properties b/pekko-sample-distributed-data-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-distributed-data-scala/project/build.properties +++ b/pekko-sample-distributed-data-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-distributed-workers-scala/build.sbt b/pekko-sample-distributed-workers-scala/build.sbt index 3bf4e378..28c0a64f 100644 --- a/pekko-sample-distributed-workers-scala/build.sbt +++ b/pekko-sample-distributed-workers-scala/build.sbt @@ -5,7 +5,8 @@ version := "1.0" scalaVersion := "3.3.7" ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val cassandraPluginVersion = "1.1.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-distributed-workers-scala/project/build.properties b/pekko-sample-distributed-workers-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-distributed-workers-scala/project/build.properties +++ b/pekko-sample-distributed-workers-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-fsm-java/pom.xml b/pekko-sample-fsm-java/pom.xml index b92e30f6..7e99bf53 100644 --- a/pekko-sample-fsm-java/pom.xml +++ b/pekko-sample-fsm-java/pom.xml @@ -6,7 +6,7 @@ UTF-8 - 2.0.0-M4 + 2.0.0 3 @@ -15,6 +15,14 @@ jar 1.0 + + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + + + org.apache.pekko diff --git a/pekko-sample-fsm-scala/build.sbt b/pekko-sample-fsm-scala/build.sbt index 3881b6bb..a71a0570 100644 --- a/pekko-sample-fsm-scala/build.sbt +++ b/pekko-sample-fsm-scala/build.sbt @@ -1,7 +1,8 @@ organization := "org.apache.pekko" name := "pekko-sample-fsm-scala" -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" scalaVersion := "3.3.7" diff --git a/pekko-sample-fsm-scala/project/build.properties b/pekko-sample-fsm-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-fsm-scala/project/build.properties +++ b/pekko-sample-fsm-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-grpc-kubernetes-scala/build.sbt b/pekko-sample-grpc-kubernetes-scala/build.sbt index 0a7bbf75..dad491dc 100644 --- a/pekko-sample-grpc-kubernetes-scala/build.sbt +++ b/pekko-sample-grpc-kubernetes-scala/build.sbt @@ -2,9 +2,10 @@ name := "pekko-grpc-kubernetes" ThisBuild / scalaVersion := "3.3.7" ThisBuild / evictionErrorLevel := Level.Info -lazy val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +lazy val pekkoVersion = "2.0.0" lazy val pekkoManagementVersion = "2.0.0-M1" -lazy val pekkoHttpVersion = "2.0.0-M1" +lazy val pekkoHttpVersion = "2.0.0-M2" lazy val root = (project in file(".")) .aggregate(httpToGrpc, grpcService) diff --git a/pekko-sample-grpc-kubernetes-scala/project/build.properties b/pekko-sample-grpc-kubernetes-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-grpc-kubernetes-scala/project/build.properties +++ b/pekko-sample-grpc-kubernetes-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-kafka-to-sharding-scala/build.sbt b/pekko-sample-kafka-to-sharding-scala/build.sbt index 5a8eb987..27dbb1ce 100644 --- a/pekko-sample-kafka-to-sharding-scala/build.sbt +++ b/pekko-sample-kafka-to-sharding-scala/build.sbt @@ -1,6 +1,7 @@ ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" -val pekkoHttpVersion = "2.0.0-M1" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" +val pekkoHttpVersion = "2.0.0-M2" val pekkoConnectorsKafkaVersion = "2.0.0-M1" val pekkoManagementVersion = "2.0.0-M1" diff --git a/pekko-sample-kafka-to-sharding-scala/project/build.properties b/pekko-sample-kafka-to-sharding-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-kafka-to-sharding-scala/project/build.properties +++ b/pekko-sample-kafka-to-sharding-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml index d5b5c817..b9d948cd 100644 --- a/pekko-sample-persistence-dc-java/pom.xml +++ b/pekko-sample-persistence-dc-java/pom.xml @@ -18,15 +18,23 @@ UTF-8 - 2.0.0-M4 + 2.0.0 1.1.0 - 2.0.0-M1 + 2.0.0-M2 2.0.0-M1 3 --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED + + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + + + org.apache.pekko diff --git a/pekko-sample-persistence-dc-scala/build.sbt b/pekko-sample-persistence-dc-scala/build.sbt index 830b74e7..e8d32458 100644 --- a/pekko-sample-persistence-dc-scala/build.sbt +++ b/pekko-sample-persistence-dc-scala/build.sbt @@ -4,10 +4,11 @@ name := "pekko-sample-replicated-event-sourcing-scala" scalaVersion := "3.3.7" ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val cassandraPluginVersion = "1.1.0" -val pekkoHttpVersion = "2.0.0-M1" +val pekkoHttpVersion = "2.0.0-M2" val pekkoClusterManagementVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-persistence-dc-scala/project/build.properties b/pekko-sample-persistence-dc-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-persistence-dc-scala/project/build.properties +++ b/pekko-sample-persistence-dc-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-persistence-java/pom.xml b/pekko-sample-persistence-java/pom.xml index a7cb1f8d..9852432e 100644 --- a/pekko-sample-persistence-java/pom.xml +++ b/pekko-sample-persistence-java/pom.xml @@ -18,10 +18,18 @@ UTF-8 - 2.0.0-M4 + 2.0.0 3 + + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + + + org.apache.pekko diff --git a/pekko-sample-persistence-scala/build.sbt b/pekko-sample-persistence-scala/build.sbt index e8a5cb50..1e6e4954 100644 --- a/pekko-sample-persistence-scala/build.sbt +++ b/pekko-sample-persistence-scala/build.sbt @@ -3,7 +3,8 @@ name := "pekko-sample-persistence-scala" scalaVersion := "3.3.7" -val pekkoVersion = "2.0.0-M4" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" libraryDependencies ++= Seq( diff --git a/pekko-sample-persistence-scala/project/build.properties b/pekko-sample-persistence-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-persistence-scala/project/build.properties +++ b/pekko-sample-persistence-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-sharding-java/build.sbt b/pekko-sample-sharding-java/build.sbt index 07d8bd99..359196cf 100644 --- a/pekko-sample-sharding-java/build.sbt +++ b/pekko-sample-sharding-java/build.sbt @@ -1,6 +1,7 @@ ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" -val pekkoHttpVersion = "2.0.0-M1" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" +val pekkoHttpVersion = "2.0.0-M2" val logbackVersion = "1.3.15" lazy val buildSettings = Seq( diff --git a/pekko-sample-sharding-java/killrweather-fog/pom.xml b/pekko-sample-sharding-java/killrweather-fog/pom.xml index 31c841ea..25cb61a2 100644 --- a/pekko-sample-sharding-java/killrweather-fog/pom.xml +++ b/pekko-sample-sharding-java/killrweather-fog/pom.xml @@ -18,8 +18,8 @@ UTF-8 - 2.0.0-M4 - 2.0.0-M1 + 2.0.0 + 2.0.0-M2 3 @@ -33,6 +33,11 @@ true + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + diff --git a/pekko-sample-sharding-java/killrweather/pom.xml b/pekko-sample-sharding-java/killrweather/pom.xml index 0fe25ed1..dd1183d1 100644 --- a/pekko-sample-sharding-java/killrweather/pom.xml +++ b/pekko-sample-sharding-java/killrweather/pom.xml @@ -18,8 +18,8 @@ UTF-8 - 2.0.0-M4 - 2.0.0-M1 + 2.0.0 + 2.0.0-M2 3 --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED @@ -35,6 +35,11 @@ true + + apache-staging + Apache Staging Repository + https://repository.apache.org/content/groups/staging/ + diff --git a/pekko-sample-sharding-java/project/build.properties b/pekko-sample-sharding-java/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-sharding-java/project/build.properties +++ b/pekko-sample-sharding-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 diff --git a/pekko-sample-sharding-scala/build.sbt b/pekko-sample-sharding-scala/build.sbt index cb685d79..24cc7401 100644 --- a/pekko-sample-sharding-scala/build.sbt +++ b/pekko-sample-sharding-scala/build.sbt @@ -1,6 +1,7 @@ ThisBuild / evictionErrorLevel := Level.Info -val pekkoVersion = "2.0.0-M4" -val pekkoHttpVersion = "2.0.0-M1" +ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo +val pekkoVersion = "2.0.0" +val pekkoHttpVersion = "2.0.0-M2" val logbackVersion = "1.3.15" lazy val buildSettings = Seq( diff --git a/pekko-sample-sharding-scala/project/build.properties b/pekko-sample-sharding-scala/project/build.properties index df061f4f..cc1ebf34 100644 --- a/pekko-sample-sharding-scala/project/build.properties +++ b/pekko-sample-sharding-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.9 +sbt.version=1.12.15 From bc0fce1d470d749567ca4212099eedde82fca1fb Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Tue, 3 Nov 2026 08:36:55 +0100 Subject: [PATCH 09/11] Modernize samples for Scala 3.3.9, Java 17 and sbt 1.13.1 Motivation: With Pekko 2 the minimum versions are Scala 2.13 and Java 17, so the samples can drop compatibility idioms and use newer language features. Modification: - Bump Scala 3.3.7 to 3.3.9 and sbt 1.12.15 to 1.13.1. - Replace scala.collection.JavaConverters with scala.jdk.CollectionConverters. - Use instanceof pattern matching instead of instanceof plus cast. - Use Stream.toList() instead of collect(Collectors.toList()). - Use List.of/Set.of/Set.copyOf/Map.copyOf instead of Arrays.asList and Collections wrappers. - Use a switch expression for WeatherStation queries. - Remove imports that became unused. Result: Samples show idiomatic Scala 2.13+/Java 17 code. Tests: - Not run locally - relying on CI References: Refs #151 --- docs-gen/project/build.properties | 2 +- .../cluster/client/grpc/ClusterClient.java | 9 ++--- .../build.sbt | 2 +- .../project/build.properties | 2 +- .../build.sbt | 2 +- .../project/build.properties | 2 +- .../build.sbt | 2 +- .../project/build.properties | 2 +- pekko-sample-cluster-java/build.sbt | 2 +- .../project/build.properties | 2 +- .../main/java/sample/cluster/stats/App.java | 5 +-- .../sample/cluster/stats/AppOneMaster.java | 5 +-- .../sample/cluster/stats/StatsService.java | 3 +- .../sample/cluster/transformation/App.java | 5 +-- .../build.sbt | 2 +- .../project/build.properties | 2 +- pekko-sample-cluster-scala/build.sbt | 2 +- .../project/build.properties | 2 +- pekko-sample-distributed-data-java/build.sbt | 2 +- .../project/build.properties | 2 +- .../distributeddata/ReplicatedCache.java | 4 +- .../distributeddata/ReplicatedMetrics.java | 10 ++--- .../sample/distributeddata/ShoppingCart.java | 4 +- .../sample/distributeddata/VotingService.java | 13 +++---- .../ReplicatedMetricsSpec.scala | 2 +- .../distributeddata/ShoppingCartSpec.scala | 2 +- .../distributeddata/VotingServiceSpec.scala | 2 +- pekko-sample-distributed-data-scala/build.sbt | 2 +- .../project/build.properties | 2 +- .../build.sbt | 2 +- .../project/build.properties | 2 +- .../src/main/java/sample/DiningHakkers.java | 6 +-- pekko-sample-fsm-scala/build.sbt | 2 +- .../project/build.properties | 2 +- pekko-sample-grpc-kubernetes-scala/build.sbt | 2 +- .../project/build.properties | 2 +- .../build.sbt | 2 +- .../project/build.properties | 2 +- .../java/sample/persistence/res/MainApp.java | 8 ++-- .../res/auction/AuctionEntity.java | 7 ++-- pekko-sample-persistence-dc-scala/build.sbt | 2 +- .../project/build.properties | 2 +- .../java/sample/persistence/ShoppingCart.java | 3 +- pekko-sample-persistence-scala/build.sbt | 2 +- .../project/build.properties | 2 +- pekko-sample-sharding-java/build.sbt | 2 +- .../java/sample/killrweather/fog/Fog.java | 5 +-- .../sample/killrweather/KillrWeather.java | 5 +-- .../sample/killrweather/WeatherStation.java | 37 +++++++++---------- .../project/build.properties | 2 +- pekko-sample-sharding-scala/build.sbt | 2 +- .../sample/killrweather/KillrWeather.scala | 2 +- .../project/build.properties | 2 +- 53 files changed, 92 insertions(+), 111 deletions(-) diff --git a/docs-gen/project/build.properties b/docs-gen/project/build.properties index cc1ebf34..36860735 100644 --- a/docs-gen/project/build.properties +++ b/docs-gen/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java b/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java index c492e446..98f1819c 100644 --- a/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java +++ b/pekko-sample-cluster-client-grpc-java/src/main/java/sample/cluster/client/grpc/ClusterClient.java @@ -161,8 +161,7 @@ private static CompletionStage newSession( ) .via(killSwitch.flow()) .map(msg -> { - if (msg instanceof Send) { - Send send = (Send) msg; + if (msg instanceof Send send) { Payload payload = serialization.serializePayload(send.msg); return Req.newBuilder() .setSend(SendReq.newBuilder() @@ -170,16 +169,14 @@ private static CompletionStage newSession( .setLocalAffinity(send.localAffinity) .setPayload(payload)) .build(); - } else if (msg instanceof SendToAll) { - SendToAll sendToAll = (SendToAll) msg; + } else if (msg instanceof SendToAll sendToAll) { Payload payload = serialization.serializePayload(sendToAll.msg); return Req.newBuilder() .setSendToAll(SendToAllReq.newBuilder() .setPath(sendToAll.path) .setPayload(payload)) .build(); - } else if (msg instanceof Publish) { - Publish publish = (Publish) msg; + } else if (msg instanceof Publish publish) { Payload payload = serialization.serializePayload(publish.msg); return Req.newBuilder() .setPublish(PublishReq.newBuilder() diff --git a/pekko-sample-cluster-client-grpc-scala/build.sbt b/pekko-sample-cluster-client-grpc-scala/build.sbt index ed13ed48..837f5bb6 100644 --- a/pekko-sample-cluster-client-grpc-scala/build.sbt +++ b/pekko-sample-cluster-client-grpc-scala/build.sbt @@ -13,7 +13,7 @@ lazy val `pekko-sample-cluster-client-grpc-scala` = project organization := "org.apache.pekko", // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), - scalaVersion := "3.3.7", + scalaVersion := "3.3.9", Compile / scalacOptions ++= Seq( "-deprecation", "-feature", diff --git a/pekko-sample-cluster-client-grpc-scala/project/build.properties b/pekko-sample-cluster-client-grpc-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-cluster-client-grpc-scala/project/build.properties +++ b/pekko-sample-cluster-client-grpc-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-cluster-docker-compose-java/build.sbt b/pekko-sample-cluster-docker-compose-java/build.sbt index d19c6613..4c367bae 100644 --- a/pekko-sample-cluster-docker-compose-java/build.sbt +++ b/pekko-sample-cluster-docker-compose-java/build.sbt @@ -1,7 +1,7 @@ organization := "org.apache.pekko" /* scala versions and options */ -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" // These options will be used for *all* versions. scalacOptions ++= Seq( diff --git a/pekko-sample-cluster-docker-compose-java/project/build.properties b/pekko-sample-cluster-docker-compose-java/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-cluster-docker-compose-java/project/build.properties +++ b/pekko-sample-cluster-docker-compose-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-cluster-docker-compose-scala/build.sbt b/pekko-sample-cluster-docker-compose-scala/build.sbt index 2b89dbbc..2bbf0fa6 100644 --- a/pekko-sample-cluster-docker-compose-scala/build.sbt +++ b/pekko-sample-cluster-docker-compose-scala/build.sbt @@ -2,7 +2,7 @@ organization := "org.apache.pekko" name := "pekko-sample-cluster-docker-compose-scala" /* scala versions and options */ -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" // These options will be used for *all* versions. scalacOptions ++= Seq( diff --git a/pekko-sample-cluster-docker-compose-scala/project/build.properties b/pekko-sample-cluster-docker-compose-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-cluster-docker-compose-scala/project/build.properties +++ b/pekko-sample-cluster-docker-compose-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-cluster-java/build.sbt b/pekko-sample-cluster-java/build.sbt index 5327a2d4..cedebd6f 100644 --- a/pekko-sample-cluster-java/build.sbt +++ b/pekko-sample-cluster-java/build.sbt @@ -11,7 +11,7 @@ lazy val `pekko-sample-cluster-java` = project organization := "org.apache.pekko", // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), - scalaVersion := "3.3.7", + scalaVersion := "3.3.9", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-parameters", "-Xlint:unchecked", "-Xlint:deprecation"), run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m", "-Djava.library.path=./target/native"), diff --git a/pekko-sample-cluster-java/project/build.properties b/pekko-sample-cluster-java/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-cluster-java/project/build.properties +++ b/pekko-sample-cluster-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/App.java b/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/App.java index cd30b94c..57b9845d 100644 --- a/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/App.java +++ b/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/App.java @@ -13,10 +13,9 @@ import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.List; public class App { @@ -72,7 +71,7 @@ private static void startup(String role, int port) { // Override the configuration of the port Map overrides = new HashMap<>(); overrides.put("pekko.remote.artery.canonical.port", port); - overrides.put("pekko.cluster.roles", Collections.singletonList(role)); + overrides.put("pekko.cluster.roles", List.of(role)); Config config = ConfigFactory.parseMap(overrides) .withFallback(ConfigFactory.load("stats")); diff --git a/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/AppOneMaster.java b/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/AppOneMaster.java index 77c3a3ba..91fa2862 100644 --- a/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/AppOneMaster.java +++ b/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/AppOneMaster.java @@ -16,10 +16,9 @@ import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.List; public class AppOneMaster { @@ -87,7 +86,7 @@ private static void startup(String role, int port) { // Override the configuration of the port Map overrides = new HashMap<>(); overrides.put("pekko.remote.artery.canonical.port", port); - overrides.put("pekko.cluster.roles", Collections.singletonList(role)); + overrides.put("pekko.cluster.roles", List.of(role)); Config config = ConfigFactory.parseMap(overrides) .withFallback(ConfigFactory.load("stats")); diff --git a/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/StatsService.java b/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/StatsService.java index 0aa163b6..601324d0 100644 --- a/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/StatsService.java +++ b/pekko-sample-cluster-java/src/main/java/sample/cluster/stats/StatsService.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import sample.cluster.CborSerializable; -import java.util.Arrays; import java.util.List; public final class StatsService extends AbstractBehavior { @@ -78,7 +77,7 @@ public Receive createReceive() { private Behavior process(ProcessText command) { getContext().getLog().info("Delegating request"); - List words = Arrays.asList(command.text.split(" ")); + List words = List.of(command.text.split(" ")); getContext().spawnAnonymous(StatsAggregator.create(words, workers, command.replyTo)); return this; } diff --git a/pekko-sample-cluster-java/src/main/java/sample/cluster/transformation/App.java b/pekko-sample-cluster-java/src/main/java/sample/cluster/transformation/App.java index e4537bd9..64ba3715 100644 --- a/pekko-sample-cluster-java/src/main/java/sample/cluster/transformation/App.java +++ b/pekko-sample-cluster-java/src/main/java/sample/cluster/transformation/App.java @@ -7,10 +7,9 @@ import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.List; public class App { @@ -53,7 +52,7 @@ private static void startup(String role, int port) { // Override the configuration of the port Map overrides = new HashMap<>(); overrides.put("pekko.remote.artery.canonical.port", port); - overrides.put("pekko.cluster.roles", Collections.singletonList(role)); + overrides.put("pekko.cluster.roles", List.of(role)); Config config = ConfigFactory.parseMap(overrides) .withFallback(ConfigFactory.load("transformation")); diff --git a/pekko-sample-cluster-kubernetes-scala/build.sbt b/pekko-sample-cluster-kubernetes-scala/build.sbt index a3e46cbe..cd8a50bd 100644 --- a/pekko-sample-cluster-kubernetes-scala/build.sbt +++ b/pekko-sample-cluster-kubernetes-scala/build.sbt @@ -2,7 +2,7 @@ ThisBuild / organization := "org.apache.pekko" name := "pekko-sample-cluster-kubernetes-scala" -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" val pekkoHttpVersion = "2.0.0-M2" ThisBuild / evictionErrorLevel := Level.Info ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo diff --git a/pekko-sample-cluster-kubernetes-scala/project/build.properties b/pekko-sample-cluster-kubernetes-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-cluster-kubernetes-scala/project/build.properties +++ b/pekko-sample-cluster-kubernetes-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-cluster-scala/build.sbt b/pekko-sample-cluster-scala/build.sbt index d5c1457f..feb5f9f5 100644 --- a/pekko-sample-cluster-scala/build.sbt +++ b/pekko-sample-cluster-scala/build.sbt @@ -11,7 +11,7 @@ lazy val `pekko-sample-cluster-scala` = project organization := "org.apache.pekko", // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), - scalaVersion := "3.3.7", + scalaVersion := "3.3.9", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-Xlint:unchecked", "-Xlint:deprecation"), run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m", "-Djava.library.path=./target/native"), diff --git a/pekko-sample-cluster-scala/project/build.properties b/pekko-sample-cluster-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-cluster-scala/project/build.properties +++ b/pekko-sample-cluster-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-distributed-data-java/build.sbt b/pekko-sample-distributed-data-java/build.sbt index 13bbbe42..9d96fc0f 100644 --- a/pekko-sample-distributed-data-java/build.sbt +++ b/pekko-sample-distributed-data-java/build.sbt @@ -12,7 +12,7 @@ val `pekko-sample-distributed-data-java` = project // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), version := "1.0", - scalaVersion := "3.3.7", + scalaVersion := "3.3.9", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-parameters", "-Xlint:unchecked", "-Xlint:deprecation", "-Xdiags:verbose"), run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m", "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), diff --git a/pekko-sample-distributed-data-java/project/build.properties b/pekko-sample-distributed-data-java/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-distributed-data-java/project/build.properties +++ b/pekko-sample-distributed-data-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedCache.java b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedCache.java index 9b29108d..c985bf85 100644 --- a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedCache.java +++ b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedCache.java @@ -194,8 +194,8 @@ private Behavior receiveGetFromCache(String key, ActorRef reply } private Behavior onInternalGetResponse(InternalGetResponse msg) { - if (msg.rsp instanceof GetSuccess) { - Option valueOption = ((GetSuccess>) msg.rsp).get(dataKey(msg.key)).get(msg.key); + if (msg.rsp instanceof GetSuccess> success) { + Option valueOption = success.get(dataKey(msg.key)).get(msg.key); Optional valueOptional = Optional.ofNullable(valueOption.isDefined() ? valueOption.get() : null); msg.replyTo.tell(new Cached(msg.key, valueOptional)); } else if (msg.rsp instanceof NotFound) { diff --git a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedMetrics.java b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedMetrics.java index 44c385d4..e467ecc2 100644 --- a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedMetrics.java +++ b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ReplicatedMetrics.java @@ -177,10 +177,10 @@ private Behavior receiveTick() { private Behavior onInternalSubscribeResponse(InternalSubscribeResponse rsp) { SubscribeResponse> rsp1 = rsp.rsp; - if (rsp1 instanceof Changed && rsp1.key().equals(maxHeapKey)) { - receiveMaxHeapChanged((Changed>) rsp1); - } else if (rsp1 instanceof Changed && rsp1.key().equals(usedHeapKey)) { - receiveUsedHeapChanged((Changed>) rsp1); + if (rsp1 instanceof Changed> changed && changed.key().equals(maxHeapKey)) { + receiveMaxHeapChanged(changed); + } else if (rsp1 instanceof Changed> changed && changed.key().equals(usedHeapKey)) { + receiveUsedHeapChanged(changed); } return this; } @@ -217,7 +217,7 @@ private Behavior receiveMemberRemoved(Address address) { private Behavior receiveCleanup() { // note that this function is run in the replicator, so we cannot safely reference // mutable internal state of this actor, we therefore make a defensive copy here - final Set nodesAtCleanup = Collections.unmodifiableSet(new HashSet<>(nodesInCluster)); + final Set nodesAtCleanup = Set.copyOf(nodesInCluster); Function, LWWMap> cleanupRemoved = (data) -> { LWWMap result = data; for (String k : data.getEntries().keySet()) { diff --git a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ShoppingCart.java b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ShoppingCart.java index ed1fcf98..6d8a1f05 100644 --- a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ShoppingCart.java +++ b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/ShoppingCart.java @@ -199,8 +199,8 @@ private Behavior onGetCart(GetCart command) { } private Behavior onInternalGetResponse(InternalGetResponse msg) { - if (msg.rsp instanceof GetSuccess) { - LWWMap data = ((GetSuccess>) msg.rsp).get(dataKey); + if (msg.rsp instanceof GetSuccess> success) { + LWWMap data = success.get(dataKey); msg.replyTo.tell(new Cart(new HashSet<>(data.getEntries().values()))); } else if (msg.rsp instanceof NotFound) { msg.replyTo.tell(new Cart(new HashSet<>())); diff --git a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/VotingService.java b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/VotingService.java index 30d01b26..1ab48069 100644 --- a/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/VotingService.java +++ b/pekko-sample-distributed-data-java/src/main/java/sample/distributeddata/VotingService.java @@ -171,12 +171,12 @@ private Behavior receiveClose() { } private Behavior onInternalSubscribeResponse(InternalSubscribeResponse rsp) { - if (rsp.rsp instanceof Changed && rsp.rsp.key().equals(openedKey)) { - if (((Changed) rsp.rsp).dataValue().enabled()) { + if (rsp.rsp instanceof Changed changed && changed.key().equals(openedKey)) { + if (changed.dataValue().enabled()) { return becomeOpen(); } - } else if (rsp.rsp instanceof Changed && rsp.rsp.key().equals(closedKey)) { - if (((Changed) rsp.rsp).dataValue().enabled()) { + } else if (rsp.rsp instanceof Changed changed && changed.key().equals(closedKey)) { + if (changed.dataValue().enabled()) { return matchGetVotes(false); } } @@ -204,9 +204,8 @@ private Behavior receiveGetVotes(GetVotes getVotes) { } private Behavior onInternalGetResponse(boolean open, InternalGetResponse rsp) { - if (rsp.rsp instanceof GetSuccess && rsp.rsp.key().equals(countersKey)) { - GetSuccess> rsp1 = (GetSuccess>) rsp.rsp; - Map result = rsp1.dataValue().getEntries(); + if (rsp.rsp instanceof GetSuccess> success && success.key().equals(countersKey)) { + Map result = success.dataValue().getEntries(); rsp.replyTo.tell(new Votes(result, open)); } else if (rsp.rsp instanceof NotFound && rsp.rsp.key().equals(countersKey)) { rsp.replyTo.tell(new Votes(new HashMap<>(), open)); diff --git a/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ReplicatedMetricsSpec.scala b/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ReplicatedMetricsSpec.scala index 6cb549e3..75c71056 100644 --- a/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ReplicatedMetricsSpec.scala +++ b/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ReplicatedMetricsSpec.scala @@ -1,7 +1,7 @@ package sample.distributeddata import java.time.Duration -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ import scala.concurrent.duration._ import org.apache.pekko.actor.testkit.typed.scaladsl.TestProbe import org.apache.pekko.actor.typed.ActorSystem diff --git a/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ShoppingCartSpec.scala b/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ShoppingCartSpec.scala index 7eac75ce..99eb9f7c 100644 --- a/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ShoppingCartSpec.scala +++ b/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/ShoppingCartSpec.scala @@ -13,7 +13,7 @@ import org.apache.pekko.remote.testconductor.RoleName import org.apache.pekko.remote.testkit.MultiNodeConfig import org.apache.pekko.remote.testkit.MultiNodeSpec import com.typesafe.config.ConfigFactory -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ object ShoppingCartSpec extends MultiNodeConfig { val node1 = role("node-1") diff --git a/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/VotingServiceSpec.scala b/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/VotingServiceSpec.scala index ee321e28..bda3bc1b 100644 --- a/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/VotingServiceSpec.scala +++ b/pekko-sample-distributed-data-java/src/multi-jvm/scala/sample/distributeddata/VotingServiceSpec.scala @@ -93,7 +93,7 @@ class VotingServiceSpec extends MultiNodeSpec(VotingServiceSpec) with STMultiNod votingService ! new GetVotes(p.ref) val votes = p.expectMessageType[Votes](3.seconds) votes.open should be(false) - import scala.collection.JavaConverters._ + import scala.jdk.CollectionConverters._ votes.result.asScala.toMap should be(expected) } diff --git a/pekko-sample-distributed-data-scala/build.sbt b/pekko-sample-distributed-data-scala/build.sbt index 7df2d8d5..04534f63 100644 --- a/pekko-sample-distributed-data-scala/build.sbt +++ b/pekko-sample-distributed-data-scala/build.sbt @@ -12,7 +12,7 @@ val `pekko-sample-distributed-data-scala` = project // Agrona (used by pekko-remote Artery) needs access to jdk.internal.misc.Unsafe MultiJvm / jvmOptions ++= Seq("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), version := "1.0", - scalaVersion := "3.3.7", + scalaVersion := "3.3.9", Compile / scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"), Compile / javacOptions ++= Seq("-Xlint:unchecked", "-Xlint:deprecation"), run / javaOptions ++= Seq("-Xms128m", "-Xmx1024m", "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"), diff --git a/pekko-sample-distributed-data-scala/project/build.properties b/pekko-sample-distributed-data-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-distributed-data-scala/project/build.properties +++ b/pekko-sample-distributed-data-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-distributed-workers-scala/build.sbt b/pekko-sample-distributed-workers-scala/build.sbt index 28c0a64f..e9e3146c 100644 --- a/pekko-sample-distributed-workers-scala/build.sbt +++ b/pekko-sample-distributed-workers-scala/build.sbt @@ -2,7 +2,7 @@ name := "pekko-distributed-workers-scala" version := "1.0" -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" ThisBuild / evictionErrorLevel := Level.Info ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo diff --git a/pekko-sample-distributed-workers-scala/project/build.properties b/pekko-sample-distributed-workers-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-distributed-workers-scala/project/build.properties +++ b/pekko-sample-distributed-workers-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-fsm-java/src/main/java/sample/DiningHakkers.java b/pekko-sample-fsm-java/src/main/java/sample/DiningHakkers.java index 42631d97..b9f53b36 100644 --- a/pekko-sample-fsm-java/src/main/java/sample/DiningHakkers.java +++ b/pekko-sample-fsm-java/src/main/java/sample/DiningHakkers.java @@ -7,9 +7,7 @@ import org.apache.pekko.actor.typed.javadsl.Behaviors; import org.apache.pekko.actor.typed.javadsl.ActorContext; -import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; import java.util.stream.IntStream; public class DiningHakkers { @@ -32,10 +30,10 @@ private Behavior behavior() { //Create 5 chopsticks List> chopsticks = IntStream.rangeClosed(1, 5) .mapToObj(i -> context.spawn(Chopstick.create(), "Chopstick" + i)) - .collect(Collectors.toList()); + .toList(); //Create 5 hakkers and assign them their left and right chopstick - List names = Arrays.asList("Ghosh", "Boner", "Klang", "Krasser", "Manie"); + List names = List.of("Ghosh", "Boner", "Klang", "Krasser", "Manie"); IntStream.range(0, names.size()) .mapToObj(i -> context.spawn(Hakker.create(names.get(i), chopsticks.get(i), chopsticks.get((i + 1) % 5)), names.get(i)) diff --git a/pekko-sample-fsm-scala/build.sbt b/pekko-sample-fsm-scala/build.sbt index a71a0570..9781d2db 100644 --- a/pekko-sample-fsm-scala/build.sbt +++ b/pekko-sample-fsm-scala/build.sbt @@ -5,7 +5,7 @@ ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-actor-typed" % pekkoVersion, "ch.qos.logback" % "logback-classic" % logbackVersion) diff --git a/pekko-sample-fsm-scala/project/build.properties b/pekko-sample-fsm-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-fsm-scala/project/build.properties +++ b/pekko-sample-fsm-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-grpc-kubernetes-scala/build.sbt b/pekko-sample-grpc-kubernetes-scala/build.sbt index dad491dc..1fdd7112 100644 --- a/pekko-sample-grpc-kubernetes-scala/build.sbt +++ b/pekko-sample-grpc-kubernetes-scala/build.sbt @@ -1,5 +1,5 @@ name := "pekko-grpc-kubernetes" -ThisBuild / scalaVersion := "3.3.7" +ThisBuild / scalaVersion := "3.3.9" ThisBuild / evictionErrorLevel := Level.Info ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo diff --git a/pekko-sample-grpc-kubernetes-scala/project/build.properties b/pekko-sample-grpc-kubernetes-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-grpc-kubernetes-scala/project/build.properties +++ b/pekko-sample-grpc-kubernetes-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-kafka-to-sharding-scala/build.sbt b/pekko-sample-kafka-to-sharding-scala/build.sbt index 27dbb1ce..25c508d4 100644 --- a/pekko-sample-kafka-to-sharding-scala/build.sbt +++ b/pekko-sample-kafka-to-sharding-scala/build.sbt @@ -9,7 +9,7 @@ val EmbeddedKafkaVersion = "2.4.1.1" val logbackVersion = "1.3.15" val slf4jVersion = "2.0.17" -ThisBuild / scalaVersion := "3.3.7" +ThisBuild / scalaVersion := "3.3.9" ThisBuild / organization := "org.apache.pekko" ThisBuild / Compile / scalacOptions ++= Seq( "-deprecation", diff --git a/pekko-sample-kafka-to-sharding-scala/project/build.properties b/pekko-sample-kafka-to-sharding-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-kafka-to-sharding-scala/project/build.properties +++ b/pekko-sample-kafka-to-sharding-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java b/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java index 22f2deb0..dbb424e5 100644 --- a/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java +++ b/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java @@ -1,9 +1,7 @@ package sample.persistence.res; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; import java.util.Set; +import java.util.List; import java.util.concurrent.CountDownLatch; import org.apache.pekko.actor.typed.ActorSystem; @@ -24,7 +22,7 @@ public class MainApp { public static Set ALL_REPLICAS = - Collections.unmodifiableSet(new HashSet<>(Arrays.asList(new ReplicaId("eu-west"), new ReplicaId("eu-central")))); + Set.of(new ReplicaId("eu-west"), new ReplicaId("eu-central")); public static void main(String[] args) { if (args.length == 0) { @@ -84,7 +82,7 @@ private static void startCassandraDatabase() { final CassandraContainer container = new CassandraContainer( DockerImageName.parse("cassandra:5.0.5")); // bind to the fixed port 9042 so that the sample nodes can connect with the default driver settings - container.setPortBindings(java.util.Collections.singletonList("9042:9042")); + container.setPortBindings(List.of("9042:9042")); container.start(); // shut the cassandra instance down when the JVM stops diff --git a/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/auction/AuctionEntity.java b/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/auction/AuctionEntity.java index bc032fae..dcdbac58 100644 --- a/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/auction/AuctionEntity.java +++ b/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/auction/AuctionEntity.java @@ -15,7 +15,6 @@ import java.time.Duration; import java.time.Instant; -import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -28,7 +27,7 @@ public class AuctionEntity public static ReplicaId R1 = new ReplicaId("R1"); public static ReplicaId R2 = new ReplicaId("R2"); - public static Set ALL_REPLICAS = new HashSet<>(Arrays.asList(R1, R2)); + public static Set ALL_REPLICAS = Set.of(R1, R2); private final ActorContext context; private final TimerScheduler timers; @@ -172,7 +171,7 @@ AuctionState addFinishedAtReplica(String replica) { } public AuctionState close() { - return new AuctionState(false, highestBid, highestCounterOffer, Collections.emptySet()); + return new AuctionState(false, highestBid, highestCounterOffer, Set.of()); } public boolean isClosed() { @@ -221,7 +220,7 @@ private AuctionEntity( @Override public AuctionState emptyState() { - return new AuctionState(true, initialBid, initialBid.offer, Collections.emptySet()); + return new AuctionState(true, initialBid, initialBid.offer, Set.of()); } @Override diff --git a/pekko-sample-persistence-dc-scala/build.sbt b/pekko-sample-persistence-dc-scala/build.sbt index e8d32458..666f0d8f 100644 --- a/pekko-sample-persistence-dc-scala/build.sbt +++ b/pekko-sample-persistence-dc-scala/build.sbt @@ -1,7 +1,7 @@ organization := "org.apache.pekko" name := "pekko-sample-replicated-event-sourcing-scala" -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" ThisBuild / evictionErrorLevel := Level.Info ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo diff --git a/pekko-sample-persistence-dc-scala/project/build.properties b/pekko-sample-persistence-dc-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-persistence-dc-scala/project/build.properties +++ b/pekko-sample-persistence-dc-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-persistence-java/src/main/java/sample/persistence/ShoppingCart.java b/pekko-sample-persistence-java/src/main/java/sample/persistence/ShoppingCart.java index 261f6ffb..58c38061 100644 --- a/pekko-sample-persistence-java/src/main/java/sample/persistence/ShoppingCart.java +++ b/pekko-sample-persistence-java/src/main/java/sample/persistence/ShoppingCart.java @@ -15,7 +15,6 @@ import java.time.Duration; import java.time.Instant; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -177,7 +176,7 @@ public static final class Summary implements CborSerializable { public Summary(Map items, boolean checkedOut) { // Summary is included in messages and should therefore be immutable - this.items = Collections.unmodifiableMap(new HashMap<>(items)); + this.items = Map.copyOf(items); this.checkedOut = checkedOut; } } diff --git a/pekko-sample-persistence-scala/build.sbt b/pekko-sample-persistence-scala/build.sbt index 1e6e4954..33c31d9a 100644 --- a/pekko-sample-persistence-scala/build.sbt +++ b/pekko-sample-persistence-scala/build.sbt @@ -1,7 +1,7 @@ organization := "org.apache.pekko" name := "pekko-sample-persistence-scala" -scalaVersion := "3.3.7" +scalaVersion := "3.3.9" ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" diff --git a/pekko-sample-persistence-scala/project/build.properties b/pekko-sample-persistence-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-persistence-scala/project/build.properties +++ b/pekko-sample-persistence-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-sharding-java/build.sbt b/pekko-sample-sharding-java/build.sbt index 359196cf..9e36da59 100644 --- a/pekko-sample-sharding-java/build.sbt +++ b/pekko-sample-sharding-java/build.sbt @@ -6,7 +6,7 @@ val logbackVersion = "1.3.15" lazy val buildSettings = Seq( organization := "org.apache.pekko", - scalaVersion := "3.3.7") + scalaVersion := "3.3.9") lazy val commonJavacOptions = Seq( "-Xlint:unchecked", diff --git a/pekko-sample-sharding-java/killrweather-fog/src/main/java/sample/killrweather/fog/Fog.java b/pekko-sample-sharding-java/killrweather-fog/src/main/java/sample/killrweather/fog/Fog.java index 8e76b3ef..5d9ae05a 100644 --- a/pekko-sample-sharding-java/killrweather-fog/src/main/java/sample/killrweather/fog/Fog.java +++ b/pekko-sample-sharding-java/killrweather-fog/src/main/java/sample/killrweather/fog/Fog.java @@ -4,7 +4,6 @@ import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; /** * In another terminal start the `Fog` (see Fog computing https://en.wikipedia.org/wiki/Fog_computing). @@ -16,9 +15,9 @@ public class Fog { public static void main(String[] args) { final List weatherApiPorts; if (args.length == 0) { - weatherApiPorts = Arrays.asList(12553, 12554); + weatherApiPorts = List.of(12553, 12554); } else { - weatherApiPorts = Arrays.asList(args).stream().map(arg -> Integer.parseInt(arg)).collect(Collectors.toList()); + weatherApiPorts = Arrays.stream(args).map(Integer::parseInt).toList(); } ActorSystem.create(Guardian.create(weatherApiPorts), "Fog"); diff --git a/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/KillrWeather.java b/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/KillrWeather.java index 9e930b65..36948362 100644 --- a/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/KillrWeather.java +++ b/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/KillrWeather.java @@ -9,7 +9,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; /** * Main entry point for the application. @@ -23,7 +22,7 @@ public static void main(String[] args) throws Exception { .stream() .map(AddressFromURIString::parse) .map(addr -> (Integer) addr.port().get()) // Missing Java getter for port - .collect(Collectors.toList()); + .toList(); // Either use a single port provided by the user // Or start each listed seed nodes port plus one node on a random port in this single JVM if the user @@ -31,7 +30,7 @@ public static void main(String[] args) throws Exception { // In a production application you wouldn't start multiple ActorSystem instances in the // same JVM, here we do it to simplify running a sample cluster from a single main method. List ports = Arrays.stream(args).findFirst().map(str -> - Collections.singletonList(Integer.parseInt(str)) + List.of(Integer.parseInt(str)) ).orElseGet(() -> { List portsAndZero = new ArrayList<>(seedNodePorts); portsAndZero.add(0); diff --git a/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/WeatherStation.java b/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/WeatherStation.java index 015d8a48..8952e328 100644 --- a/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/WeatherStation.java +++ b/pekko-sample-sharding-java/killrweather/src/main/java/sample/killrweather/WeatherStation.java @@ -15,7 +15,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.*; -import java.util.stream.Collectors; /** * A sharded `WeatherStation` has a set of recorded datapoints @@ -180,7 +179,7 @@ private Behavior onRecord(Record record) { List dataForSameType = values.stream() .filter(d -> d.dataType == record.data.dataType) .map(d -> d.value) - .collect(Collectors.toList()); + .toList(); double averageForSameType = average(dataForSameType); getContext().getLog().debug("{} total readings from station {}, type {}, average {}, diff: processingTime - eventTime: {} ms", values.size(), @@ -195,33 +194,31 @@ private Behavior onRecord(Record record) { } private Behavior onQuery(Query query) { - List dataForType = values.stream().filter(d -> d.dataType == query.dataType).collect(Collectors.toList()); + List dataForType = values.stream().filter(d -> d.dataType == query.dataType).toList(); final List queryResult; if (dataForType.isEmpty()) { - queryResult = Collections.emptyList(); + queryResult = List.of(); } else { - switch (query.func) { - case Average: - long start = dataForType.stream().findFirst().map(d -> d.eventTime).orElse(0L); - long end = dataForType.isEmpty() ? 0 : dataForType.get(dataForType.size() - 1).eventTime; - List valuesForType = dataForType.stream().map(d -> d.value).collect(Collectors.toList()); - queryResult = Collections.singletonList(new TimeWindow(start, end, average(valuesForType))); - break; - case HighLow: + queryResult = switch (query.func) { + case Average -> { + long start = dataForType.get(0).eventTime; + long end = dataForType.get(dataForType.size() - 1).eventTime; + List valuesForType = dataForType.stream().map(d -> d.value).toList(); + yield List.of(new TimeWindow(start, end, average(valuesForType))); + } + case HighLow -> { Data min = dataForType.stream().reduce((a, b) -> a.value < b.value ? a : b).get(); Data max = dataForType.stream().reduce((a, b) -> a.value > b.value ? a : b).get(); - queryResult = Arrays.asList( + yield List.of( new TimeWindow(min.eventTime, max.eventTime, min.value), new TimeWindow(min.eventTime, max.eventTime, max.value)); - break; - case Current: + } + case Current -> { // we know it is not empty from up above Data current = dataForType.get(dataForType.size() - 1); - queryResult = Collections.singletonList(new TimeWindow(current.eventTime, current.eventTime, current.value)); - break; - default: - throw new IllegalArgumentException("Unknown operation " + query.func); - } + yield List.of(new TimeWindow(current.eventTime, current.eventTime, current.value)); + } + }; } query.replyTo.tell(new QueryResult(wsid, query.dataType, query.func, dataForType.size(), queryResult)); return this; diff --git a/pekko-sample-sharding-java/project/build.properties b/pekko-sample-sharding-java/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-sharding-java/project/build.properties +++ b/pekko-sample-sharding-java/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 diff --git a/pekko-sample-sharding-scala/build.sbt b/pekko-sample-sharding-scala/build.sbt index 24cc7401..47580a10 100644 --- a/pekko-sample-sharding-scala/build.sbt +++ b/pekko-sample-sharding-scala/build.sbt @@ -6,7 +6,7 @@ val logbackVersion = "1.3.15" lazy val buildSettings = Seq( organization := "org.apache.pekko", - scalaVersion := "3.3.7") + scalaVersion := "3.3.9") lazy val commonScalacOptions = Seq( "-deprecation", diff --git a/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/KillrWeather.scala b/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/KillrWeather.scala index 60f8b8a9..9dea40f4 100644 --- a/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/KillrWeather.scala +++ b/pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/KillrWeather.scala @@ -4,7 +4,7 @@ import org.apache.pekko.actor.AddressFromURIString import org.apache.pekko.actor.typed.ActorSystem import com.typesafe.config.Config import com.typesafe.config.ConfigFactory -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ /** * Main entry point for the application. diff --git a/pekko-sample-sharding-scala/project/build.properties b/pekko-sample-sharding-scala/project/build.properties index cc1ebf34..36860735 100644 --- a/pekko-sample-sharding-scala/project/build.properties +++ b/pekko-sample-sharding-scala/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.15 +sbt.version=1.13.1 From 9f9c915d386ef94318d5f3d85faa4cb38759aadf Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Tue, 3 Nov 2026 08:43:10 +0100 Subject: [PATCH 10/11] Compile Maven samples with --release 17 Motivation: CI failed in cluster-client-grpc-java: the poms still compiled with -source 1.8, which rejects the Java 17 pattern matching now used. Modification: Replace source/target 1.8 with release 17 in every Maven pom (maven.compiler.release in cluster-kubernetes-java). Result: Maven samples compile with Java 17 language features, matching Pekko 2's minimum. Tests: - mvn test-compile: pass for all 8 Maven samples References: Refs #151 --- pekko-sample-cluster-client-grpc-java/pom.xml | 3 +-- pekko-sample-cluster-java/pom.xml | 3 +-- pekko-sample-cluster-kubernetes-java/pom.xml | 3 +-- pekko-sample-fsm-java/pom.xml | 3 +-- pekko-sample-persistence-dc-java/pom.xml | 3 +-- pekko-sample-persistence-java/pom.xml | 3 +-- pekko-sample-sharding-java/killrweather-fog/pom.xml | 3 +-- pekko-sample-sharding-java/killrweather/pom.xml | 3 +-- 8 files changed, 8 insertions(+), 16 deletions(-) diff --git a/pekko-sample-cluster-client-grpc-java/pom.xml b/pekko-sample-cluster-client-grpc-java/pom.xml index 18574f82..eda6797e 100644 --- a/pekko-sample-cluster-client-grpc-java/pom.xml +++ b/pekko-sample-cluster-client-grpc-java/pom.xml @@ -77,8 +77,7 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 true -Xlint diff --git a/pekko-sample-cluster-java/pom.xml b/pekko-sample-cluster-java/pom.xml index 98b86d09..26dcdd43 100644 --- a/pekko-sample-cluster-java/pom.xml +++ b/pekko-sample-cluster-java/pom.xml @@ -61,8 +61,7 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 true -Xlint diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index 3f37ccfb..2a2af54f 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -15,8 +15,7 @@ - 1.8 - 1.8 + 17 UTF-8 2.0.0 2.0.0-M2 diff --git a/pekko-sample-fsm-java/pom.xml b/pekko-sample-fsm-java/pom.xml index 7e99bf53..51753462 100644 --- a/pekko-sample-fsm-java/pom.xml +++ b/pekko-sample-fsm-java/pom.xml @@ -43,8 +43,7 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 true -Xlint diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml index b9d948cd..93302d3a 100644 --- a/pekko-sample-persistence-dc-java/pom.xml +++ b/pekko-sample-persistence-dc-java/pom.xml @@ -127,8 +127,7 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 -Xlint:unchecked -Xlint:deprecation diff --git a/pekko-sample-persistence-java/pom.xml b/pekko-sample-persistence-java/pom.xml index 9852432e..4cc86fda 100644 --- a/pekko-sample-persistence-java/pom.xml +++ b/pekko-sample-persistence-java/pom.xml @@ -70,8 +70,7 @@ maven-compiler-plugin 3.6.1 - 1.8 - 1.8 + 17 -Xlint:unchecked -Xlint:deprecation diff --git a/pekko-sample-sharding-java/killrweather-fog/pom.xml b/pekko-sample-sharding-java/killrweather-fog/pom.xml index 25cb61a2..5e0ccd88 100644 --- a/pekko-sample-sharding-java/killrweather-fog/pom.xml +++ b/pekko-sample-sharding-java/killrweather-fog/pom.xml @@ -81,8 +81,7 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 -Xlint:unchecked -Xlint:deprecation diff --git a/pekko-sample-sharding-java/killrweather/pom.xml b/pekko-sample-sharding-java/killrweather/pom.xml index dd1183d1..c34aecb6 100644 --- a/pekko-sample-sharding-java/killrweather/pom.xml +++ b/pekko-sample-sharding-java/killrweather/pom.xml @@ -87,8 +87,7 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 -Xlint:unchecked -Xlint:deprecation From c01a5d3b50009c5a058fcb8b1e07a7476258dcb6 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 5 Nov 2026 22:37:05 +0100 Subject: [PATCH 11/11] Remove the Apache staging resolver now that Pekko 2.0.0 is released --- pekko-sample-cluster-client-grpc-java/pom.xml | 8 -------- pekko-sample-cluster-client-grpc-scala/build.sbt | 1 - pekko-sample-cluster-docker-compose-java/build.sbt | 1 - pekko-sample-cluster-docker-compose-scala/build.sbt | 1 - pekko-sample-cluster-java/build.sbt | 1 - pekko-sample-cluster-java/pom.xml | 8 -------- pekko-sample-cluster-kubernetes-java/pom.xml | 8 -------- pekko-sample-cluster-kubernetes-scala/build.sbt | 1 - pekko-sample-cluster-scala/build.sbt | 1 - pekko-sample-distributed-data-java/build.sbt | 1 - pekko-sample-distributed-data-scala/build.sbt | 1 - pekko-sample-distributed-workers-scala/build.sbt | 1 - pekko-sample-fsm-java/pom.xml | 8 -------- pekko-sample-fsm-scala/build.sbt | 1 - pekko-sample-grpc-kubernetes-scala/build.sbt | 1 - pekko-sample-kafka-to-sharding-scala/build.sbt | 1 - pekko-sample-persistence-dc-java/pom.xml | 8 -------- pekko-sample-persistence-dc-scala/build.sbt | 1 - pekko-sample-persistence-java/pom.xml | 8 -------- pekko-sample-persistence-scala/build.sbt | 1 - pekko-sample-sharding-java/build.sbt | 1 - pekko-sample-sharding-java/killrweather-fog/pom.xml | 5 ----- pekko-sample-sharding-java/killrweather/pom.xml | 5 ----- pekko-sample-sharding-scala/build.sbt | 1 - 24 files changed, 74 deletions(-) diff --git a/pekko-sample-cluster-client-grpc-java/pom.xml b/pekko-sample-cluster-client-grpc-java/pom.xml index eda6797e..9abc63b7 100644 --- a/pekko-sample-cluster-client-grpc-java/pom.xml +++ b/pekko-sample-cluster-client-grpc-java/pom.xml @@ -17,14 +17,6 @@ --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED - - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - - - org.apache.pekko diff --git a/pekko-sample-cluster-client-grpc-scala/build.sbt b/pekko-sample-cluster-client-grpc-scala/build.sbt index 837f5bb6..22cfb8ce 100644 --- a/pekko-sample-cluster-client-grpc-scala/build.sbt +++ b/pekko-sample-cluster-client-grpc-scala/build.sbt @@ -1,7 +1,6 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" lazy val `pekko-sample-cluster-client-grpc-scala` = project diff --git a/pekko-sample-cluster-docker-compose-java/build.sbt b/pekko-sample-cluster-docker-compose-java/build.sbt index 4c367bae..861c3531 100644 --- a/pekko-sample-cluster-docker-compose-java/build.sbt +++ b/pekko-sample-cluster-docker-compose-java/build.sbt @@ -9,7 +9,6 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-cluster-docker-compose-scala/build.sbt b/pekko-sample-cluster-docker-compose-scala/build.sbt index 2bbf0fa6..a84864fa 100644 --- a/pekko-sample-cluster-docker-compose-scala/build.sbt +++ b/pekko-sample-cluster-docker-compose-scala/build.sbt @@ -10,7 +10,6 @@ scalacOptions ++= Seq( "-unchecked", "-encoding", "UTF-8") -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-cluster-java/build.sbt b/pekko-sample-cluster-java/build.sbt index cedebd6f..a8ac69fe 100644 --- a/pekko-sample-cluster-java/build.sbt +++ b/pekko-sample-cluster-java/build.sbt @@ -1,6 +1,5 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-cluster-java/pom.xml b/pekko-sample-cluster-java/pom.xml index 26dcdd43..530d3040 100644 --- a/pekko-sample-cluster-java/pom.xml +++ b/pekko-sample-cluster-java/pom.xml @@ -17,14 +17,6 @@ --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED - - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - - - org.apache.pekko diff --git a/pekko-sample-cluster-kubernetes-java/pom.xml b/pekko-sample-cluster-kubernetes-java/pom.xml index 2a2af54f..2ab5bd9a 100644 --- a/pekko-sample-cluster-kubernetes-java/pom.xml +++ b/pekko-sample-cluster-kubernetes-java/pom.xml @@ -26,14 +26,6 @@ --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED - - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - - - org.apache.pekko diff --git a/pekko-sample-cluster-kubernetes-scala/build.sbt b/pekko-sample-cluster-kubernetes-scala/build.sbt index cd8a50bd..d8465149 100644 --- a/pekko-sample-cluster-kubernetes-scala/build.sbt +++ b/pekko-sample-cluster-kubernetes-scala/build.sbt @@ -5,7 +5,6 @@ name := "pekko-sample-cluster-kubernetes-scala" scalaVersion := "3.3.9" val pekkoHttpVersion = "2.0.0-M2" ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val pekkoManagementVersion = "2.0.0-M1" val logbackVersion = "1.3.15" diff --git a/pekko-sample-cluster-scala/build.sbt b/pekko-sample-cluster-scala/build.sbt index feb5f9f5..9c978d4c 100644 --- a/pekko-sample-cluster-scala/build.sbt +++ b/pekko-sample-cluster-scala/build.sbt @@ -1,6 +1,5 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-distributed-data-java/build.sbt b/pekko-sample-distributed-data-java/build.sbt index 9d96fc0f..bcfb59dc 100644 --- a/pekko-sample-distributed-data-java/build.sbt +++ b/pekko-sample-distributed-data-java/build.sbt @@ -1,6 +1,5 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-distributed-data-scala/build.sbt b/pekko-sample-distributed-data-scala/build.sbt index 04534f63..a307e5d1 100644 --- a/pekko-sample-distributed-data-scala/build.sbt +++ b/pekko-sample-distributed-data-scala/build.sbt @@ -1,6 +1,5 @@ import com.typesafe.sbt.MultiJvmPlugin.multiJvmSettings -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-distributed-workers-scala/build.sbt b/pekko-sample-distributed-workers-scala/build.sbt index e9e3146c..a048dbb7 100644 --- a/pekko-sample-distributed-workers-scala/build.sbt +++ b/pekko-sample-distributed-workers-scala/build.sbt @@ -5,7 +5,6 @@ version := "1.0" scalaVersion := "3.3.9" ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val cassandraPluginVersion = "1.1.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-fsm-java/pom.xml b/pekko-sample-fsm-java/pom.xml index 51753462..09241547 100644 --- a/pekko-sample-fsm-java/pom.xml +++ b/pekko-sample-fsm-java/pom.xml @@ -15,14 +15,6 @@ jar 1.0 - - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - - - org.apache.pekko diff --git a/pekko-sample-fsm-scala/build.sbt b/pekko-sample-fsm-scala/build.sbt index 9781d2db..79b792dd 100644 --- a/pekko-sample-fsm-scala/build.sbt +++ b/pekko-sample-fsm-scala/build.sbt @@ -1,7 +1,6 @@ organization := "org.apache.pekko" name := "pekko-sample-fsm-scala" -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-grpc-kubernetes-scala/build.sbt b/pekko-sample-grpc-kubernetes-scala/build.sbt index 1fdd7112..ceef1a8b 100644 --- a/pekko-sample-grpc-kubernetes-scala/build.sbt +++ b/pekko-sample-grpc-kubernetes-scala/build.sbt @@ -2,7 +2,6 @@ name := "pekko-grpc-kubernetes" ThisBuild / scalaVersion := "3.3.9" ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo lazy val pekkoVersion = "2.0.0" lazy val pekkoManagementVersion = "2.0.0-M1" lazy val pekkoHttpVersion = "2.0.0-M2" diff --git a/pekko-sample-kafka-to-sharding-scala/build.sbt b/pekko-sample-kafka-to-sharding-scala/build.sbt index 25c508d4..dfca45aa 100644 --- a/pekko-sample-kafka-to-sharding-scala/build.sbt +++ b/pekko-sample-kafka-to-sharding-scala/build.sbt @@ -1,5 +1,4 @@ ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val pekkoHttpVersion = "2.0.0-M2" diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml index 93302d3a..64343262 100644 --- a/pekko-sample-persistence-dc-java/pom.xml +++ b/pekko-sample-persistence-dc-java/pom.xml @@ -27,14 +27,6 @@ --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED - - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - - - org.apache.pekko diff --git a/pekko-sample-persistence-dc-scala/build.sbt b/pekko-sample-persistence-dc-scala/build.sbt index 666f0d8f..4027be61 100644 --- a/pekko-sample-persistence-dc-scala/build.sbt +++ b/pekko-sample-persistence-dc-scala/build.sbt @@ -4,7 +4,6 @@ name := "pekko-sample-replicated-event-sourcing-scala" scalaVersion := "3.3.9" ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val cassandraPluginVersion = "1.1.0" diff --git a/pekko-sample-persistence-java/pom.xml b/pekko-sample-persistence-java/pom.xml index 4cc86fda..e81174d5 100644 --- a/pekko-sample-persistence-java/pom.xml +++ b/pekko-sample-persistence-java/pom.xml @@ -22,14 +22,6 @@ 3 - - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - - - org.apache.pekko diff --git a/pekko-sample-persistence-scala/build.sbt b/pekko-sample-persistence-scala/build.sbt index 33c31d9a..56f2c055 100644 --- a/pekko-sample-persistence-scala/build.sbt +++ b/pekko-sample-persistence-scala/build.sbt @@ -3,7 +3,6 @@ name := "pekko-sample-persistence-scala" scalaVersion := "3.3.9" -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val logbackVersion = "1.3.15" diff --git a/pekko-sample-sharding-java/build.sbt b/pekko-sample-sharding-java/build.sbt index 9e36da59..33bfe00a 100644 --- a/pekko-sample-sharding-java/build.sbt +++ b/pekko-sample-sharding-java/build.sbt @@ -1,5 +1,4 @@ ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val pekkoHttpVersion = "2.0.0-M2" val logbackVersion = "1.3.15" diff --git a/pekko-sample-sharding-java/killrweather-fog/pom.xml b/pekko-sample-sharding-java/killrweather-fog/pom.xml index 5e0ccd88..5e978d17 100644 --- a/pekko-sample-sharding-java/killrweather-fog/pom.xml +++ b/pekko-sample-sharding-java/killrweather-fog/pom.xml @@ -33,11 +33,6 @@ true - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - diff --git a/pekko-sample-sharding-java/killrweather/pom.xml b/pekko-sample-sharding-java/killrweather/pom.xml index c34aecb6..9bfe63c5 100644 --- a/pekko-sample-sharding-java/killrweather/pom.xml +++ b/pekko-sample-sharding-java/killrweather/pom.xml @@ -35,11 +35,6 @@ true - - apache-staging - Apache Staging Repository - https://repository.apache.org/content/groups/staging/ - diff --git a/pekko-sample-sharding-scala/build.sbt b/pekko-sample-sharding-scala/build.sbt index 47580a10..c15b3ec8 100644 --- a/pekko-sample-sharding-scala/build.sbt +++ b/pekko-sample-sharding-scala/build.sbt @@ -1,5 +1,4 @@ ThisBuild / evictionErrorLevel := Level.Info -ThisBuild / resolvers += Resolver.ApacheMavenStagingRepo val pekkoVersion = "2.0.0" val pekkoHttpVersion = "2.0.0-M2" val logbackVersion = "1.3.15"