This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch 1.7.x
in repository https://gitbox.apache.org/repos/asf/pekko.git


The following commit(s) were added to refs/heads/1.7.x by this push:
     new 359f122b04 filter messages from remember-entities store (#3411) (#3414)
359f122b04 is described below

commit 359f122b04eb6a9b69de49c3ab277a7accde63e8
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Aug 7 16:45:40 2026 +0100

    filter messages from remember-entities store (#3411) (#3414)
    
    * filter messages from remember-entities store (#3411)
    
    * filter messages from remember-entities store
    
    * Update ExtractorAdapterSpec.scala
    
    * Update ExtractorAdapterSpec.scala
    
    * Update ExtractorAdapterSpec.scala
    
    * Update ExtractorAdapterSpec.scala
    
    * upgrade CI actions to fix build
    
    * Update ExtractorAdapterSpec.scala
---
 .github/workflows/binary-compatibility-checks.yml  |  4 +-
 .github/workflows/build-test-prValidation.yml      | 16 ++--
 .github/workflows/dependency-graph.yml             |  2 +-
 .github/workflows/generate-doc-check.yml           |  4 +-
 .github/workflows/headers.yml                      |  4 +-
 .github/workflows/link-validator.yml               |  4 +-
 .github/workflows/nightly-1.0-builds.yml           | 12 +--
 .github/workflows/nightly-1.1-builds.yml           | 12 +--
 .github/workflows/nightly-builds-aeron.yml         |  4 +-
 .github/workflows/nightly-builds.yml               | 12 +--
 .github/workflows/publish-1.0-docs.yml             |  4 +-
 .github/workflows/publish-1.0-nightly.yml          |  4 +-
 .github/workflows/publish-1.1-docs.yml             |  4 +-
 .github/workflows/publish-1.1-nightly.yml          |  4 +-
 .github/workflows/publish-1.2-docs.yml             |  4 +-
 .github/workflows/publish-1.3-docs.yml             |  2 +-
 .github/workflows/publish-1.4-docs.yml             |  2 +-
 .github/workflows/publish-1.5-docs.yml             |  2 +-
 .github/workflows/publish-1.6-docs.yml             |  2 +-
 .github/workflows/publish-nightly.yml              |  4 +-
 .github/workflows/scala-steward.yml                |  2 +-
 .github/workflows/stage-release-candidate.yml      |  2 +-
 .github/workflows/timing-tests.yml                 |  4 +-
 .../typed/internal/ClusterShardingImpl.scala       | 15 +++-
 .../typed/internal/ExtractorAdapterSpec.scala      | 90 ++++++++++++++++++++++
 25 files changed, 158 insertions(+), 61 deletions(-)

diff --git a/.github/workflows/binary-compatibility-checks.yml 
b/.github/workflows/binary-compatibility-checks.yml
index 8e14d2ff10..2cfba341db 100644
--- a/.github/workflows/binary-compatibility-checks.yml
+++ b/.github/workflows/binary-compatibility-checks.yml
@@ -50,10 +50,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git a/.github/workflows/build-test-prValidation.yml 
b/.github/workflows/build-test-prValidation.yml
index bae9739def..3dfead6922 100644
--- a/.github/workflows/build-test-prValidation.yml
+++ b/.github/workflows/build-test-prValidation.yml
@@ -33,7 +33,7 @@ jobs:
           fetch-tags: true
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Setup Java 8
         uses: actions/[email protected]
@@ -42,7 +42,7 @@ jobs:
           java-version: 8
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Code style check
         run: |-
@@ -74,10 +74,10 @@ jobs:
           java-version: 8
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -137,10 +137,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -180,10 +180,10 @@ jobs:
           java-version: 21
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git a/.github/workflows/dependency-graph.yml 
b/.github/workflows/dependency-graph.yml
index 358c0d5ac9..f5de7a3826 100644
--- a/.github/workflows/dependency-graph.yml
+++ b/.github/workflows/dependency-graph.yml
@@ -35,7 +35,7 @@ jobs:
     steps:
       - uses: actions/[email protected]
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
       - uses: 
scalacenter/sbt-dependency-submission@f43202114d7522a4b233e052f82c2eea8d658134 
# v3.2.1
         with:
           configs-ignore: provided optional test TestJdk9 compile-internal 
runtime-internal pr-validation multi-jvm scala-tool scala-doc-tool
diff --git a/.github/workflows/generate-doc-check.yml 
b/.github/workflows/generate-doc-check.yml
index 4b696364f0..7bed714bf9 100644
--- a/.github/workflows/generate-doc-check.yml
+++ b/.github/workflows/generate-doc-check.yml
@@ -42,10 +42,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/headers.yml b/.github/workflows/headers.yml
index bda8e02c98..aa23acc82b 100644
--- a/.github/workflows/headers.yml
+++ b/.github/workflows/headers.yml
@@ -37,10 +37,10 @@ jobs:
           java-version: 8
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Check headers
         env:
diff --git a/.github/workflows/link-validator.yml 
b/.github/workflows/link-validator.yml
index 667ff7f7b1..c0d420ca0d 100644
--- a/.github/workflows/link-validator.yml
+++ b/.github/workflows/link-validator.yml
@@ -36,10 +36,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
     
       - name: Setup Coursier
         uses: coursier/setup-action@fd1707a76b027efdfb66ca79318b4d29b72e5a02 # 
v3.0.0
diff --git a/.github/workflows/nightly-1.0-builds.yml 
b/.github/workflows/nightly-1.0-builds.yml
index 1d6add2c82..9e709e1a7a 100644
--- a/.github/workflows/nightly-1.0-builds.yml
+++ b/.github/workflows/nightly-1.0-builds.yml
@@ -35,10 +35,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -89,10 +89,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -139,10 +139,10 @@ jobs:
           java-version: ${{ matrix.javaVersion }}
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git a/.github/workflows/nightly-1.1-builds.yml 
b/.github/workflows/nightly-1.1-builds.yml
index 58fd83dad2..2dc279af65 100644
--- a/.github/workflows/nightly-1.1-builds.yml
+++ b/.github/workflows/nightly-1.1-builds.yml
@@ -35,10 +35,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -90,10 +90,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -141,10 +141,10 @@ jobs:
           java-version: ${{ matrix.javaVersion }}
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git a/.github/workflows/nightly-builds-aeron.yml 
b/.github/workflows/nightly-builds-aeron.yml
index bda6d0166d..0d5880ead4 100644
--- a/.github/workflows/nightly-builds-aeron.yml
+++ b/.github/workflows/nightly-builds-aeron.yml
@@ -42,10 +42,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git a/.github/workflows/nightly-builds.yml 
b/.github/workflows/nightly-builds.yml
index 49fa8e375a..aa3a4ce304 100644
--- a/.github/workflows/nightly-builds.yml
+++ b/.github/workflows/nightly-builds.yml
@@ -26,10 +26,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -80,10 +80,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
@@ -132,10 +132,10 @@ jobs:
           java-version: ${{ matrix.javaVersion }}
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git a/.github/workflows/publish-1.0-docs.yml 
b/.github/workflows/publish-1.0-docs.yml
index 9817a09d1b..4aaa563180 100644
--- a/.github/workflows/publish-1.0-docs.yml
+++ b/.github/workflows/publish-1.0-docs.yml
@@ -46,10 +46,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/publish-1.0-nightly.yml 
b/.github/workflows/publish-1.0-nightly.yml
index 88eac28e9f..82ab5adf0e 100644
--- a/.github/workflows/publish-1.0-nightly.yml
+++ b/.github/workflows/publish-1.0-nightly.yml
@@ -49,10 +49,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/publish-1.1-docs.yml 
b/.github/workflows/publish-1.1-docs.yml
index f7d56532e6..18dd8ca3fb 100644
--- a/.github/workflows/publish-1.1-docs.yml
+++ b/.github/workflows/publish-1.1-docs.yml
@@ -46,10 +46,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/publish-1.1-nightly.yml 
b/.github/workflows/publish-1.1-nightly.yml
index eb92f3e377..014123c101 100644
--- a/.github/workflows/publish-1.1-nightly.yml
+++ b/.github/workflows/publish-1.1-nightly.yml
@@ -49,10 +49,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/publish-1.2-docs.yml 
b/.github/workflows/publish-1.2-docs.yml
index 3e45a03c81..03f05016ad 100644
--- a/.github/workflows/publish-1.2-docs.yml
+++ b/.github/workflows/publish-1.2-docs.yml
@@ -45,10 +45,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # 
v1.1.22.2.1.1.221.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # 
v1.5.6.2.1.1.221.1.22
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/publish-1.3-docs.yml 
b/.github/workflows/publish-1.3-docs.yml
index a2230bb0f5..7f411d4272 100644
--- a/.github/workflows/publish-1.3-docs.yml
+++ b/.github/workflows/publish-1.3-docs.yml
@@ -47,7 +47,7 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
         uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
8.1.0
diff --git a/.github/workflows/publish-1.4-docs.yml 
b/.github/workflows/publish-1.4-docs.yml
index 86aac3475c..bb20544253 100644
--- a/.github/workflows/publish-1.4-docs.yml
+++ b/.github/workflows/publish-1.4-docs.yml
@@ -47,7 +47,7 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
         uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
8.1.0
diff --git a/.github/workflows/publish-1.5-docs.yml 
b/.github/workflows/publish-1.5-docs.yml
index 07a721293a..91fc10322b 100644
--- a/.github/workflows/publish-1.5-docs.yml
+++ b/.github/workflows/publish-1.5-docs.yml
@@ -47,7 +47,7 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
         uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
8.1.0
diff --git a/.github/workflows/publish-1.6-docs.yml 
b/.github/workflows/publish-1.6-docs.yml
index b16ccb66d2..64e4018385 100644
--- a/.github/workflows/publish-1.6-docs.yml
+++ b/.github/workflows/publish-1.6-docs.yml
@@ -47,7 +47,7 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
         uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
8.1.0
diff --git a/.github/workflows/publish-nightly.yml 
b/.github/workflows/publish-nightly.yml
index 6cf823fb3e..f6c23ce66b 100644
--- a/.github/workflows/publish-nightly.yml
+++ b/.github/workflows/publish-nightly.yml
@@ -48,10 +48,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/scala-steward.yml 
b/.github/workflows/scala-steward.yml
index ebbf07fd00..6e06cde0d5 100644
--- a/.github/workflows/scala-steward.yml
+++ b/.github/workflows/scala-steward.yml
@@ -33,7 +33,7 @@ jobs:
     if: github.repository == 'apache/pekko'
     steps:
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
       - name: Launch Scala Steward
         uses: scala-steward-org/scala-steward-action@v2
         env:
diff --git a/.github/workflows/stage-release-candidate.yml 
b/.github/workflows/stage-release-candidate.yml
index 386c543a99..0d4d19765b 100644
--- a/.github/workflows/stage-release-candidate.yml
+++ b/.github/workflows/stage-release-candidate.yml
@@ -211,7 +211,7 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Install Graphviz
         run: |-
diff --git a/.github/workflows/timing-tests.yml 
b/.github/workflows/timing-tests.yml
index db003c10e8..cfd89c164e 100644
--- a/.github/workflows/timing-tests.yml
+++ b/.github/workflows/timing-tests.yml
@@ -36,10 +36,10 @@ jobs:
           java-version: 11
 
       - name: Install sbt
-        uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
+        uses: sbt/setup-sbt@bfea3c5f48abd221b04a6df4798aa5eb8b6a2baf # v1.5.6
 
       - name: Cache Coursier cache
-        uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # 
v8.1.0
+        uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 
8.1.1
 
       - name: Enable jvm-opts
         run: cp .jvmopts-ci .jvmopts
diff --git 
a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala
 
b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala
index 026611912c..49f0f0ea95 100644
--- 
a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala
+++ 
b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala
@@ -41,6 +41,7 @@ import pekko.cluster.sharding.ShardCoordinator
 import pekko.cluster.sharding.ShardCoordinator.ShardAllocationStrategy
 import pekko.cluster.sharding.ShardRegion
 import pekko.cluster.sharding.ShardRegion.{ StartEntity => ClassicStartEntity }
+import pekko.cluster.sharding.internal.RememberEntitiesShardStore
 import pekko.cluster.sharding.typed.scaladsl.EntityContext
 import pekko.cluster.typed.Cluster
 import pekko.event.Logging
@@ -57,14 +58,18 @@ import pekko.util.JavaDurationConverters._
  * INTERNAL API
  * Extracts entityId and unwraps ShardingEnvelope and StartEntity messages.
  * Other messages are delegated to the given `ShardingMessageExtractor`.
+ * Internal messages from the remember-entities store are filtered out
+ * and should never reach the user-supplied extractor.
  */
 @InternalApi private[pekko] class ExtractorAdapter[E, M](delegate: 
ShardingMessageExtractor[E, M])
     extends ShardingMessageExtractor[Any, M] {
   override def entityId(message: Any): String = {
     message match {
-      case ShardingEnvelope(entityId, _) => entityId // also covers 
ClassicStartEntity in ShardingEnvelope
-      case ClassicStartEntity(entityId)  => entityId
-      case msg                           => 
delegate.entityId(msg.asInstanceOf[E])
+      case ShardingEnvelope(entityId, _)                    => entityId // 
also covers ClassicStartEntity in ShardingEnvelope
+      case ClassicStartEntity(entityId)                     => entityId
+      case _: RememberEntitiesShardStore.UpdateDone         => null
+      case _: RememberEntitiesShardStore.RememberedEntities => null
+      case msg                                              => 
delegate.entityId(msg.asInstanceOf[E])
     }
   }
 
@@ -78,7 +83,9 @@ import pekko.util.JavaDurationConverters._
       case msg: ClassicStartEntity =>
         // not really of type M, but erased and StartEntity is only handled 
internally, not delivered to the entity
         msg.asInstanceOf[M]
-      case msg =>
+      case _: RememberEntitiesShardStore.UpdateDone         => 
null.asInstanceOf[M]
+      case _: RememberEntitiesShardStore.RememberedEntities => 
null.asInstanceOf[M]
+      case msg                                              =>
         delegate.unwrapMessage(msg.asInstanceOf[E])
     }
   }
diff --git 
a/cluster-sharding-typed/src/test/scala/org/apache/pekko/cluster/sharding/typed/internal/ExtractorAdapterSpec.scala
 
b/cluster-sharding-typed/src/test/scala/org/apache/pekko/cluster/sharding/typed/internal/ExtractorAdapterSpec.scala
new file mode 100644
index 0000000000..f13e1afcc6
--- /dev/null
+++ 
b/cluster-sharding-typed/src/test/scala/org/apache/pekko/cluster/sharding/typed/internal/ExtractorAdapterSpec.scala
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.pekko.cluster.sharding.typed.internal
+
+import scala.annotation.nowarn
+
+import org.apache.pekko
+import pekko.cluster.sharding.ShardRegion.{ StartEntity => ClassicStartEntity }
+import pekko.cluster.sharding.internal.RememberEntitiesShardStore
+import pekko.cluster.sharding.typed.ShardingEnvelope
+import pekko.cluster.sharding.typed.ShardingMessageExtractor
+
+import org.scalatest.matchers.should.Matchers
+import org.scalatest.wordspec.AnyWordSpecLike
+
+@nowarn
+class ExtractorAdapterSpec extends AnyWordSpecLike with Matchers {
+
+  private val extractor = new ShardingMessageExtractor[String, String] {
+    override def entityId(message: String): String =
+      if (message.startsWith("entity-")) message.substring(7, 
message.indexOf(':'))
+      else null
+
+    override def shardId(entityId: String): String = 
entityId.hashCode.abs.toString
+
+    override def unwrapMessage(message: String): String = 
message.substring(message.indexOf(':') + 1)
+  }
+
+  private val adapter = new ExtractorAdapter(extractor)
+
+  "ExtractorAdapter" must {
+
+    "extract entity id from ShardingEnvelope" in {
+      adapter.entityId(ShardingEnvelope("entity-1", "hello")) should 
===("entity-1")
+    }
+
+    "extract entity id from ClassicStartEntity" in {
+      adapter.entityId(ClassicStartEntity("entity-1")) should ===("entity-1")
+    }
+
+    "delegate to user extractor for user messages" in {
+      adapter.entityId("entity-1:hello") should ===("1")
+    }
+
+    "return null for RememberEntitiesShardStore.UpdateDone" in {
+      adapter.entityId(RememberEntitiesShardStore.UpdateDone(Set("entity-1"), 
Set.empty)) should be(null)
+    }
+
+    "return null for RememberEntitiesShardStore.RememberedEntities" in {
+      
adapter.entityId(RememberEntitiesShardStore.RememberedEntities(Set("entity-1", 
"entity-2"))) should be(null)
+    }
+
+    "unwrap ShardingEnvelope message" in {
+      assert(adapter.unwrapMessage(ShardingEnvelope("entity-1", "hello")) === 
"hello")
+    }
+
+    "unwrap ClassicStartEntity message" in {
+      val msg = ClassicStartEntity("entity-1")
+      // widen to Any to avoid checkcast to M at the call site 
(ClassicStartEntity is not actually M)
+      assert((adapter.unwrapMessage(msg): Any) === msg)
+    }
+
+    "delegate unwrapMessage to user extractor for user messages" in {
+      assert(adapter.unwrapMessage("entity-1:hello") === "hello")
+    }
+
+    "return null for unwrapMessage on UpdateDone" in {
+      
assert(adapter.unwrapMessage(RememberEntitiesShardStore.UpdateDone(Set("entity-1"),
 Set.empty)) === null)
+    }
+
+    "return null for unwrapMessage on RememberedEntities" in {
+      
assert(adapter.unwrapMessage(RememberEntitiesShardStore.RememberedEntities(Set("entity-1")))
 === null)
+    }
+  }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to