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

commit 58af52ed748c96ec7b195054e1bfbe73ca7f7a88
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 657c6a0fd..bb7e9856b 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() {

Reply via email to