From: Robert Varga Date: Thu, 6 Jul 2017 13:21:16 +0000 (+0200) Subject: Transfer leadership in PreLeader state X-Git-Tag: release/nitrogen~61 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=c50fd31278f5f24ed487a6f6021f6065bc2fe93f;ds=sidebyside Transfer leadership in PreLeader state Rather than dying when requested to shutdown in pre-leader state, follow the same code path we perform in normal leader mode, i.e. transfer leadership. Change-Id: I2ca30d44626df05c5f8b5ff6984eea20c7bf0949 Signed-off-by: Robert Varga --- 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 9d970f1695..7ec9f2743c 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 @@ -367,10 +367,15 @@ public abstract class RaftActor extends AbstractUntypedPersistentActor { shuttingDown = true; final RaftActorBehavior currentBehavior = context.getCurrentBehavior(); - if (currentBehavior.state() != RaftState.Leader) { - // For non-leaders shutdown is a no-op - self().tell(PoisonPill.getInstance(), self()); - return; + switch (currentBehavior.state()) { + case Leader: + case PreLeader: + // Fall-through to more work + break; + default: + // For non-leaders shutdown is a no-op + self().tell(PoisonPill.getInstance(), self()); + return; } if (context.hasFollowers()) {