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/13 09:25:53 UTC
[incubator-ratis] branch master updated: RATIS-1233. Move the
StateMachineData methods from ServerProtoUtils to LogProtoUtils (#350)
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 a055ed5 RATIS-1233. Move the StateMachineData methods from ServerProtoUtils to LogProtoUtils (#350)
a055ed5 is described below
commit a055ed52e77e144a1adc9e89449275f82b36682a
Author: Tsz-Wo Nicholas Sze <sz...@apache.org>
AuthorDate: Sun Dec 13 17:25:44 2020 +0800
RATIS-1233. Move the StateMachineData methods from ServerProtoUtils to LogProtoUtils (#350)
* RATIS-1233. Move the StateMachineData methods from ServerProtoUtils to LogProtoUtils.
* Fix checkstyle.
---
.../apache/ratis/server/impl/ServerProtoUtils.java | 117 ---------------------
.../apache/ratis/server/raftlog/LogProtoUtils.java | 107 ++++++++++++++++++-
.../org/apache/ratis/server/raftlog/RaftLog.java | 7 +-
.../ratis/server/raftlog/segmented/LogSegment.java | 5 +-
.../server/raftlog/segmented/SegmentedRaftLog.java | 5 +-
.../raftlog/segmented/SegmentedRaftLogWorker.java | 5 +-
.../apache/ratis/statemachine/StateMachine.java | 4 +-
.../ratis/statemachine/TransactionContext.java | 6 +-
.../statemachine/impl/TransactionContextImpl.java | 5 +-
.../test/java/org/apache/ratis/RaftTestUtil.java | 3 +-
10 files changed, 123 insertions(+), 141 deletions(-)
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 a2ac071..dc13a0f 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
@@ -20,22 +20,17 @@ package org.apache.ratis.server.impl;
import org.apache.ratis.client.impl.ClientProtoUtils;
import org.apache.ratis.proto.RaftProtos.*;
import org.apache.ratis.proto.RaftProtos.AppendEntriesReplyProto.AppendResult;
-import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.protocol.RaftClientRequest;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.RaftPeer;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftConfiguration;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogProtoUtils;
-import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.apache.ratis.util.Preconditions;
import org.apache.ratis.util.ProtoUtils;
import java.util.Collection;
import java.util.List;
-import java.util.Optional;
-import java.util.function.Function;
/** Server proto utilities for internal use. */
public interface ServerProtoUtils {
@@ -55,27 +50,10 @@ public interface ServerProtoUtils {
TermIndex.newTermIndex(entry.getTerm(), entry.getIndex());
}
- static String toTermIndexString(LogEntryProto entry) {
- return TermIndex.toString(entry.getTerm(), entry.getIndex());
- }
-
static String toTermIndexString(TermIndexProto proto) {
return TermIndex.toString(proto.getTerm(), proto.getIndex());
}
- static String toStateMachineLogEntryString(StateMachineLogEntryProto smLog,
- Function<StateMachineLogEntryProto, String> function) {
- final ByteString clientId = smLog.getClientId();
- String callIdString = (clientId.isEmpty() ? "<empty clientId>" : ClientId.valueOf(clientId))
- + ", cid=" + smLog.getCallId();
-
- String smString = "";
- if (function != null) {
- smString = "\n\t State Machine: " + function.apply(smLog);
- }
- return callIdString + smString;
- }
-
static String toShortString(List<LogEntryProto> entries) {
return entries.size() == 0? "<empty>"
: "size=" + entries.size() + ", first=" + LogProtoUtils.toLogEntryString(entries.get(0));
@@ -156,101 +134,6 @@ public interface ServerProtoUtils {
return b.build();
}
- static StateMachineEntryProto.Builder toStateMachineEntryProtoBuilder(ByteString stateMachineData) {
- return StateMachineEntryProto.newBuilder().setStateMachineData(stateMachineData);
- }
-
- static StateMachineEntryProto.Builder toStateMachineEntryProtoBuilder(int logEntryProtoSerializedSize) {
- return StateMachineEntryProto.newBuilder().setLogEntryProtoSerializedSize(logEntryProtoSerializedSize);
- }
-
- static StateMachineLogEntryProto toStateMachineLogEntryProto(
- RaftClientRequest request, ByteString logData, ByteString stateMachineData) {
- if (logData == null) {
- logData = request.getMessage().getContent();
- }
- return toStateMachineLogEntryProto(request.getClientId(), request.getCallId(),
- toStateMachineLogEntryProtoType(request.getType().getTypeCase()), logData, stateMachineData);
- }
-
- static StateMachineLogEntryProto.Type toStateMachineLogEntryProtoType(RaftClientRequestProto.TypeCase typeCase) {
- switch (typeCase) {
- case WRITE: return StateMachineLogEntryProto.Type.WRITE;
- case DATASTREAM: return StateMachineLogEntryProto.Type.DATASTREAM;
- default:
- throw new IllegalStateException("Unexpected type case " + typeCase);
- }
- }
-
- static StateMachineLogEntryProto toStateMachineLogEntryProto(ClientId clientId, long callId,
- StateMachineLogEntryProto.Type type, ByteString logData, ByteString stateMachineData) {
- final StateMachineLogEntryProto.Builder b = StateMachineLogEntryProto.newBuilder()
- .setClientId(clientId.toByteString())
- .setCallId(callId)
- .setType(type)
- .setLogData(logData);
- if (stateMachineData != null) {
- b.setStateMachineEntry(toStateMachineEntryProtoBuilder(stateMachineData));
- }
- return b.build();
- }
-
- static Optional<StateMachineEntryProto> getStateMachineEntry(LogEntryProto entry) {
- return Optional.of(entry)
- .filter(LogEntryProto::hasStateMachineLogEntry)
- .map(LogEntryProto::getStateMachineLogEntry)
- .filter(StateMachineLogEntryProto::hasStateMachineEntry)
- .map(StateMachineLogEntryProto::getStateMachineEntry);
- }
-
- static Optional<ByteString> getStateMachineData(LogEntryProto entry) {
- return getStateMachineEntry(entry)
- .map(StateMachineEntryProto::getStateMachineData);
- }
-
- static boolean shouldReadStateMachineData(LogEntryProto entry) {
- return getStateMachineData(entry).map(ByteString::isEmpty).orElse(false);
- }
-
- /**
- * If the given entry has state machine log entry and it has state machine data,
- * build a new entry without the state machine data.
- *
- * @return a new entry without the state machine data if the given has state machine data;
- * otherwise, return the given entry.
- */
- static LogEntryProto removeStateMachineData(LogEntryProto entry) {
- return getStateMachineData(entry)
- .filter(stateMachineData -> !stateMachineData.isEmpty())
- .map(_dummy -> rebuildLogEntryProto(entry, toStateMachineEntryProtoBuilder(entry.getSerializedSize())))
- .orElse(entry);
- }
-
- static LogEntryProto rebuildLogEntryProto(LogEntryProto entry, StateMachineEntryProto.Builder smEntry) {
- return LogEntryProto.newBuilder(entry).setStateMachineLogEntry(
- StateMachineLogEntryProto.newBuilder(entry.getStateMachineLogEntry()).setStateMachineEntry(smEntry)
- ).build();
- }
-
- /**
- * Return a new log entry based on the input log entry with stateMachineData added.
- * @param stateMachineData - state machine data to be added
- * @param entry - log entry to which stateMachineData needs to be added
- * @return LogEntryProto with stateMachineData added
- */
- static LogEntryProto addStateMachineData(ByteString stateMachineData, LogEntryProto entry) {
- Preconditions.assertTrue(shouldReadStateMachineData(entry),
- () -> "Failed to addStateMachineData to " + entry + " since shouldReadStateMachineData is false.");
- return rebuildLogEntryProto(entry, toStateMachineEntryProtoBuilder(stateMachineData));
- }
-
- static int getSerializedSize(LogEntryProto entry) {
- return getStateMachineEntry(entry)
- .filter(smEnty -> smEnty.getStateMachineData().isEmpty())
- .map(StateMachineEntryProto::getLogEntryProtoSerializedSize)
- .orElseGet(entry::getSerializedSize);
- }
-
static RaftRpcReplyProto.Builder toRaftRpcReplyProtoBuilder(
RaftPeerId requestorId, RaftGroupMemberId replyId, boolean success) {
return ClientProtoUtils.toRaftRpcReplyProtoBuilder(
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 a3cd5cf..ff7a027 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
@@ -18,9 +18,12 @@
package org.apache.ratis.server.raftlog;
import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.protocol.ClientId;
+import org.apache.ratis.protocol.RaftClientRequest;
import org.apache.ratis.server.RaftConfiguration;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.protocol.TermIndex;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.util.Preconditions;
import org.apache.ratis.util.ProtoUtils;
import java.util.Arrays;
@@ -32,13 +35,21 @@ import java.util.stream.Collectors;
public final class LogProtoUtils {
private LogProtoUtils() {}
+ public static String toStateMachineLogEntryString(StateMachineLogEntryProto proto,
+ Function<StateMachineLogEntryProto, String> function) {
+ final ByteString clientId = proto.getClientId();
+ return (clientId.isEmpty() ? "<empty ClientId>" : ClientId.valueOf(clientId))
+ + ",cid=" + proto.getCallId()
+ + Optional.ofNullable(function).map(f -> f.apply(proto)).map(s -> "," + s).orElse("");
+ }
+
public static String toLogEntryString(LogEntryProto entry, Function<StateMachineLogEntryProto, String> function) {
if (entry == null) {
return null;
}
final String s;
if (entry.hasStateMachineLogEntry()) {
- s = ", " + ServerProtoUtils.toStateMachineLogEntryString(entry.getStateMachineLogEntry(), function);
+ s = ", " + toStateMachineLogEntryString(entry.getStateMachineLogEntry(), function);
} else if (entry.hasMetadataEntry()) {
final MetadataProto metadata = entry.getMetadataEntry();
s = "(c:" + metadata.getCommitIndex() + ")";
@@ -88,4 +99,96 @@ public final class LogProtoUtils {
.setMetadataEntry(MetadataProto.newBuilder().setCommitIndex(commitIndex))
.build();
}
+
+ /**
+ * If the given entry has state machine log entry and it has state machine data,
+ * build a new entry without the state machine data.
+ *
+ * @return a new entry without the state machine data if the given has state machine data;
+ * otherwise, return the given entry.
+ */
+ public static LogEntryProto removeStateMachineData(LogEntryProto entry) {
+ return getStateMachineEntry(entry)
+ .map(StateMachineEntryProto::getStateMachineData)
+ .filter(stateMachineData -> !stateMachineData.isEmpty())
+ .map(_dummy -> replaceStateMachineDataWithSerializedSize(entry))
+ .orElse(entry);
+ }
+
+ private static LogEntryProto replaceStateMachineDataWithSerializedSize(LogEntryProto entry) {
+ return replaceStateMachineEntry(entry,
+ StateMachineEntryProto.newBuilder().setLogEntryProtoSerializedSize(entry.getSerializedSize()));
+ }
+
+ private static LogEntryProto replaceStateMachineEntry(LogEntryProto proto, StateMachineEntryProto.Builder newEntry) {
+ Preconditions.assertTrue(proto.hasStateMachineLogEntry(), () -> "Unexpected proto " + proto);
+ return LogEntryProto.newBuilder(proto).setStateMachineLogEntry(
+ StateMachineLogEntryProto.newBuilder(proto.getStateMachineLogEntry()).setStateMachineEntry(newEntry)
+ ).build();
+ }
+
+ /**
+ * Return a new log entry based on the input log entry with stateMachineData added.
+ * @param stateMachineData - state machine data to be added
+ * @param entry - log entry to which stateMachineData needs to be added
+ * @return LogEntryProto with stateMachineData added
+ */
+ static LogEntryProto addStateMachineData(ByteString stateMachineData, LogEntryProto entry) {
+ Preconditions.assertTrue(isStateMachineDataEmpty(entry),
+ () -> "Failed to addStateMachineData to " + entry + " since shouldReadStateMachineData is false.");
+ return replaceStateMachineEntry(entry, StateMachineEntryProto.newBuilder().setStateMachineData(stateMachineData));
+ }
+
+ public static boolean isStateMachineDataEmpty(LogEntryProto entry) {
+ return getStateMachineEntry(entry)
+ .map(StateMachineEntryProto::getStateMachineData)
+ .map(ByteString::isEmpty)
+ .orElse(false);
+ }
+
+ private static Optional<StateMachineEntryProto> getStateMachineEntry(LogEntryProto entry) {
+ return Optional.of(entry)
+ .filter(LogEntryProto::hasStateMachineLogEntry)
+ .map(LogEntryProto::getStateMachineLogEntry)
+ .filter(StateMachineLogEntryProto::hasStateMachineEntry)
+ .map(StateMachineLogEntryProto::getStateMachineEntry);
+ }
+
+ public static int getSerializedSize(LogEntryProto entry) {
+ return getStateMachineEntry(entry)
+ .filter(stateMachineEntry -> stateMachineEntry.getStateMachineData().isEmpty())
+ .map(StateMachineEntryProto::getLogEntryProtoSerializedSize)
+ .orElseGet(entry::getSerializedSize);
+ }
+
+ private static StateMachineLogEntryProto.Type toStateMachineLogEntryProtoType(RaftClientRequestProto.TypeCase type) {
+ switch (type) {
+ case WRITE: return StateMachineLogEntryProto.Type.WRITE;
+ case DATASTREAM: return StateMachineLogEntryProto.Type.DATASTREAM;
+ default:
+ throw new IllegalStateException("Unexpected request type " + type);
+ }
+ }
+
+ public static StateMachineLogEntryProto toStateMachineLogEntryProto(
+ RaftClientRequest request, ByteString logData, ByteString stateMachineData) {
+ if (logData == null) {
+ logData = request.getMessage().getContent();
+ }
+ final StateMachineLogEntryProto.Type type = toStateMachineLogEntryProtoType(request.getType().getTypeCase());
+ return toStateMachineLogEntryProto(request.getClientId(), request.getCallId(), type, logData, stateMachineData);
+ }
+
+ public static StateMachineLogEntryProto toStateMachineLogEntryProto(ClientId clientId, long callId,
+ StateMachineLogEntryProto.Type type, ByteString logData, ByteString stateMachineData) {
+ final StateMachineLogEntryProto.Builder b = StateMachineLogEntryProto.newBuilder()
+ .setClientId(clientId.toByteString())
+ .setCallId(callId)
+ .setType(type)
+ .setLogData(logData);
+ Optional.ofNullable(stateMachineData)
+ .map(StateMachineEntryProto.newBuilder()::setStateMachineData)
+ .ifPresent(b::setStateMachineEntry);
+ return b.build();
+ }
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java
index dd2a27a..a401107 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java
@@ -24,7 +24,6 @@ import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.protocol.exceptions.StateMachineException;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.RaftConfiguration;
-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.statemachine.TransactionContext;
@@ -512,7 +511,7 @@ public abstract class RaftLog implements RaftLogSequentialOps, Closeable {
}
public int getSerializedSize() {
- return ServerProtoUtils.getSerializedSize(logEntry);
+ return LogProtoUtils.getSerializedSize(logEntry);
}
public LogEntryProto getEntry(TimeDuration timeout) throws RaftLogIOException, TimeoutException {
@@ -522,7 +521,7 @@ public abstract class RaftLog implements RaftLogSequentialOps, Closeable {
}
try {
- entryProto = future.thenApply(data -> ServerProtoUtils.addStateMachineData(data, logEntry))
+ entryProto = future.thenApply(data -> LogProtoUtils.addStateMachineData(data, logEntry))
.get(timeout.getDuration(), timeout.getUnit());
} catch (TimeoutException t) {
final String err = getName() + ": Timeout readStateMachineData for " + toLogEntryString(logEntry);
@@ -535,7 +534,7 @@ public abstract class RaftLog implements RaftLogSequentialOps, Closeable {
}
// by this time we have already read the state machine data,
// so the log entry data should be set now
- if (ServerProtoUtils.shouldReadStateMachineData(entryProto)) {
+ if (LogProtoUtils.isStateMachineDataEmpty(entryProto)) {
final String err = getName() + ": State machine data not set for " + toLogEntryString(logEntry);
LOG.error(err);
throw new RaftLogIOException(err);
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 0510b14..30249bb 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
@@ -22,6 +22,7 @@ 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;
import org.apache.ratis.server.raftlog.RaftLogIOException;
import org.apache.ratis.server.storage.RaftStorage;
import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
@@ -73,9 +74,9 @@ public class LogSegment implements Comparable<Long> {
static long getEntrySize(LogEntryProto entry, Op op) {
LogEntryProto e = entry;
if (op == Op.CHECK_SEGMENT_FILE_FULL) {
- e = ServerProtoUtils.removeStateMachineData(entry);
+ e = LogProtoUtils.removeStateMachineData(entry);
} else if (op == Op.LOAD_SEGMENT_FILE || op == Op.WRITE_CACHE_WITH_STATE_MACHINE_CACHE) {
- Preconditions.assertTrue(entry == ServerProtoUtils.removeStateMachineData(entry),
+ Preconditions.assertTrue(entry == LogProtoUtils.removeStateMachineData(entry),
() -> "Unexpected LogEntryProto with StateMachine data: op=" + op + ", entry=" + entry);
} else {
Preconditions.assertTrue(op == Op.WRITE_CACHE_WITHOUT_STATE_MACHINE_CACHE || op == Op.REMOVE_CACHE,
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
index d37cccf..df3fe61 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
@@ -22,7 +22,6 @@ import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogProtoUtils;
import org.apache.ratis.server.raftlog.RaftLog;
@@ -283,7 +282,7 @@ public class SegmentedRaftLog extends RaftLog {
if (entry == null) {
throw new RaftLogIOException("Log entry not found: index = " + index);
}
- if (!ServerProtoUtils.shouldReadStateMachineData(entry)) {
+ if (!LogProtoUtils.isStateMachineDataEmpty(entry)) {
return new EntryWithData(entry, null);
}
@@ -404,7 +403,7 @@ public class SegmentedRaftLog extends RaftLog {
fileLogWorker.writeLogEntry(entry).getFuture();
if (stateMachineCachingEnabled) {
// The stateMachineData will be cached inside the StateMachine itself.
- cache.appendEntry(ServerProtoUtils.removeStateMachineData(entry),
+ cache.appendEntry(LogProtoUtils.removeStateMachineData(entry),
LogSegment.Op.WRITE_CACHE_WITH_STATE_MACHINE_CACHE);
} else {
cache.appendEntry(entry, LogSegment.Op.WRITE_CACHE_WITHOUT_STATE_MACHINE_CACHE);
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
index 9c99f7d..5c238bc 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
@@ -26,7 +26,6 @@ import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.exceptions.TimeoutIOException;
import org.apache.ratis.server.RaftServer;
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.raftlog.LogProtoUtils;
import org.apache.ratis.server.raftlog.RaftLog;
@@ -454,7 +453,7 @@ class SegmentedRaftLogWorker {
private final CompletableFuture<Long> combined;
WriteLog(LogEntryProto entry) {
- this.entry = ServerProtoUtils.removeStateMachineData(entry);
+ this.entry = LogProtoUtils.removeStateMachineData(entry);
if (this.entry == entry) {
final StateMachineLogEntryProto proto = entry.hasStateMachineLogEntry()? entry.getStateMachineLogEntry(): null;
if (stateMachine != null && proto != null && proto.getType() == StateMachineLogEntryProto.Type.DATASTREAM) {
@@ -487,7 +486,7 @@ class SegmentedRaftLogWorker {
@Override
int getSerializedSize() {
- return ServerProtoUtils.getSerializedSize(entry);
+ return LogProtoUtils.getSerializedSize(entry);
}
@Override
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java
index a950167..c454392 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java
@@ -27,8 +27,8 @@ import org.apache.ratis.protocol.RaftGroupId;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.RaftPeerId;
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;
import org.apache.ratis.server.storage.RaftStorage;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.apache.ratis.util.LifeCycle;
@@ -456,6 +456,6 @@ public interface StateMachine extends Closeable {
* @return the string representation of the proto.
*/
default String toStateMachineLogEntryString(RaftProtos.StateMachineLogEntryProto proto) {
- return ServerProtoUtils.toStateMachineLogEntryString(proto, null);
+ return LogProtoUtils.toStateMachineLogEntryString(proto, null);
}
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
index 17738e3..b6ed26b 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -21,7 +21,7 @@ import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
import org.apache.ratis.proto.RaftProtos.StateMachineLogEntryProto;
import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.server.impl.ServerProtoUtils;
+import org.apache.ratis.server.raftlog.LogProtoUtils;
import org.apache.ratis.statemachine.impl.TransactionContextImpl;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.apache.ratis.util.Preconditions;
@@ -200,7 +200,7 @@ public interface TransactionContext {
() -> "serverRole MUST be LEADER since clientRequest != null, serverRole is " + serverRole);
Preconditions.assertNull(logEntry, () -> "logEntry MUST be null since clientRequest != null");
if (stateMachineLogEntry == null) {
- stateMachineLogEntry = ServerProtoUtils.toStateMachineLogEntryProto(clientRequest, logData, stateMachineData);
+ stateMachineLogEntry = LogProtoUtils.toStateMachineLogEntryProto(clientRequest, logData, stateMachineData);
}
return new TransactionContextImpl(stateMachine, clientRequest, stateMachineLogEntry, stateMachineContext);
} else {
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/TransactionContextImpl.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/TransactionContextImpl.java
index 86206de..c1a72c6 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/TransactionContextImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/TransactionContextImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -21,7 +21,6 @@ import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
import org.apache.ratis.proto.RaftProtos.StateMachineLogEntryProto;
import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.raftlog.LogProtoUtils;
import org.apache.ratis.statemachine.StateMachine;
import org.apache.ratis.statemachine.TransactionContext;
@@ -85,7 +84,7 @@ public class TransactionContextImpl implements TransactionContext {
this(RaftPeerRole.LEADER, stateMachine);
this.clientRequest = clientRequest;
this.smLogEntryProto = smLogEntryProto != null? smLogEntryProto
- : ServerProtoUtils.toStateMachineLogEntryProto(clientRequest, null, null);
+ : LogProtoUtils.toStateMachineLogEntryProto(clientRequest, null, null);
this.stateMachineContext = stateMachineContext;
}
diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java b/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java
index de3486d..7abddf3 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java
@@ -31,7 +31,6 @@ import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.BlockRequestHandlingInjection;
import org.apache.ratis.server.impl.DelayLocalExecutionInjection;
import org.apache.ratis.server.impl.MiniRaftCluster;
-import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogProtoUtils;
import org.apache.ratis.server.raftlog.RaftLog;
@@ -363,7 +362,7 @@ public interface RaftTestUtil {
private SimpleOperation(ClientId clientId, long callId, String op, boolean hasStateMachineData) {
this.op = Objects.requireNonNull(op);
final ByteString bytes = ProtoUtils.toByteString(op);
- this.smLogEntryProto = ServerProtoUtils.toStateMachineLogEntryProto(
+ this.smLogEntryProto = LogProtoUtils.toStateMachineLogEntryProto(
clientId, callId, StateMachineLogEntryProto.Type.WRITE, bytes, hasStateMachineData? bytes: null);
}