From c1d8d46591c54d610d8467e21b6cd48f7091bcf8 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 30 Mar 2016 11:33:48 +0200 Subject: [PATCH] Simplify onShutdown checks We check for RaftState.Leader twice in an if/else chain. Check for non-Leader first and bail early, leaving a simple if/else to handle the leader case. Change-Id: I26e2821b0e3ab86f1fd50625ddd1a0ad6ae3b3be Signed-off-by: Robert Varga --- .../controller/cluster/raft/RaftActor.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java index 945af8d47d..ff464b0c9c 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java @@ -305,7 +305,13 @@ public abstract class RaftActor extends AbstractUntypedPersistentActor { shuttingDown = true; final RaftActorBehavior currentBehavior = context.getCurrentBehavior(); - if(currentBehavior.state() == RaftState.Leader && context.hasFollowers()) { + if (currentBehavior.state() != RaftState.Leader) { + // For non-leaders shutdown is a no-op + self().tell(PoisonPill.getInstance(), self()); + return; + } + + if (context.hasFollowers()) { initiateLeadershipTransfer(new RaftActorLeadershipTransferCohort.OnComplete() { @Override public void onSuccess(ActorRef raftActorRef, ActorRef replyTo) { @@ -319,7 +325,7 @@ public abstract class RaftActor extends AbstractUntypedPersistentActor { raftActorRef.tell(PoisonPill.getInstance(), raftActorRef); } }); - } else if(currentBehavior.state() == RaftState.Leader) { + } else { pauseLeader(new TimedRunnable(context.getConfigParams().getElectionTimeOutInterval(), this) { @Override protected void doRun() { @@ -331,8 +337,6 @@ public abstract class RaftActor extends AbstractUntypedPersistentActor { self().tell(PoisonPill.getInstance(), self()); } }); - } else { - self().tell(PoisonPill.getInstance(), self()); } } -- 2.36.6