diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala index 0b4b1cce84..1af8380ba8 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala @@ -6,7 +6,6 @@ package akka.cluster.sharding import java.net.URLEncoder import java.util - import akka.actor.Actor import akka.actor.ActorLogging import akka.actor.ActorRef @@ -24,6 +23,7 @@ import akka.cluster.ClusterEvent.InitialStateAsEvents import akka.cluster.ClusterEvent.MemberEvent import akka.cluster.ClusterEvent.MemberPreparingForShutdown import akka.cluster.ClusterEvent.MemberReadyForShutdown +import akka.cluster.sharding.ShardRegion.ShardsUpdated import akka.cluster.sharding.internal.EntityPassivationStrategy import akka.cluster.sharding.internal.RememberEntitiesShardStore import akka.cluster.sharding.internal.RememberEntitiesShardStore.GetEntities @@ -700,6 +700,7 @@ private[akka] class Shard( case msg: ShardQuery => receiveShardQuery(msg) case PassivateIntervalTick => stash() case msg: RememberEntityStoreCrashed => rememberEntityStoreCrashed(msg) + case msg: ShardsUpdated => shardsUpdated(msg) case msg if extractEntityId.isDefinedAt(msg) => deliverMessage(msg, sender()) case msg => diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala index be0eacd47a..68b8e013c2 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala @@ -1025,7 +1025,9 @@ private[akka] class ShardRegion( shardsByRef = shardsByRef - ref shards = shards - shardId startingShards -= shardId - shards.values.foreach(_ ! ShardsUpdated(shards.size)) + if (settings.passivationStrategy != ClusterShardingSettings.NoPassivationStrategy) { + shards.values.foreach(_ ! ShardsUpdated(shards.size)) + } if (handingOff.contains(ref)) { handingOff = handingOff - ref log.debug("{}: Shard [{}] handoff complete", typeName, shardId) @@ -1367,7 +1369,9 @@ private[akka] class ShardRegion( shardsByRef = shardsByRef.updated(shard, id) shards = shards.updated(id, shard) startingShards += id - shards.values.foreach(_ ! ShardsUpdated(shards.size)) + if (settings.passivationStrategy != ClusterShardingSettings.NoPassivationStrategy) { + shards.values.foreach(_ ! ShardsUpdated(shards.size)) + } None case Some(_) => None