ClusterSpec, race between MemberRemoved and MemberExited, #23449 (#24105)

This commit is contained in:
Patrik Nordwall 2017-12-05 15:12:19 +01:00 committed by Konrad `ktoso` Malawski
parent 3dda73c1ea
commit 52f30a8043

View file

@ -160,8 +160,12 @@ class ClusterSpec extends AkkaSpec(ClusterSpec.config) with ImplicitSender {
CoordinatedShutdown(sys2).run(CoordinatedShutdown.UnknownReason)
probe.expectMsgType[MemberLeft]
probe.expectMsgType[MemberExited]
probe.expectMsgType[MemberRemoved]
// MemberExited might not be published before MemberRemoved
val removed = probe.fishForMessage() {
case _: MemberExited false
case _: MemberRemoved true
}.asInstanceOf[MemberRemoved]
removed.previousStatus should ===(MemberStatus.Exiting)
} finally {
shutdown(sys2)
}
@ -183,8 +187,12 @@ class ClusterSpec extends AkkaSpec(ClusterSpec.config) with ImplicitSender {
Cluster(sys2).leave(Cluster(sys2).selfAddress)
probe.expectMsgType[MemberLeft]
probe.expectMsgType[MemberExited]
probe.expectMsgType[MemberRemoved]
// MemberExited might not be published before MemberRemoved
val removed = probe.fishForMessage() {
case _: MemberExited false
case _: MemberRemoved true
}.asInstanceOf[MemberRemoved]
removed.previousStatus should ===(MemberStatus.Exiting)
Await.result(sys2.whenTerminated, 10.seconds)
Cluster(sys2).isTerminated should ===(true)
CoordinatedShutdown(sys2).shutdownReason() should ===(Some(CoordinatedShutdown.ClusterLeavingReason))