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

He-Pin pushed a commit to branch scala3-upgrade-fix-warnings
in repository https://gitbox.apache.org/repos/asf/pekko.git

commit f8a1931cca75c017d9aea9a3dbd8571d9ee26b32
Merge: 683f8740c3 03ebaf59bb
Author: 虎鸣 <[email protected]>
AuthorDate: Sun Jun 14 19:27:34 2026 +0800

    Merge remote-tracking branch 'origin/main' into scala3-upgrade-fix-warnings
    
    # Conflicts:
    #       stream/src/main/scala/org/apache/pekko/stream/scaladsl/Hub.scala

 .../stream/AsyncBoundaryThroughputBenchmark.scala  | 123 +++++++++++++++++++
 .../pekko/stream/BroadcastHubBenchRunner.scala     | 113 ++++++++++++++++++
 .../pekko/stream/BroadcastHubBenchmark.scala       |  50 +++++++-
 .../pekko/stream/MaterializerWiringBenchmark.scala | 132 +++++++++++++++++++++
 .../pekko/cluster/sharding/ClusterSharding.scala   |  66 +++++------
 .../pekko/cluster/sharding/ShardCoordinator.scala  |   8 +-
 .../pekko/cluster/sharding/ShardRegion.scala       |   8 +-
 project/PekkoBuild.scala                           |   3 +-
 .../future-lazy-vals.excludes                      |  21 ++++
 .../org/apache/pekko/stream/scaladsl/HubSpec.scala |  45 +++++++
 .../impl/PhasedFusingActorMaterializer.scala       |  82 +++++++++----
 .../pekko/stream/impl/TraversalBuilder.scala       |   4 +-
 .../org/apache/pekko/stream/scaladsl/Hub.scala     |  72 +++++++----
 13 files changed, 632 insertions(+), 95 deletions(-)

diff --cc stream/src/main/scala/org/apache/pekko/stream/scaladsl/Hub.scala
index bf05d761d9,8849529e6d..32e647841f
--- a/stream/src/main/scala/org/apache/pekko/stream/scaladsl/Hub.scala
+++ b/stream/src/main/scala/org/apache/pekko/stream/scaladsl/Hub.scala
@@@ -541,10 -541,13 +541,13 @@@ private[pekko] class BroadcastHub[T](st
       * by reading from the broadcast queue. Consumers that are blocked (due 
to reaching tail) request
       * a wakeup and update their position at the same time.
       *
+      * Each slot uses a LongMap keyed by Consumer.id for O(1) add/remove 
without Long boxing.
+      * Empty slots are null (no backing map allocated), reducing baseline 
memory and GC pressure.
+      * When a slot drains to zero consumers, its map is released (set to 
null).
       */
 -    private[this] val consumerWheel =
 +    private val consumerWheel =
-       Array.fill[java.util.ArrayList[Consumer]](bufferSize * 2)(new 
util.ArrayList[Consumer]())
+       new Array[LongMap[Consumer]](bufferSize * 2)
 -    private[this] var activeConsumers = 0
 +    private var activeConsumers = 0
  
      override def preStart(): Unit = {
        setKeepGoing(true)


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

Reply via email to