You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by ru...@apache.org on 2020/12/14 12:45:37 UTC
[incubator-ratis] branch master updated: RATIS-1239. Move the
TermIndex implementation to TermIndex. (#354)
This is an automated email from the ASF dual-hosted git repository.
runzhiwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git
The following commit(s) were added to refs/heads/master by this push:
new c5eafb9 RATIS-1239. Move the TermIndex implementation to TermIndex. (#354)
c5eafb9 is described below
commit c5eafb923440f3ad4b786bfe8ff64e57a2be08c4
Author: Tsz-Wo Nicholas Sze <sz...@apache.org>
AuthorDate: Mon Dec 14 20:43:05 2020 +0800
RATIS-1239. Move the TermIndex implementation to TermIndex. (#354)
---
.../apache/ratis/client/impl/ClientProtoUtils.java | 5 ++
.../apache/ratis/grpc/server/GrpcLogAppender.java | 5 +-
.../ratis/logservice/server/LogStateMachine.java | 2 +-
.../apache/ratis/server/impl/RaftServerImpl.java | 10 ++-
.../apache/ratis/server/impl/ServerImplUtils.java | 53 ---------------
.../apache/ratis/server/impl/ServerProtoUtils.java | 23 ++-----
.../org/apache/ratis/server/impl/ServerState.java | 4 +-
.../ratis/server/leader/LeaderProtoUtils.java | 4 +-
.../apache/ratis/server/protocol/TermIndex.java | 76 +++++++++++++++-------
.../apache/ratis/server/raftlog/LogProtoUtils.java | 2 +-
.../ratis/server/raftlog/memory/MemoryRaftLog.java | 3 +-
.../ratis/server/raftlog/segmented/LogSegment.java | 5 +-
.../raftlog/segmented/SegmentedRaftLogCache.java | 5 +-
.../ratis/statemachine/impl/BaseStateMachine.java | 4 +-
.../statemachine/impl/FileListSnapshotInfo.java | 2 +-
.../impl/SimpleStateMachineStorage.java | 2 +-
16 files changed, 82 insertions(+), 123 deletions(-)
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java b/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
index 7ef1290..ae53ab0 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
@@ -57,6 +57,11 @@ public interface ClientProtoUtils {
.setSuccess(success);
}
+ static RaftRpcRequestProto.Builder toRaftRpcRequestProtoBuilder(RaftGroupMemberId requestorId, RaftPeerId replyId) {
+ return toRaftRpcRequestProtoBuilder(requestorId.getPeerId().toByteString(),
+ replyId.toByteString(), requestorId.getGroupId(), null, null);
+ }
+
static RaftRpcRequestProto.Builder toRaftRpcRequestProtoBuilder(
ByteString requesterId, ByteString replyId, RaftGroupId groupId, Long callId,
SlidingWindowEntry slidingWindowEntry) {
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
index de03191..eee13f2 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
@@ -26,7 +26,6 @@ import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.leader.FollowerInfo;
import org.apache.ratis.server.leader.LeaderState;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.leader.LogAppenderBase;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.util.ServerStringUtils;
@@ -585,9 +584,9 @@ public class GrpcLogAppender extends LogAppenderBase {
AppendEntriesRequest(AppendEntriesRequestProto proto, RaftPeerId followerId, GrpcServerMetrics grpcServerMetrics) {
this.callId = proto.getServerRequest().getCallId();
- this.previousLog = proto.hasPreviousLog()? ServerProtoUtils.toTermIndex(proto.getPreviousLog()): null;
+ this.previousLog = proto.hasPreviousLog()? TermIndex.valueOf(proto.getPreviousLog()): null;
this.entriesCount = proto.getEntriesCount();
- this.lastEntry = entriesCount > 0? ServerProtoUtils.toTermIndex(proto.getEntries(entriesCount - 1)): null;
+ this.lastEntry = entriesCount > 0? TermIndex.valueOf(proto.getEntries(entriesCount - 1)): null;
this.timer = grpcServerMetrics.getGrpcLogAppenderLatencyTimer(followerId.toString(), isHeartbeat());
grpcServerMetrics.onRequestCreate(isHeartbeat());
diff --git a/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java b/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java
index 59db307..92fd7a0 100644
--- a/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java
+++ b/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java
@@ -145,7 +145,7 @@ public class LogStateMachine extends BaseStateMachine {
void reset() {
this.length = 0;
this.dataRecordsSize = 0;
- setLastAppliedTermIndex(TermIndex.newTermIndex(0, -1));
+ setLastAppliedTermIndex(TermIndex.valueOf(0, -1));
}
@Override
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
index 3de558b..c1d2839 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
@@ -949,7 +949,7 @@ class RaftServerImpl implements RaftServer.Division,
return requestVote(RaftPeerId.valueOf(request.getRequestorId()),
ProtoUtils.toRaftGroupId(request.getRaftGroupId()),
r.getCandidateTerm(),
- ServerProtoUtils.toTermIndex(r.getCandidateLastEntry()));
+ TermIndex.valueOf(r.getCandidateLastEntry()));
}
private RequestVoteReplyProto requestVote(
@@ -1055,8 +1055,7 @@ class RaftServerImpl implements RaftServer.Division,
final RaftRpcRequestProto request = r.getServerRequest();
final LogEntryProto[] entries = r.getEntriesList()
.toArray(new LogEntryProto[r.getEntriesCount()]);
- final TermIndex previous = r.hasPreviousLog() ?
- ServerProtoUtils.toTermIndex(r.getPreviousLog()) : null;
+ final TermIndex previous = r.hasPreviousLog()? TermIndex.valueOf(r.getPreviousLog()) : null;
final RaftPeerId requestorId = RaftPeerId.valueOf(request.getRequestorId());
preAppendEntriesAsync(requestorId, ProtoUtils.toRaftGroupId(request.getRaftGroupId()), r.getLeaderTerm(),
@@ -1363,8 +1362,7 @@ class RaftServerImpl implements RaftServer.Division,
final long currentTerm;
final long leaderTerm = request.getLeaderTerm();
InstallSnapshotRequestProto.SnapshotChunkProto snapshotChunkRequest = request.getSnapshotChunk();
- final TermIndex lastTermIndex = ServerProtoUtils.toTermIndex(snapshotChunkRequest.getTermIndex());
- final long lastIncludedIndex = lastTermIndex.getIndex();
+ final long lastIncludedIndex = snapshotChunkRequest.getTermIndex().getIndex();
synchronized (this) {
final boolean recognized = state.recognizeLeader(leaderId, leaderTerm);
currentTerm = state.getCurrentTerm();
@@ -1410,7 +1408,7 @@ class RaftServerImpl implements RaftServer.Division,
InstallSnapshotRequestProto request, RaftPeerId leaderId) throws IOException {
final long currentTerm;
final long leaderTerm = request.getLeaderTerm();
- final TermIndex firstAvailableLogTermIndex = ServerProtoUtils.toTermIndex(
+ final TermIndex firstAvailableLogTermIndex = TermIndex.valueOf(
request.getNotification().getFirstAvailableTermIndex());
final long firstAvailableLogIndex = firstAvailableLogTermIndex.getIndex();
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerImplUtils.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerImplUtils.java
index cf92150..60c516c 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerImplUtils.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerImplUtils.java
@@ -81,57 +81,4 @@ public final class ServerImplUtils {
final long p = Optional.ofNullable(followerPrevious).map(TermIndex::getIndex).orElse(RaftLog.LEAST_VALID_LOG_INDEX);
return Math.min(leaderCommitIndex, p + numAppendEntries);
}
-
- public static TermIndex newTermIndex(long term, long index) {
- return new TermIndexImpl(term, index);
- }
-
- private static class TermIndexImpl implements TermIndex {
- private final long term;
- private final long index; //log index; first index is 1.
-
- TermIndexImpl(long term, long logIndex) {
- this.term = term;
- this.index = logIndex;
- }
-
- @Override
- public long getTerm() {
- return term;
- }
-
- @Override
- public long getIndex() {
- return index;
- }
-
- @Override
- public int compareTo(TermIndex that) {
- final int d = Long.compare(this.getTerm(), that.getTerm());
- return d != 0 ? d : Long.compare(this.getIndex(), that.getIndex());
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- } else if (obj == null || !(obj instanceof TermIndexImpl)) {
- return false;
- }
-
- final TermIndexImpl that = (TermIndexImpl) obj;
- return this.getTerm() == that.getTerm()
- && this.getIndex() == that.getIndex();
- }
-
- @Override
- public int hashCode() {
- return Long.hashCode(term) ^ Long.hashCode(index);
- }
-
- @Override
- public String toString() {
- return TermIndex.toString(term, index);
- }
- }
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerProtoUtils.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerProtoUtils.java
index 4d72380..f264652 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerProtoUtils.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerProtoUtils.java
@@ -31,17 +31,10 @@ import java.util.List;
import java.util.Optional;
/** Server proto utilities for internal use. */
-public interface ServerProtoUtils {
- static TermIndex toTermIndex(TermIndexProto p) {
- return p == null? null: TermIndex.newTermIndex(p.getTerm(), p.getIndex());
- }
-
- static TermIndex toTermIndex(LogEntryProto entry) {
- return entry == null ? null :
- TermIndex.newTermIndex(entry.getTerm(), entry.getIndex());
- }
+final class ServerProtoUtils {
+ private ServerProtoUtils() {}
- static RaftRpcReplyProto.Builder toRaftRpcReplyProtoBuilder(
+ private static RaftRpcReplyProto.Builder toRaftRpcReplyProtoBuilder(
RaftPeerId requestorId, RaftGroupMemberId replyId, boolean success) {
return ClientProtoUtils.toRaftRpcReplyProtoBuilder(
requestorId.toByteString(), replyId.getPeerId().toByteString(), replyId.getGroupId(), null, success);
@@ -56,16 +49,10 @@ public interface ServerProtoUtils {
.build();
}
- static RaftRpcRequestProto.Builder toRaftRpcRequestProtoBuilder(
- RaftGroupMemberId requestorId, RaftPeerId replyId) {
- return ClientProtoUtils.toRaftRpcRequestProtoBuilder(
- requestorId.getPeerId().toByteString(), replyId.toByteString(), requestorId.getGroupId(), null, null);
- }
-
static RequestVoteRequestProto toRequestVoteRequestProto(
RaftGroupMemberId requestorId, RaftPeerId replyId, long term, TermIndex lastEntry) {
final RequestVoteRequestProto.Builder b = RequestVoteRequestProto.newBuilder()
- .setServerRequest(toRaftRpcRequestProtoBuilder(requestorId, replyId))
+ .setServerRequest(ClientProtoUtils.toRaftRpcRequestProtoBuilder(requestorId, replyId))
.setCandidateTerm(term);
Optional.ofNullable(lastEntry).map(TermIndex::toProto).ifPresent(b::setCandidateLastEntry);
return b.build();
@@ -129,7 +116,7 @@ public interface ServerProtoUtils {
RaftGroupMemberId requestorId, RaftPeerId replyId, long leaderTerm,
List<LogEntryProto> entries, long leaderCommit, boolean initializing,
TermIndex previous, Collection<CommitInfoProto> commitInfos, long callId) {
- RaftRpcRequestProto.Builder rpcRequest = toRaftRpcRequestProtoBuilder(requestorId, replyId)
+ final RaftRpcRequestProto.Builder rpcRequest = ClientProtoUtils.toRaftRpcRequestProtoBuilder(requestorId, replyId)
.setCallId(callId);
final AppendEntriesRequestProto.Builder b = AppendEntriesRequestProto
.newBuilder()
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
index 396486b..0fd65a8 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
@@ -75,8 +75,6 @@ class ServerState implements Closeable {
/**
* Latest term server has seen.
* Initialized to 0 on first boot, increases monotonically.
- *
- * @see TermIndex#isValidTerm(int)
*/
private final AtomicLong currentTerm = new AtomicLong();
/**
@@ -420,7 +418,7 @@ class ServerState implements Closeable {
StateMachine sm = server.getStateMachine();
sm.pause(); // pause the SM to prepare for install snapshot
snapshotManager.installSnapshot(sm, request);
- updateInstalledSnapshotIndex(ServerProtoUtils.toTermIndex(request.getSnapshotChunk().getTermIndex()));
+ updateInstalledSnapshotIndex(TermIndex.valueOf(request.getSnapshotChunk().getTermIndex()));
}
void updateInstalledSnapshotIndex(TermIndex lastTermIndexInSnapshot) {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/leader/LeaderProtoUtils.java b/ratis-server/src/main/java/org/apache/ratis/server/leader/LeaderProtoUtils.java
index 8c3fbdf..3afb735 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/leader/LeaderProtoUtils.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/leader/LeaderProtoUtils.java
@@ -17,6 +17,7 @@
*/
package org.apache.ratis.server.leader;
+import org.apache.ratis.client.impl.ClientProtoUtils;
import org.apache.ratis.proto.RaftProtos.FileChunkProto;
import org.apache.ratis.proto.RaftProtos.InstallSnapshotRequestProto;
import org.apache.ratis.proto.RaftProtos.InstallSnapshotRequestProto.NotificationProto;
@@ -25,7 +26,6 @@ import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftConfiguration;
import org.apache.ratis.server.RaftServer;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogProtoUtils;
@@ -66,7 +66,7 @@ final class LeaderProtoUtils {
final RaftConfiguration conf = server.getRaftConf();
final LogEntryProto confLogEntryProto = LogProtoUtils.toLogEntryProto(conf, null, conf.getLogEntryIndex());
return InstallSnapshotRequestProto.newBuilder()
- .setServerRequest(ServerProtoUtils.toRaftRpcRequestProtoBuilder(server.getMemberId(), replyId))
+ .setServerRequest(ClientProtoUtils.toRaftRpcRequestProtoBuilder(server.getMemberId(), replyId))
.setLeaderTerm(server.getInfo().getCurrentTerm())
.setLastRaftConfigurationLogEntryProto(confLogEntryProto);
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/protocol/TermIndex.java b/ratis-server/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
index 9d92816..c4f90b9 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
@@ -19,22 +19,13 @@ 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.impl.ServerImplUtils;
+import java.util.Comparator;
import java.util.Optional;
-import java.util.function.LongFunction;
/** The term and the log index defined in the Raft consensus algorithm. */
public interface TermIndex extends Comparable<TermIndex> {
- static TermIndex valueOf(TermIndexProto proto) {
- return Optional.ofNullable(proto).map(p -> newTermIndex(p.getTerm(), p.getIndex())).orElse(null);
- }
-
- static TermIndex valueOf(LogEntryProto proto) {
- return Optional.ofNullable(proto).map(p -> newTermIndex(p.getTerm(), p.getIndex())).orElse(null);
- }
-
- TermIndex[] EMPTY_TERMINDEX_ARRAY = {};
+ TermIndex[] EMPTY_ARRAY = {};
/** @return the term. */
long getTerm();
@@ -50,23 +41,60 @@ public interface TermIndex extends Comparable<TermIndex> {
.build();
}
- /** A term number is valid iff it is greater than zero. */
- static boolean isValidTerm(int term) {
- return term > 0;
+ /** @return a {@link TermIndex} object from the given proto. */
+ static TermIndex valueOf(TermIndexProto proto) {
+ return Optional.ofNullable(proto).map(p -> valueOf(p.getTerm(), p.getIndex())).orElse(null);
}
- /** Create a new {@link TermIndex} instance. */
- static TermIndex newTermIndex(long term, long index) {
- return ServerImplUtils.newTermIndex(term, index);
+ /** @return a {@link TermIndex} object from the given proto. */
+ static TermIndex valueOf(LogEntryProto proto) {
+ return Optional.ofNullable(proto).map(p -> valueOf(p.getTerm(), p.getIndex())).orElse(null);
}
- LongFunction<String> LONG_TO_STRING = n -> n >= 0L? String.valueOf(n): "~";
+ /** @return a {@link TermIndex} object. */
+ static TermIndex valueOf(long term, long index) {
+ return new TermIndex() {
+ @Override
+ public long getTerm() {
+ return term;
+ }
- /** @return a string representing the given term and index. */
- static String toString(long term, long index) {
- return String.format("(t:%s, i:%s)",
- LONG_TO_STRING.apply(term), LONG_TO_STRING.apply(index));
- }
-}
+ @Override
+ public long getIndex() {
+ return index;
+ }
+
+ @Override
+ public int compareTo(TermIndex that) {
+ return Comparator.comparingLong(TermIndex::getTerm).thenComparingLong(TermIndex::getIndex).compare(this, that);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ } else if (!(obj instanceof TermIndex)) {
+ return false;
+ }
+ final TermIndex that = (TermIndex) obj;
+ return this.getTerm() == that.getTerm()
+ && this.getIndex() == that.getIndex();
+ }
+ @Override
+ public int hashCode() {
+ return Long.hashCode(term) ^ Long.hashCode(index);
+ }
+
+ private String longToString(long n) {
+ return n >= 0L? String.valueOf(n) : "~";
+ }
+
+ @Override
+ public String toString() {
+ return String.format("(t:%s, i:%s)", longToString(term), longToString(index));
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/LogProtoUtils.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/LogProtoUtils.java
index 7bcc47b..73b3667 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/LogProtoUtils.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/LogProtoUtils.java
@@ -59,7 +59,7 @@ public final class LogProtoUtils {
} else {
s = "";
}
- return TermIndex.toString(entry.getTerm(), entry.getIndex()) + ", " + entry.getLogEntryBodyCase() + s;
+ return TermIndex.valueOf(entry) + ", " + entry.getLogEntryBodyCase() + s;
}
public static String toLogEntryString(LogEntryProto entry) {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/memory/MemoryRaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/memory/MemoryRaftLog.java
index 69004c4..3f19f5b 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/memory/MemoryRaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/memory/MemoryRaftLog.java
@@ -20,7 +20,6 @@ package org.apache.ratis.server.raftlog.memory;
import org.apache.ratis.conf.RaftProperties;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.server.raftlog.RaftLog;
@@ -46,7 +45,7 @@ public class MemoryRaftLog extends RaftLog {
}
TermIndex getTermIndex(int i) {
- return ServerProtoUtils.toTermIndex(get(i));
+ return TermIndex.valueOf(get(i));
}
int size() {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/LogSegment.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/LogSegment.java
index 30249bb..01ffe44 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/LogSegment.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/LogSegment.java
@@ -19,7 +19,6 @@ package org.apache.ratis.server.raftlog.segmented;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.server.RaftServerConfigKeys.Log.CorruptionPolicy;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.metrics.RaftLogMetrics;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogProtoUtils;
@@ -93,7 +92,7 @@ public class LogSegment implements Comparable<Long> {
LogRecord(long offset, LogEntryProto entry) {
this.offset = offset;
- this.termIndex = ServerProtoUtils.toTermIndex(entry);
+ this.termIndex = TermIndex.valueOf(entry);
}
TermIndex getTermIndex() {
@@ -233,7 +232,7 @@ public class LogSegment implements Comparable<Long> {
// the on-disk log file should be truncated but has not been done yet.
final AtomicReference<LogEntryProto> toReturn = new AtomicReference<>();
readSegmentFile(file, startIndex, endIndex, isOpen, getLogCorruptionPolicy(), raftLogMetrics, entry -> {
- final TermIndex ti = ServerProtoUtils.toTermIndex(entry);
+ final TermIndex ti = TermIndex.valueOf(entry);
putEntryCache(ti, entry, Op.LOAD_SEGMENT_FILE);
if (ti.equals(key.getTermIndex())) {
toReturn.set(entry);
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogCache.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogCache.java
index 7624232..ea04f3c 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogCache.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogCache.java
@@ -20,7 +20,6 @@ package org.apache.ratis.server.raftlog.segmented;
import org.apache.ratis.conf.RaftProperties;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.server.RaftServerConfigKeys;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.metrics.RaftLogMetrics;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogProtoUtils;
@@ -491,7 +490,7 @@ public class SegmentedRaftLogCache {
}
final long realEnd = Math.min(getEndIndex() + 1, endIndex);
if (startIndex >= realEnd) {
- return TermIndex.EMPTY_TERMINDEX_ARRAY;
+ return TermIndex.EMPTY_ARRAY;
}
return closedSegments.getTermIndex(startIndex, realEnd, openSegment);
}
@@ -597,7 +596,7 @@ public class SegmentedRaftLogCache {
if (LOG.isTraceEnabled()) {
LOG.trace("{}: truncate to {}, arrayIndex={}, ti={}, storedEntry={}, entries={}",
name, truncateIndex, arrayIndex,
- ServerProtoUtils.toTermIndex(entries[arrayIndex]), storedEntry,
+ TermIndex.valueOf(entries[arrayIndex]), storedEntry,
LogProtoUtils.toLogEntriesString(entries));
}
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 b327d94..e27fb5b 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
@@ -57,7 +57,7 @@ public class BaseStateMachine implements StateMachine, StateMachine.DataApi,
private final SortedMap<Long, CompletableFuture<Void>> transactionFutures = new TreeMap<>();
public BaseStateMachine() {
- setLastAppliedTermIndex(TermIndex.newTermIndex(0, -1));
+ setLastAppliedTermIndex(TermIndex.valueOf(0, -1));
}
public RaftPeerId getId() {
@@ -130,7 +130,7 @@ public class BaseStateMachine implements StateMachine, StateMachine.DataApi,
}
protected boolean updateLastAppliedTermIndex(long term, long index) {
- final TermIndex newTI = TermIndex.newTermIndex(term, index);
+ final TermIndex newTI = TermIndex.valueOf(term, index);
final TermIndex oldTI = lastAppliedTermIndex.getAndSet(newTI);
if (!newTI.equals(oldTI)) {
LOG.trace("{}: update lastAppliedTermIndex from {} to {}", getId(), oldTI, newTI);
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/FileListSnapshotInfo.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/FileListSnapshotInfo.java
index 265523b..540c5bf 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/FileListSnapshotInfo.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/FileListSnapshotInfo.java
@@ -36,7 +36,7 @@ public class FileListSnapshotInfo implements SnapshotInfo {
private final List<FileInfo> files;
public FileListSnapshotInfo(List<FileInfo> files, long term, long index) {
- this.termIndex = TermIndex.newTermIndex(term, index);
+ this.termIndex = TermIndex.valueOf(term, index);
this.files = Collections.unmodifiableList(new ArrayList<>(files));
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/SimpleStateMachineStorage.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/SimpleStateMachineStorage.java
index 93e5470..f253728 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/SimpleStateMachineStorage.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/SimpleStateMachineStorage.java
@@ -113,7 +113,7 @@ public class SimpleStateMachineStorage implements StateMachineStorage {
}
final long term = Long.parseLong(m.group(1));
final long index = Long.parseLong(m.group(2));
- return TermIndex.newTermIndex(term, index);
+ return TermIndex.valueOf(term, index);
}
protected static String getTmpSnapshotFileName(long term, long endIndex) {