X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fbehaviors%2FFollower.java;h=ede0f6af2c9cb11ce005aa76a9a047b97ef5d29c;hb=a37aef6c01f720b935535b11cf9d7689ceea9470;hp=a6722e6ff98dbbe9ab68df6c9e04915c23c8721a;hpb=76adfd83e0cade28adbda66e0d8c0950601b8e44;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Follower.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Follower.java index a6722e6ff9..ede0f6af2c 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Follower.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Follower.java @@ -48,10 +48,12 @@ public class Follower extends AbstractRaftActorBehavior { initialSyncStatusTracker = new InitialSyncStatusTracker(context.getActor()); - if(context.getPeerAddresses().isEmpty()){ - actor().tell(ELECTION_TIMEOUT, actor()); - } else { - scheduleElection(electionDuration()); + if(context.getRaftPolicy().automaticElectionsEnabled()) { + if (context.getPeerAddresses().isEmpty()) { + actor().tell(ELECTION_TIMEOUT, actor()); + } else { + scheduleElection(electionDuration()); + } } } @@ -104,7 +106,7 @@ public class Follower extends AbstractRaftActorBehavior { if (snapshotTracker != null) { // if snapshot install is in progress, follower should just acknowledge append entries with a reply. AppendEntriesReply reply = new AppendEntriesReply(context.getId(), currentTerm(), true, - lastIndex(), lastTerm()); + lastIndex(), lastTerm(), context.getPayloadVersion()); if(LOG.isDebugEnabled()) { LOG.debug("{}: snapshot install is in progress, replying immediately with {}", logName(), reply); @@ -120,6 +122,8 @@ public class Follower extends AbstractRaftActorBehavior { // If we got here then we do appear to be talking to the leader leaderId = appendEntries.getLeaderId(); + setLeaderPayloadVersion(appendEntries.getPayloadVersion()); + // 2. Reply false if log doesn’t contain an entry at prevLogIndex // whose term matches prevLogTerm (§5.3) @@ -168,7 +172,7 @@ public class Follower extends AbstractRaftActorBehavior { logName(), lastIndex, lastTerm()); sender.tell(new AppendEntriesReply(context.getId(), currentTerm(), false, lastIndex, - lastTerm()), actor()); + lastTerm(), context.getPayloadVersion()), actor()); return this; } @@ -250,7 +254,7 @@ public class Follower extends AbstractRaftActorBehavior { } AppendEntriesReply reply = new AppendEntriesReply(context.getId(), currentTerm(), true, - lastIndex, lastTerm()); + lastIndex, lastTerm(), context.getPayloadVersion()); if(LOG.isTraceEnabled()) { LOG.trace("{}: handleAppendEntries returning : {}", logName(), reply);