Simplified reverse in lease majority (#30155)
This commit is contained in:
parent
0a226eb3ea
commit
dcb73c0200
4 changed files with 11 additions and 15 deletions
|
|
@ -0,0 +1,3 @@
|
|||
# #30155 simplified reverse logic in lease majority
|
||||
ProblemFilters.exclude[IncompatibleMethTypeProblem]("akka.cluster.sbr.SplitBrainResolverBase.waitingForLease")
|
||||
ProblemFilters.exclude[IncompatibleMethTypeProblem]("akka.cluster.sbr.DowningStrategy.reverseDecision")
|
||||
|
|
@ -317,17 +317,10 @@ import akka.coordination.lease.scaladsl.Lease
|
|||
unreachableMembers.forall(m => m.status == MemberStatus.Down || m.status == MemberStatus.Exiting)
|
||||
}
|
||||
|
||||
def reverseDecision(decision: Decision): Decision = {
|
||||
def reverseDecision(decision: AcquireLeaseDecision): Decision = {
|
||||
decision match {
|
||||
case DownUnreachable => DownReachable
|
||||
case AcquireLeaseAndDownUnreachable(_) => DownReachable
|
||||
case DownReachable => DownUnreachable
|
||||
case DownAll => DownAll
|
||||
case DownIndirectlyConnected => ReverseDownIndirectlyConnected
|
||||
case AcquireLeaseAndDownIndirectlyConnected(_) => ReverseDownIndirectlyConnected
|
||||
case ReverseDownIndirectlyConnected => DownIndirectlyConnected
|
||||
case DownSelfQuarantinedByRemote =>
|
||||
throw new IllegalArgumentException("Not expected to ever try to reverse DownSelfQuarantinedByRemote")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -378,7 +378,7 @@ import akka.remote.artery.ThisActorSystemQuarantinedEvent
|
|||
.pipeTo(self))
|
||||
}
|
||||
|
||||
def waitingForLease(decision: Decision): Receive = {
|
||||
def waitingForLease(decision: AcquireLeaseDecision): Receive = {
|
||||
case AcquireLease =>
|
||||
acquireLease() // reply message is LeaseResult
|
||||
|
||||
|
|
|
|||
|
|
@ -846,7 +846,7 @@ class SplitBrainResolverSpec
|
|||
val decision1 = strategy1.decide()
|
||||
decision1 should ===(AcquireLeaseAndDownUnreachable(Duration.Zero))
|
||||
strategy1.nodesToDown(decision1) should ===(side2Nodes)
|
||||
val reverseDecision1 = strategy1.reverseDecision(decision1)
|
||||
val reverseDecision1 = strategy1.reverseDecision(decision1.asInstanceOf[AcquireLeaseDecision])
|
||||
reverseDecision1 should ===(DownReachable)
|
||||
strategy1.nodesToDown(reverseDecision1) should ===(side1Nodes)
|
||||
|
||||
|
|
@ -854,7 +854,7 @@ class SplitBrainResolverSpec
|
|||
val decision2 = strategy2.decide()
|
||||
decision2 should ===(AcquireLeaseAndDownUnreachable(acquireLeaseDelayForMinority))
|
||||
strategy2.nodesToDown(decision2) should ===(side1Nodes)
|
||||
val reverseDecision2 = strategy2.reverseDecision(decision2)
|
||||
val reverseDecision2 = strategy2.reverseDecision(decision2.asInstanceOf[AcquireLeaseDecision])
|
||||
reverseDecision2 should ===(DownReachable)
|
||||
strategy2.nodesToDown(reverseDecision2) should ===(side2Nodes)
|
||||
}
|
||||
|
|
@ -888,7 +888,7 @@ class SplitBrainResolverSpec
|
|||
val decision1 = strategy1.decide()
|
||||
decision1 should ===(AcquireLeaseAndDownIndirectlyConnected(Duration.Zero))
|
||||
strategy1.nodesToDown(decision1) should ===(Set(memberA.uniqueAddress, memberB.uniqueAddress))
|
||||
val reverseDecision1 = strategy1.reverseDecision(decision1)
|
||||
val reverseDecision1 = strategy1.reverseDecision(decision1.asInstanceOf[AcquireLeaseDecision])
|
||||
reverseDecision1 should ===(ReverseDownIndirectlyConnected)
|
||||
strategy1.nodesToDown(reverseDecision1) should ===(side1Nodes)
|
||||
}
|
||||
|
|
@ -908,7 +908,7 @@ class SplitBrainResolverSpec
|
|||
val decision1 = strategy1.decide()
|
||||
decision1 should ===(AcquireLeaseAndDownIndirectlyConnected(Duration.Zero))
|
||||
strategy1.nodesToDown(decision1) should ===(Set(memberB, memberC, memberD, memberE).map(_.uniqueAddress))
|
||||
val reverseDecision1 = strategy1.reverseDecision(decision1)
|
||||
val reverseDecision1 = strategy1.reverseDecision(decision1.asInstanceOf[AcquireLeaseDecision])
|
||||
reverseDecision1 should ===(ReverseDownIndirectlyConnected)
|
||||
strategy1.nodesToDown(reverseDecision1) should ===(side1Nodes)
|
||||
|
||||
|
|
@ -921,7 +921,7 @@ class SplitBrainResolverSpec
|
|||
val decision2 = strategy2.decide()
|
||||
decision2 should ===(AcquireLeaseAndDownUnreachable(acquireLeaseDelayForMinority))
|
||||
strategy2.nodesToDown(decision2) should ===(side1Nodes)
|
||||
val reverseDecision2 = strategy2.reverseDecision(decision2)
|
||||
val reverseDecision2 = strategy2.reverseDecision(decision2.asInstanceOf[AcquireLeaseDecision])
|
||||
reverseDecision2 should ===(DownReachable)
|
||||
strategy2.nodesToDown(reverseDecision2) should ===(side2Nodes)
|
||||
|
||||
|
|
@ -932,7 +932,7 @@ class SplitBrainResolverSpec
|
|||
val decision3 = strategy3.decide()
|
||||
decision3 should ===(AcquireLeaseAndDownIndirectlyConnected(Duration.Zero))
|
||||
strategy3.nodesToDown(decision3) should ===(side1Nodes)
|
||||
val reverseDecision3 = strategy3.reverseDecision(decision3)
|
||||
val reverseDecision3 = strategy3.reverseDecision(decision3.asInstanceOf[AcquireLeaseDecision])
|
||||
reverseDecision3 should ===(ReverseDownIndirectlyConnected)
|
||||
strategy3.nodesToDown(reverseDecision3) should ===(Set(memberB, memberC, memberD, memberE).map(_.uniqueAddress))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue