From ae5823759b35b331ff7c0836fe40241347068617 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 2 Nov 2026 11:05:27 +0100 Subject: [PATCH 1/3] Run cluster-typed tests with classic remoting in PR validation Motivation: BasicClusterConfigSpec broke under classic remoting (#3741) and was only caught by the nightly build, because PR validation does not run cluster-typed/test with Artery disabled. Modification: Add cluster-typed/test as a separate matrix entry in the Pekko Classic Remoting Tests job. Result: Classic remoting regressions in cluster-typed are caught on PRs. Tests: - Not run locally - CI workflow change; this PR's checks exercise it References: Refs #3741, Refs #3742 --- .github/workflows/build-test-prValidation.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-test-prValidation.yml b/.github/workflows/build-test-prValidation.yml index 718c6cf2d0..1c14b058ae 100644 --- a/.github/workflows/build-test-prValidation.yml +++ b/.github/workflows/build-test-prValidation.yml @@ -126,6 +126,7 @@ jobs: matrix: command: - cluster/test distributed-data/test cluster-tools/test cluster-metrics/test + - cluster-typed/test steps: - name: Checkout uses: actions/checkout@v7.0.1 From 42e536a8bbb95e4d2efab3499038643dc44ed690 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 2 Nov 2026 11:06:10 +0100 Subject: [PATCH 2/3] Also run cluster-sharding-typed tests with classic remoting in PR validation Motivation: The nightly classic remoting job runs cluster-sharding-typed/test alongside cluster-typed/test; PR validation should match. Modification: Add cluster-sharding-typed/test to the cluster-typed matrix entry. Result: PR validation covers the same typed cluster modules as the nightly job. Tests: - Not run locally - CI workflow change; this PR's checks exercise it References: Refs #3741 --- .github/workflows/build-test-prValidation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-test-prValidation.yml b/.github/workflows/build-test-prValidation.yml index 1c14b058ae..757918207a 100644 --- a/.github/workflows/build-test-prValidation.yml +++ b/.github/workflows/build-test-prValidation.yml @@ -126,7 +126,7 @@ jobs: matrix: command: - cluster/test distributed-data/test cluster-tools/test cluster-metrics/test - - cluster-typed/test + - cluster-typed/test cluster-sharding-typed/test steps: - name: Checkout uses: actions/checkout@v7.0.1 From 9fbd2283b1cf701c90a1223bf621942c191db61f Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 2 Nov 2026 14:17:45 +0100 Subject: [PATCH 3/3] Shorten seed-node-timeout in BasicClusterConfigSpec Motivation: With classic remoting, BasicClusterConfigSpec "init cluster" was flaky. The first seed waits the default 5s seed-node-timeout before forming the cluster, and the other node retries InitJoin every 5s. A retry that lands just before the first seed forms the cluster pushes the join to ~10s, which races the 10s eventually timeout. Modification: Set pekko.cluster.seed-node-timeout = 1s in the per-port test config, which is not part of the docs snippet. Result: The two nodes form a cluster within a few seconds instead of up to ~10s. Tests: - Not run locally - CI runs cluster-typed tests with classic remoting References: Refs #3745 --- .../apache/pekko/cluster/typed/BasicClusterExampleSpec.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cluster-typed/src/test/scala/docs/org/apache/pekko/cluster/typed/BasicClusterExampleSpec.scala b/cluster-typed/src/test/scala/docs/org/apache/pekko/cluster/typed/BasicClusterExampleSpec.scala index 1fa1c00338..6442cad68c 100644 --- a/cluster-typed/src/test/scala/docs/org/apache/pekko/cluster/typed/BasicClusterExampleSpec.scala +++ b/cluster-typed/src/test/scala/docs/org/apache/pekko/cluster/typed/BasicClusterExampleSpec.scala @@ -140,6 +140,9 @@ class BasicClusterConfigSpec extends AnyWordSpec with ScalaFutures with Eventual pekko.remote.classic.netty.tcp.port = $port pekko.remote.artery.canonical.port = $port pekko.cluster.jmx.multi-mbeans-in-same-jvm = on + # the default 5s lets the first seed form the cluster just after the other node's + # second InitJoin, so the join can take ~10s and race the eventually timeout + pekko.cluster.seed-node-timeout = 1s pekko.cluster.seed-nodes = [ "$protocol://ClusterSystem@127.0.0.1:$sys1Port", "$protocol://ClusterSystem@127.0.0.1:$sys2Port" ] """)