diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala index 0e6b191884..957991b828 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala @@ -21,6 +21,7 @@ import akka.cluster.ddata.Replicator._ import akka.dispatch.ExecutionContexts import akka.pattern.{ AskTimeoutException, pipe } import akka.persistence._ +import akka.cluster.ClusterEvent /** * @see [[ClusterSharding$ ClusterSharding extension]] @@ -840,7 +841,7 @@ class DDataShardCoordinator(typeName: String, settings: ClusterShardingSettings, val CoordinatorStateKey = LWWRegisterKey[State](s"${typeName}CoordinatorState") val initEmptyState = State.empty.withRememberEntities(settings.rememberEntities) - node.subscribe(self, ClusterShuttingDown.getClass) + node.subscribe(self, ClusterEvent.InitialStateAsEvents, ClusterShuttingDown.getClass) // get state from ddata replicator, repeat until GetSuccess getState() diff --git a/akka-cluster-tools/src/main/scala/akka/cluster/singleton/ClusterSingletonManager.scala b/akka-cluster-tools/src/main/scala/akka/cluster/singleton/ClusterSingletonManager.scala index f665299b1d..983a06cd44 100644 --- a/akka-cluster-tools/src/main/scala/akka/cluster/singleton/ClusterSingletonManager.scala +++ b/akka-cluster-tools/src/main/scala/akka/cluster/singleton/ClusterSingletonManager.scala @@ -24,6 +24,7 @@ import akka.cluster.MemberStatus import akka.AkkaException import akka.actor.NoSerializationVerificationNeeded import akka.cluster.UniqueAddress +import akka.cluster.ClusterEvent object ClusterSingletonManagerSettings { @@ -435,7 +436,7 @@ class ClusterSingletonManager( require(!cluster.isTerminated, "Cluster node must not be terminated") // subscribe to cluster changes, re-subscribe when restart - cluster.subscribe(self, classOf[MemberExited], classOf[MemberRemoved]) + cluster.subscribe(self, ClusterEvent.InitialStateAsEvents, classOf[MemberExited], classOf[MemberRemoved]) setTimer(CleanupTimer, Cleanup, 1.minute, repeat = true) @@ -715,7 +716,6 @@ class ClusterSingletonManager( } whenUnhandled { - case Event(_: CurrentClusterState, _) ⇒ stay case Event(MemberExited(m), _) ⇒ if (m.uniqueAddress == cluster.selfUniqueAddress) { selfExited = true