diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderLeavingSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderLeavingSpec.scala index b509341ee6..15e308cafb 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderLeavingSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderLeavingSpec.scala @@ -11,6 +11,7 @@ import akka.testkit._ import scala.concurrent.util.duration._ import akka.actor.Props import akka.actor.Actor +import akka.cluster.MemberStatus._ object LeaderLeavingMultiJvmSpec extends MultiNodeConfig { val first = role("first") @@ -62,7 +63,7 @@ abstract class LeaderLeavingSpec awaitCond(!cluster.isRunning) // verify that the LEADER is REMOVED - awaitCond(clusterView.status == MemberStatus.Removed) + awaitCond(clusterView.status == Removed) } else { @@ -71,6 +72,11 @@ abstract class LeaderLeavingSpec cluster.subscribe(system.actorOf(Props(new Actor { def receive = { + case state: CurrentClusterState ⇒ + if (state.members.exists(m ⇒ m.address == oldLeaderAddress && m.status == Leaving)) + leavingLatch.countDown() + if (state.members.exists(m ⇒ m.address == oldLeaderAddress && m.status == Exiting)) + exitingLatch.countDown() case MemberLeft(m) if m.address == oldLeaderAddress ⇒ leavingLatch.countDown() case MemberExited(m) if m.address == oldLeaderAddress ⇒ exitingLatch.countDown() case _ ⇒ // ignore diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerExitingSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerExitingSpec.scala index e82977e579..f0407e94d5 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerExitingSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerExitingSpec.scala @@ -12,6 +12,7 @@ import akka.testkit._ import scala.concurrent.util.duration._ import akka.actor.Props import akka.actor.Actor +import akka.cluster.MemberStatus._ object MembershipChangeListenerExitingMultiJvmSpec extends MultiNodeConfig { val first = role("first") @@ -57,6 +58,9 @@ abstract class MembershipChangeListenerExitingSpec val exitingLatch = TestLatch() cluster.subscribe(system.actorOf(Props(new Actor { def receive = { + case state: CurrentClusterState ⇒ + if (state.members.exists(m ⇒ m.address == address(second) && m.status == Exiting)) + exitingLatch.countDown() case MemberExited(m) if m.address == address(second) ⇒ exitingLatch.countDown() case _ ⇒ // ignore diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerLeavingSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerLeavingSpec.scala index afc11fa493..ab93e9c319 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerLeavingSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/MembershipChangeListenerLeavingSpec.scala @@ -12,6 +12,7 @@ import akka.testkit._ import akka.actor.Address import akka.actor.Props import akka.actor.Actor +import akka.cluster.MemberStatus._ object MembershipChangeListenerLeavingMultiJvmSpec extends MultiNodeConfig { val first = role("first") @@ -55,6 +56,9 @@ abstract class MembershipChangeListenerLeavingSpec val latch = TestLatch() cluster.subscribe(system.actorOf(Props(new Actor { def receive = { + case state: CurrentClusterState ⇒ + if (state.members.exists(m ⇒ m.address == address(second) && m.status == Leaving)) + latch.countDown() case MemberLeft(m) if m.address == address(second) ⇒ latch.countDown() case _ ⇒ // ignore diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeLeavingAndExitingSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeLeavingAndExitingSpec.scala index 5073e17aa1..529866c433 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeLeavingAndExitingSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeLeavingAndExitingSpec.scala @@ -11,6 +11,7 @@ import akka.testkit._ import scala.concurrent.util.duration._ import akka.actor.Props import akka.actor.Actor +import akka.cluster.MemberStatus._ object NodeLeavingAndExitingMultiJvmSpec extends MultiNodeConfig { val first = role("first") @@ -48,6 +49,11 @@ abstract class NodeLeavingAndExitingSpec val exitingLatch = TestLatch() cluster.subscribe(system.actorOf(Props(new Actor { def receive = { + case state: CurrentClusterState ⇒ + if (state.members.exists(m ⇒ m.address == secondAddess && m.status == Leaving)) + leavingLatch.countDown() + if (state.members.exists(m ⇒ m.address == secondAddess && m.status == Exiting)) + exitingLatch.countDown() case MemberLeft(m) if m.address == secondAddess ⇒ leavingLatch.countDown() case MemberExited(m) if m.address == secondAddess ⇒ exitingLatch.countDown()