Relax termination order check in ClusterShardingGracefulShutdownOldestSpec, #30744 (#30768)

* the Termination messages can be delivered in different order
This commit is contained in:
Patrik Nordwall 2021-10-12 08:23:29 +02:00 committed by GitHub
parent 7742f1ded3
commit c92489f9ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -21,30 +21,6 @@ abstract class ClusterShardingGracefulShutdownOldestSpecConfig(mode: String)
} }
object ClusterShardingGracefulShutdownOldestSpec { object ClusterShardingGracefulShutdownOldestSpec {
object TerminationOrderActor {
case object RegionTerminated
case object CoordinatorTerminated
def props(probe: ActorRef, coordinator: ActorRef, region: ActorRef) =
Props(new TerminationOrderActor(probe, coordinator, region))
}
class TerminationOrderActor(probe: ActorRef, coordinator: ActorRef, region: ActorRef) extends Actor {
import TerminationOrderActor._
context.watch(coordinator)
context.watch(region)
def receive = {
case Terminated(`coordinator`) =>
probe ! CoordinatorTerminated
case Terminated(`region`) =>
probe ! RegionTerminated
}
}
object SlowStopShardedEntity { object SlowStopShardedEntity {
case object Stop case object Stop
@ -143,15 +119,17 @@ abstract class ClusterShardingGracefulShutdownOldestSpec(
.resolveOne(remainingOrDefault), .resolveOne(remainingOrDefault),
remainingOrDefault) remainingOrDefault)
} }
val terminationProbe = TestProbe()
system.actorOf(TerminationOrderActor.props(terminationProbe.ref, coordinator, region)) val regionTerminationProbe = TestProbe()
regionTerminationProbe.watch(region)
val coordinatorTerminationProbe = TestProbe()
coordinatorTerminationProbe.watch(coordinator)
// trigger graceful shutdown // trigger graceful shutdown
cluster.leave(address(first)) cluster.leave(address(first))
// region first regionTerminationProbe.expectTerminated(region)
terminationProbe.expectMsg(TerminationOrderActor.RegionTerminated) coordinatorTerminationProbe.expectTerminated(coordinator)
terminationProbe.expectMsg(TerminationOrderActor.CoordinatorTerminated)
} }
enterBarrier("terminated") enterBarrier("terminated")