Allow member to leave a cluster via CoordinatedShutdown.run when MemberStatus is Joining/WeaklyUp/Up. (#24152)

This commit is contained in:
Pritam Kadam 2018-01-04 13:13:25 +05:30 committed by Christopher Batey
parent 1dffa344c4
commit 37f0da17b7
3 changed files with 30 additions and 3 deletions

View file

@ -171,6 +171,33 @@ class ClusterSpec extends AkkaSpec(ClusterSpec.config) with ImplicitSender {
}
}
"leave via CoordinatedShutdown.run when member status is Joining" in {
val sys2 = ActorSystem("ClusterSpec2", ConfigFactory.parseString("""
akka.actor.provider = "cluster"
akka.remote.netty.tcp.port = 0
akka.remote.artery.canonical.port = 0
akka.cluster.min-nr-of-members = 2
"""))
try {
val probe = TestProbe()(sys2)
Cluster(sys2).subscribe(probe.ref, classOf[MemberEvent])
probe.expectMsgType[CurrentClusterState]
Cluster(sys2).join(Cluster(sys2).selfAddress)
probe.expectMsgType[MemberJoined]
CoordinatedShutdown(sys2).run(CoordinatedShutdown.UnknownReason)
probe.expectMsgType[MemberLeft]
// 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)
}
}
"terminate ActorSystem via leave (CoordinatedShutdown)" in {
val sys2 = ActorSystem("ClusterSpec2", ConfigFactory.parseString("""
akka.actor.provider = "cluster"