X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fbehaviors%2FCandidate.java;h=52ed26758ee26b6f9949fa1202f1a44628b82364;hp=1205c4bad66ed26e4a305d45612b2881464de533;hb=bad1f8b8f3c1780cd37ec8a817ef4b0f23901654;hpb=5e590ea1548dd4974ca59f1318a11f2a8651c3b7 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java index 1205c4bad6..52ed26758e 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java @@ -115,15 +115,21 @@ public class Candidate extends AbstractRaftActorBehavior { } if (voteCount >= votesRequired) { - return internalSwitchBehavior(RaftState.Leader); + if(context.getCommitIndex() < context.getReplicatedLog().lastIndex()) { + LOG.debug("{}: Connmit index {} is behind last index {}", logName(), context.getCommitIndex(), + context.getReplicatedLog().lastIndex()); + return internalSwitchBehavior(RaftState.PreLeader); + } else { + return internalSwitchBehavior(RaftState.Leader); + } } return this; } @Override - public RaftActorBehavior handleMessage(ActorRef sender, Object originalMessage) { - if (originalMessage instanceof ElectionTimeout) { + public RaftActorBehavior handleMessage(ActorRef sender, Object message) { + if (message instanceof ElectionTimeout) { LOG.debug("{}: Received ElectionTimeout", logName()); if (votesRequired == 0) { @@ -141,7 +147,6 @@ public class Candidate extends AbstractRaftActorBehavior { return this; } - final Object message = fromSerializableMessage(originalMessage); if (message instanceof RaftRPC) { RaftRPC rpc = (RaftRPC) message;