You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sz...@apache.org on 2018/03/27 07:36:31 UTC
incubator-ratis git commit: RATIS-209. StateMachine updater may miss
writeLog Request after a new Leader is chosen. Contributed by Mukul Kumar
Singh
Repository: incubator-ratis
Updated Branches:
refs/heads/master 288ea4f42 -> 9494b75c1
RATIS-209. StateMachine updater may miss writeLog Request after a new Leader is chosen. Contributed by Mukul Kumar Singh
Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/9494b75c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/9494b75c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/9494b75c
Branch: refs/heads/master
Commit: 9494b75c1ef285fb8a292118de97ccc37cc5b89c
Parents: 288ea4f
Author: Tsz-Wo Nicholas Sze <sz...@hortonworks.com>
Authored: Tue Mar 27 15:36:16 2018 +0800
Committer: Tsz-Wo Nicholas Sze <sz...@hortonworks.com>
Committed: Tue Mar 27 15:36:16 2018 +0800
----------------------------------------------------------------------
.../apache/ratis/server/storage/SegmentedRaftLog.java | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/9494b75c/ratis-server/src/main/java/org/apache/ratis/server/storage/SegmentedRaftLog.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/storage/SegmentedRaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/storage/SegmentedRaftLog.java
index 036f3e0..3f14571 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/storage/SegmentedRaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/storage/SegmentedRaftLog.java
@@ -272,8 +272,17 @@ public class SegmentedRaftLog extends RaftLog {
checkAndEvictCache();
}
+ // If the entry has state machine data, then the entry should be inserted
+ // to statemachine first and then to the cache. Not following the order
+ // will leave a spurious entry in the cache.
+ CompletableFuture<Long> writeFuture =
+ fileLogWorker.writeLogEntry(entry).getFuture();
cache.appendEntry(entry);
- return fileLogWorker.writeLogEntry(entry).getFuture();
+ return writeFuture;
+ } catch (Throwable throwable) {
+ LOG.error(getSelfId() + "exception while appending entry with index:" +
+ entry.getIndex(), throwable);
+ throw throwable;
}
}