Allow member to leave a cluster via CoordinatedShutdown.run when MemberStatus is Joining/WeaklyUp/Up. (#24152)
This commit is contained in:
parent
1dffa344c4
commit
37f0da17b7
3 changed files with 30 additions and 3 deletions
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue