This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new a0c4255d5 RATIS-2167. Add default value in TermIndex (#1161)
a0c4255d5 is described below
commit a0c4255d5154a9972d1a6d4aba49fff5d96ea4b3
Author: jianghuazhu <[email protected]>
AuthorDate: Sat Oct 5 05:16:44 2024 +0800
RATIS-2167. Add default value in TermIndex (#1161)
---
.../java/org/apache/ratis/server/protocol/TermIndex.java | 13 +++++++++++++
.../apache/ratis/statemachine/impl/BaseStateMachine.java | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git
a/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
b/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
index 7def686bb..dac1a51d2 100644
---
a/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
+++
b/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
@@ -19,12 +19,25 @@ package org.apache.ratis.server.protocol;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.proto.RaftProtos.TermIndexProto;
+import org.apache.ratis.server.raftlog.RaftLog;
import java.util.Comparator;
import java.util.Optional;
/** The term and the log index defined in the Raft consensus algorithm. */
public interface TermIndex extends Comparable<TermIndex> {
+ /**
+ * The initial value.
+ * When a new Raft group starts,
+ * all the servers has term 0 and index -1 (= {@link
RaftLog#INVALID_LOG_INDEX}).
+ * Note that term is incremented during leader election
+ * and index is incremented when writing to the {@link RaftLog}.
+ * The least term and index possibly written to the {@link RaftLog}
+ * are respectively 1 and 0 (= {@link RaftLog#LEAST_VALID_LOG_INDEX}).
+ */
+ TermIndex INITIAL_VALUE = valueOf(0, RaftLog.INVALID_LOG_INDEX);
+
+ /** An empty {@link TermIndex} array. */
TermIndex[] EMPTY_ARRAY = {};
/** @return the term. */
diff --git
a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
index 97cc3e638..7ed112429 100644
---
a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
+++
b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
@@ -59,7 +59,7 @@ public class BaseStateMachine implements StateMachine,
StateMachine.DataApi,
private final SortedMap<Long, CompletableFuture<Void>> transactionFutures =
new TreeMap<>();
public BaseStateMachine() {
- setLastAppliedTermIndex(TermIndex.valueOf(0, -1));
+ setLastAppliedTermIndex(TermIndex.INITIAL_VALUE);
}
public RaftPeerId getId() {