From bdb818fbfc5f015ab14883348f170cca8ce79128 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 15 Jun 2017 17:45:50 +0200 Subject: [PATCH] BUG-8618: update sync status only after processing Since the commitIndex may move in chunks we really want to update our sync status after we have gone through the AppendEntries message so our commitIndex reflects the state after processing. Change-Id: I49c72a21f8d9c3efb7ae9cc1b64276220057f2e2 Signed-off-by: Robert Varga --- .../controller/cluster/raft/behaviors/Follower.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 c35de820db..f8524b5174 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 @@ -157,7 +157,6 @@ public class Follower extends AbstractRaftActorBehavior { leaderId = appendEntries.getLeaderId(); leaderPayloadVersion = appendEntries.getPayloadVersion(); - updateInitialSyncStatus(appendEntries.getLeaderCommit(), appendEntries.getLeaderId()); // First check if the logs are in sync or not long lastIndex = lastIndex(); @@ -169,7 +168,7 @@ public class Follower extends AbstractRaftActorBehavior { lastTerm(), context.getPayloadVersion()); log.info("{}: Follower is out-of-sync so sending negative reply: {}", logName(), reply); - + updateInitialSyncStatus(appendEntries.getLeaderCommit(), appendEntries.getLeaderId()); sender.tell(reply, actor()); return this; } @@ -217,6 +216,7 @@ public class Follower extends AbstractRaftActorBehavior { // follower's log and state. log.info("{}: Could not remove entries - sending reply to force snapshot", logName()); + updateInitialSyncStatus(appendEntries.getLeaderCommit(), appendEntries.getLeaderId()); sender.tell(new AppendEntriesReply(context.getId(), currentTerm(), false, lastIndex, lastTerm(), context.getPayloadVersion(), true), actor()); return this; @@ -224,6 +224,7 @@ public class Follower extends AbstractRaftActorBehavior { break; } else { + updateInitialSyncStatus(appendEntries.getLeaderCommit(), appendEntries.getLeaderId()); sender.tell(new AppendEntriesReply(context.getId(), currentTerm(), false, lastIndex, lastTerm(), context.getPayloadVersion(), true), actor()); return this; @@ -294,6 +295,7 @@ public class Follower extends AbstractRaftActorBehavior { } // Reply to the leader before applying any previous state so as not to hold up leader consensus. + updateInitialSyncStatus(appendEntries.getLeaderCommit(), appendEntries.getLeaderId()); sender.tell(reply, actor()); // If commitIndex > lastApplied: increment lastApplied, apply -- 2.36.6