You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by ji...@apache.org on 2017/05/15 18:24:36 UTC

incubator-ratis git commit: RATIS-88. Add RaftPeerId.valueOf methods. Contributed by Tsz Wo Nicholas Sze.

Repository: incubator-ratis
Updated Branches:
  refs/heads/master e6419972c -> 291f51b42


RATIS-88. Add RaftPeerId.valueOf methods. Contributed by Tsz Wo Nicholas Sze.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/291f51b4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/291f51b4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/291f51b4

Branch: refs/heads/master
Commit: 291f51b4282ff8d5d64f593614215e43b0f99b0e
Parents: e641997
Author: Jing Zhao <ji...@apache.org>
Authored: Mon May 15 11:24:28 2017 -0700
Committer: Jing Zhao <ji...@apache.org>
Committed: Mon May 15 11:24:28 2017 -0700

----------------------------------------------------------------------
 .../ratis/client/impl/ClientProtoUtils.java     |  9 ++---
 .../org/apache/ratis/protocol/RaftPeerId.java   | 37 +++++++++++------
 .../java/org/apache/ratis/util/ProtoUtils.java  |  2 +-
 .../java/org/apache/ratis/TestBatchAppend.java  |  6 +--
 .../org/apache/ratis/TestRestartRaftPeer.java   |  6 +--
 .../TestRaftStateMachineException.java          |  8 +---
 .../org/apache/ratis/grpc/RaftGRpcService.java  |  2 +-
 .../hadooprpc/server/HadoopRpcService.java      | 39 ++++++++----------
 .../ratis/netty/server/NettyRpcService.java     |  2 +-
 .../ratis/server/impl/LeaderElection.java       |  2 +-
 .../ratis/server/impl/RaftServerImpl.java       |  8 ++--
 .../java/org/apache/ratis/MiniRaftCluster.java  |  4 +-
 .../ratis/RaftNotLeaderExceptionBaseTest.java   |  8 +---
 .../impl/RaftReconfigurationBaseTest.java       | 42 ++++++++------------
 .../ratis/server/storage/TestCacheEviction.java |  2 +-
 .../server/storage/TestSegmentedRaftLog.java    |  2 +-
 .../statemachine/RaftSnapshotBaseTest.java      |  2 -
 17 files changed, 79 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
----------------------------------------------------------------------
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 a6e99c6..62a9ee4 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
@@ -49,8 +49,7 @@ public class ClientProtoUtils {
   public static RaftClientRequest toRaftClientRequest(RaftClientRequestProto p) {
     ClientId clientId = new ClientId(
         p.getRpcRequest().getRequestorId().toByteArray());
-    RaftPeerId serverId = new RaftPeerId(
-        p.getRpcRequest().getReplyId());
+    RaftPeerId serverId = RaftPeerId.valueOf(p.getRpcRequest().getReplyId());
     return new RaftClientRequest(clientId, serverId,
         p.getRpcRequest().getCallId(),
         toMessage(p.getMessage()), p.getReadOnly());
@@ -121,7 +120,7 @@ public class ClientProtoUtils {
           ProtoUtils.toRaftPeer(nleProto.getSuggestedLeader()) : null;
       final RaftPeer[] peers = ProtoUtils.toRaftPeerArray(
           nleProto.getPeersInConfList());
-      e = new NotLeaderException(new RaftPeerId(rp.getReplyId()),
+      e = new NotLeaderException(RaftPeerId.valueOf(rp.getReplyId()),
           suggestedLeader, peers);
     } else if (replyProto.getExceptionDetailsCase().equals(STATEMACHINEEXCEPTION)) {
       StateMachineExceptionProto smeProto = replyProto.getStateMachineException();
@@ -130,7 +129,7 @@ public class ClientProtoUtils {
           smeProto.getStacktrace());
     }
     return new RaftClientReply(new ClientId(rp.getRequestorId().toByteArray()),
-        new RaftPeerId(rp.getReplyId()),
+        RaftPeerId.valueOf(rp.getReplyId()),
         rp.getCallId(), rp.getSuccess(), toMessage(replyProto.getMessage()), e);
   }
 
@@ -171,7 +170,7 @@ public class ClientProtoUtils {
     final RaftPeer[] peers = ProtoUtils.toRaftPeerArray(p.getPeersList());
     return new SetConfigurationRequest(
         new ClientId(m.getRequestorId().toByteArray()),
-        new RaftPeerId(m.getReplyId()),
+        RaftPeerId.valueOf(m.getReplyId()),
         p.getRpcRequest().getCallId(), peers);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
index dff355e..3fe3d0e 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
@@ -22,31 +22,44 @@ import org.apache.ratis.util.Preconditions;
 
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
+import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * Id of Raft Peer. Should be globally unique.
+ * Id of Raft Peer which is globally unique.
  */
 public class RaftPeerId {
+  private static final Map<ByteString, RaftPeerId> byteStringMap = new ConcurrentHashMap<>();
+  private static final Map<String, RaftPeerId> stringMap = new ConcurrentHashMap<>();
+
+  public static RaftPeerId valueOf(ByteString id) {
+    return byteStringMap.computeIfAbsent(id,
+        key -> new RaftPeerId(key.toByteArray()));
+  }
+
+  public static RaftPeerId valueOf(String id) {
+    return stringMap.computeIfAbsent(id, key -> new RaftPeerId(key));
+  }
+
   public static RaftPeerId getRaftPeerId(String id) {
-    return id == null || id.isEmpty() ? null : new RaftPeerId(id);
+    return id == null || id.isEmpty() ? null : RaftPeerId.valueOf(id);
   }
 
   /** UTF-8 string as id */
+  private final String idString;
+  /** The corresponding bytes of {@link #idString}. */
   private final byte[] id;
 
-  public RaftPeerId(String id) {
-    Objects.requireNonNull(id, "id == null");
+  private RaftPeerId(String id) {
+    this.idString = Objects.requireNonNull(id, "id == null");
     Preconditions.assertTrue(!id.isEmpty(), "id is an empty string.");
     this.id = id.getBytes(StandardCharsets.UTF_8);
   }
-
-  public RaftPeerId(byte[] id) {
-    this.id = id;
-  }
-
-  public RaftPeerId(ByteString id) {
-    this(id.toByteArray());
+  private RaftPeerId(byte[] id) {
+    this.id = Objects.requireNonNull(id, "id == null");
+    Preconditions.assertTrue(id.length > 0, "id is an empty array.");
+    this.idString = new String(id, StandardCharsets.UTF_8);
   }
 
   /**
@@ -58,7 +71,7 @@ public class RaftPeerId {
 
   @Override
   public String toString() {
-    return new String(id, StandardCharsets.UTF_8);
+    return idString;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java b/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
index d694d7e..527c4e8 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
@@ -80,7 +80,7 @@ public class ProtoUtils {
   }
 
   public static RaftPeer toRaftPeer(RaftPeerProto p) {
-    return new RaftPeer(new RaftPeerId(p.getId()), p.getAddress());
+    return new RaftPeer(RaftPeerId.valueOf(p.getId()), p.getAddress());
   }
 
   public static RaftPeer[] toRaftPeerArray(List<RaftPeerProto> protos) {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-examples/src/test/java/org/apache/ratis/TestBatchAppend.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/test/java/org/apache/ratis/TestBatchAppend.java b/ratis-examples/src/test/java/org/apache/ratis/TestBatchAppend.java
index b494b67..0cd863b 100644
--- a/ratis-examples/src/test/java/org/apache/ratis/TestBatchAppend.java
+++ b/ratis-examples/src/test/java/org/apache/ratis/TestBatchAppend.java
@@ -21,15 +21,14 @@ import org.apache.log4j.Level;
 import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.util.LogUtils;
-import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.examples.RaftExamplesTestUtil;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerImpl;
-import org.apache.ratis.server.simulation.RequestHandler;
 import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
 import org.apache.ratis.statemachine.StateMachine;
+import org.apache.ratis.util.LogUtils;
+import org.apache.ratis.util.SizeInBytes;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Rule;
@@ -57,7 +56,6 @@ public class TestBatchAppend {
   static Logger LOG = LoggerFactory.getLogger(TestBatchAppend.class);
   static {
     LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
-    LogUtils.setLogLevel(RequestHandler.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftClient.LOG, Level.DEBUG);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-examples/src/test/java/org/apache/ratis/TestRestartRaftPeer.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/test/java/org/apache/ratis/TestRestartRaftPeer.java b/ratis-examples/src/test/java/org/apache/ratis/TestRestartRaftPeer.java
index b5a92c2..62f325f 100644
--- a/ratis-examples/src/test/java/org/apache/ratis/TestRestartRaftPeer.java
+++ b/ratis-examples/src/test/java/org/apache/ratis/TestRestartRaftPeer.java
@@ -21,16 +21,15 @@ import org.apache.log4j.Level;
 import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.util.LogUtils;
-import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.examples.RaftExamplesTestUtil;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerImpl;
-import org.apache.ratis.server.simulation.RequestHandler;
 import org.apache.ratis.server.storage.RaftLog;
 import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
 import org.apache.ratis.statemachine.StateMachine;
+import org.apache.ratis.util.LogUtils;
+import org.apache.ratis.util.SizeInBytes;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
@@ -53,7 +52,6 @@ public class TestRestartRaftPeer {
   static {
     LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftLog.LOG, Level.DEBUG);
-    LogUtils.setLogLevel(RequestHandler.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftClient.LOG, Level.DEBUG);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-examples/src/test/java/org/apache/ratis/statemachine/TestRaftStateMachineException.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/test/java/org/apache/ratis/statemachine/TestRaftStateMachineException.java b/ratis-examples/src/test/java/org/apache/ratis/statemachine/TestRaftStateMachineException.java
index f049cda..b16bf67 100644
--- a/ratis-examples/src/test/java/org/apache/ratis/statemachine/TestRaftStateMachineException.java
+++ b/ratis-examples/src/test/java/org/apache/ratis/statemachine/TestRaftStateMachineException.java
@@ -23,15 +23,10 @@ import org.apache.ratis.RaftTestUtil;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.examples.RaftExamplesTestUtil;
-import org.apache.ratis.protocol.Message;
-import org.apache.ratis.protocol.RaftClientReply;
-import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.*;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.server.impl.RetryCache;
-import org.apache.ratis.server.simulation.RequestHandler;
 import org.apache.ratis.server.storage.RaftLog;
 import org.apache.ratis.util.LogUtils;
 import org.junit.Assert;
@@ -54,7 +49,6 @@ public class TestRaftStateMachineException {
   static {
     LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftLog.LOG, Level.DEBUG);
-    LogUtils.setLogLevel(RequestHandler.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftClient.LOG, Level.DEBUG);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-grpc/src/main/java/org/apache/ratis/grpc/RaftGRpcService.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/RaftGRpcService.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/RaftGRpcService.java
index 252dc51..0deb3f4 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/RaftGRpcService.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/RaftGRpcService.java
@@ -147,7 +147,7 @@ public class RaftGRpcService implements RaftServerRpc {
         null, request);
 
     RaftServerProtocolClient target = Objects.requireNonNull(
-        peers.get(new RaftPeerId(request.getServerRequest().getReplyId())));
+        peers.get(RaftPeerId.valueOf(request.getServerRequest().getReplyId())));
     return target.requestVote(request);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
index ae8bf37..e31a03a 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
@@ -32,10 +32,12 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.protocol.RaftServerProtocol;
 import org.apache.ratis.shaded.com.google.protobuf.BlockingService;
+import org.apache.ratis.shaded.com.google.protobuf.ByteString;
 import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
 import org.apache.ratis.shaded.proto.RaftProtos.*;
 import org.apache.ratis.shaded.proto.hadoop.HadoopProtos.RaftClientProtocolService;
 import org.apache.ratis.shaded.proto.hadoop.HadoopProtos.RaftServerProtocolService;
+import org.apache.ratis.util.CheckedFunction;
 import org.apache.ratis.util.CodeInjectionForTesting;
 import org.apache.ratis.util.PeerProxyMap;
 import org.apache.ratis.util.ProtoUtils;
@@ -159,43 +161,34 @@ public class HadoopRpcService implements RaftServerRpc {
   @Override
   public AppendEntriesReplyProto appendEntries(
       AppendEntriesRequestProto request) throws IOException {
-    CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request);
-
-    final RaftServerProtocolPB proxy = proxies.getProxy(
-        new RaftPeerId(request.getServerRequest().getReplyId()))
-        .getProtocol();
-    try {
-      return proxy.appendEntries(null, request);
-    } catch (ServiceException se) {
-      throw ProtoUtils.toIOException(se);
-    }
+    return processRequest(request, request.getServerRequest().getReplyId(),
+        proxy -> proxy.appendEntries(null, request));
   }
 
   @Override
   public InstallSnapshotReplyProto installSnapshot(
       InstallSnapshotRequestProto request) throws IOException {
-    CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request);
-
-    final RaftServerProtocolPB proxy = proxies.getProxy(
-        new RaftPeerId(request.getServerRequest().getReplyId()))
-        .getProtocol();
-    try {
-      return proxy.installSnapshot(null, request);
-    } catch (ServiceException se) {
-      throw ProtoUtils.toIOException(se);
-    }
+    return processRequest(request, request.getServerRequest().getReplyId(),
+        proxy -> proxy.installSnapshot(null, request));
   }
 
   @Override
   public RequestVoteReplyProto requestVote(
       RequestVoteRequestProto request) throws IOException {
+    return processRequest(request, request.getServerRequest().getReplyId(),
+        proxy -> proxy.requestVote(null, request));
+  }
+
+  private <REQUEST, REPLY> REPLY processRequest(
+      REQUEST request, ByteString replyId,
+      CheckedFunction<RaftServerProtocolPB, REPLY, ServiceException> f)
+      throws IOException {
     CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request);
 
     final RaftServerProtocolPB proxy = proxies.getProxy(
-        new RaftPeerId(request.getServerRequest().getReplyId()))
-        .getProtocol();
+        RaftPeerId.valueOf(replyId)).getProtocol();
     try {
-      return proxy.requestVote(null, request);
+      return f.apply(proxy);
     } catch (ServiceException se) {
       throw ProtoUtils.toIOException(se);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
----------------------------------------------------------------------
diff --git a/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java b/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
index fea39c5..9504241 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
@@ -262,7 +262,7 @@ public final class NettyRpcService implements RaftServerRpc {
   private RaftNettyServerReplyProto sendRaftNettyServerRequestProto(
       RaftRpcRequestProto request, RaftNettyServerRequestProto proto)
       throws IOException {
-    final RaftPeerId id = new RaftPeerId(request.getReplyId());
+    final RaftPeerId id = RaftPeerId.valueOf(request.getReplyId());
     final NettyRpcProxy p = proxies.getProxy(id);
     try {
       return p.send(request, proto);

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
index d5d5eb0..8b8e4ff 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
@@ -221,7 +221,7 @@ class LeaderElection extends Daemon {
               exceptions, r.getTerm());
         }
         if (r.getServerReply().getSuccess()) {
-          votedPeers.add(new RaftPeerId(r.getServerReply().getReplyId()));
+          votedPeers.add(RaftPeerId.valueOf(r.getServerReply().getReplyId()));
           if (conf.hasMajority(votedPeers, server.getId())) {
             return logAndReturn(Result.PASSED, responses, exceptions, -1);
           }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
----------------------------------------------------------------------
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 ccc8c72..d62b207 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
@@ -544,7 +544,7 @@ public class RaftServerImpl implements RaftServerProtocol,
   public RequestVoteReplyProto requestVote(RequestVoteRequestProto r)
       throws IOException {
     final RaftPeerId candidateId =
-        new RaftPeerId(r.getServerRequest().getRequestorId());
+        RaftPeerId.valueOf(r.getServerRequest().getRequestorId());
     return requestVote(candidateId, r.getCandidateTerm(),
         ServerProtoUtils.toTermIndex(r.getCandidateLastEntry()));
   }
@@ -628,7 +628,7 @@ public class RaftServerImpl implements RaftServerProtocol,
         .toArray(new LogEntryProto[r.getEntriesCount()]);
     final TermIndex previous = r.hasPreviousLog() ?
         ServerProtoUtils.toTermIndex(r.getPreviousLog()) : null;
-    return appendEntries(new RaftPeerId(r.getServerRequest().getRequestorId()),
+    return appendEntries(RaftPeerId.valueOf(r.getServerRequest().getRequestorId()),
         r.getLeaderTerm(), previous, r.getLeaderCommit(), r.getInitializing(),
         entries);
   }
@@ -749,8 +749,8 @@ public class RaftServerImpl implements RaftServerProtocol,
   @Override
   public InstallSnapshotReplyProto installSnapshot(
       InstallSnapshotRequestProto request) throws IOException {
-    final RaftPeerId leaderId =
-        new RaftPeerId(request.getServerRequest().getRequestorId());
+    final RaftPeerId leaderId = RaftPeerId.valueOf(
+        request.getServerRequest().getRequestorId());
     CodeInjectionForTesting.execute(INSTALL_SNAPSHOT, getId(),
         leaderId, request);
     LOG.debug("{}: receive installSnapshot({})", getId(), request);

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java b/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java
index 577560f..ef0e454 100644
--- a/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java
+++ b/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java
@@ -100,7 +100,7 @@ public abstract class MiniRaftCluster {
   public static RaftConfiguration initConfiguration(Collection<String> ids) {
     return RaftConfiguration.newBuilder()
         .setConf(ids.stream()
-            .map(id -> new RaftPeerId(id))
+            .map(id -> RaftPeerId.valueOf(id))
             .map(id -> new RaftPeer(id, NetUtils.createLocalServerAddress()))
             .collect(Collectors.toList()))
         .build();
@@ -255,7 +255,7 @@ public abstract class MiniRaftCluster {
 
     // create and add new RaftServers
     final Collection<RaftServerProxy> newServers = putNewServers(
-        CollectionUtils.as(Arrays.asList(ids), RaftPeerId::new), true);
+        CollectionUtils.as(Arrays.asList(ids), RaftPeerId::valueOf), true);
     newServers.forEach(s -> startServer(s, startNewPeer));
 
     final Collection<RaftPeer> newPeers = toRaftPeers(newServers);

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/test/java/org/apache/ratis/RaftNotLeaderExceptionBaseTest.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftNotLeaderExceptionBaseTest.java b/ratis-server/src/test/java/org/apache/ratis/RaftNotLeaderExceptionBaseTest.java
index d60f8eb..fe38778 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftNotLeaderExceptionBaseTest.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftNotLeaderExceptionBaseTest.java
@@ -22,13 +22,8 @@ import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.protocol.RaftClientReply;
-import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.protocol.RaftPeer;
-import org.apache.ratis.protocol.RaftPeerId;
+import org.apache.ratis.protocol.*;
 import org.apache.ratis.server.impl.RaftServerImpl;
-import org.apache.ratis.server.simulation.RequestHandler;
 import org.apache.ratis.server.storage.RaftLog;
 import org.apache.ratis.util.LogUtils;
 import org.junit.*;
@@ -46,7 +41,6 @@ public abstract class RaftNotLeaderExceptionBaseTest {
   static {
     LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftLog.LOG, Level.DEBUG);
-    LogUtils.setLogLevel(RequestHandler.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftClient.LOG, Level.DEBUG);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
index 13801a4..8dd5ae8 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
@@ -17,21 +17,6 @@
  */
 package org.apache.ratis.server.impl;
 
-import static java.util.Arrays.asList;
-import static org.apache.ratis.MiniRaftCluster.leaderPlaceHolderDelay;
-import static org.apache.ratis.MiniRaftCluster.logSyncDelay;
-import static org.apache.ratis.server.impl.RaftServerConstants.DEFAULT_CALLID;
-import static org.apache.ratis.server.impl.RaftServerTestUtil.waitAndCheckNewConf;
-import static org.apache.ratis.shaded.proto.RaftProtos.LogEntryProto.LogEntryBodyCase.CONFIGURATIONENTRY;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-
 import org.apache.log4j.Level;
 import org.apache.ratis.MiniRaftCluster;
 import org.apache.ratis.MiniRaftCluster.PeerChanges;
@@ -40,18 +25,9 @@ import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.protocol.LeaderNotReadyException;
-import org.apache.ratis.protocol.RaftClientReply;
-import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.protocol.RaftPeer;
-import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.ReconfigurationInProgressException;
-import org.apache.ratis.protocol.ReconfigurationTimeoutException;
-import org.apache.ratis.protocol.SetConfigurationRequest;
+import org.apache.ratis.protocol.*;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.protocol.TermIndex;
-import org.apache.ratis.server.simulation.RequestHandler;
 import org.apache.ratis.server.storage.RaftLog;
 import org.apache.ratis.util.LogUtils;
 import org.junit.Assert;
@@ -61,10 +37,24 @@ import org.mockito.internal.util.reflection.Whitebox;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+
+import static java.util.Arrays.asList;
+import static org.apache.ratis.MiniRaftCluster.leaderPlaceHolderDelay;
+import static org.apache.ratis.MiniRaftCluster.logSyncDelay;
+import static org.apache.ratis.server.impl.RaftServerConstants.DEFAULT_CALLID;
+import static org.apache.ratis.server.impl.RaftServerTestUtil.waitAndCheckNewConf;
+import static org.apache.ratis.shaded.proto.RaftProtos.LogEntryProto.LogEntryBodyCase.CONFIGURATIONENTRY;
+
 public abstract class RaftReconfigurationBaseTest {
   static {
     LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
-    LogUtils.setLogLevel(RequestHandler.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftClient.LOG, Level.DEBUG);
   }
   static final Logger LOG = LoggerFactory.getLogger(RaftReconfigurationBaseTest.class);

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/test/java/org/apache/ratis/server/storage/TestCacheEviction.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/storage/TestCacheEviction.java b/ratis-server/src/test/java/org/apache/ratis/server/storage/TestCacheEviction.java
index 6df8cf7..92885f5 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/storage/TestCacheEviction.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/storage/TestCacheEviction.java
@@ -151,7 +151,7 @@ public class TestCacheEviction {
         SimpleStateMachine4Testing.class, StateMachine.class);
     RaftServerConfigKeys.Log.setSegmentSizeMax(prop, SizeInBytes.valueOf("8KB"));
     RaftServerConfigKeys.Log.setPreallocatedSize(prop, SizeInBytes.valueOf("8KB"));
-    final RaftPeerId peerId = new RaftPeerId("s0");
+    final RaftPeerId peerId = RaftPeerId.valueOf("s0");
     final int maxCachedNum = RaftServerConfigKeys.Log.maxCachedSegmentNum(prop);
 
     File storageDir = RaftTestUtil.getTestDir(TestSegmentedRaftLog.class);

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/test/java/org/apache/ratis/server/storage/TestSegmentedRaftLog.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/storage/TestSegmentedRaftLog.java b/ratis-server/src/test/java/org/apache/ratis/server/storage/TestSegmentedRaftLog.java
index 1c49e70..1db2fe5 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/storage/TestSegmentedRaftLog.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/storage/TestSegmentedRaftLog.java
@@ -50,7 +50,7 @@ public class TestSegmentedRaftLog {
     LogUtils.setLogLevel(RaftLogWorker.LOG, Level.DEBUG);
   }
 
-  private static final RaftPeerId peerId = new RaftPeerId("s0");
+  private static final RaftPeerId peerId = RaftPeerId.valueOf("s0");
   private static final ClientId clientId = ClientId.createId();
   private static final long callId = 0;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/291f51b4/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java b/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
index cf2edff..1db5821 100644
--- a/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
+++ b/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
@@ -30,7 +30,6 @@ import org.apache.ratis.protocol.SetConfigurationRequest;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
-import org.apache.ratis.server.simulation.RequestHandler;
 import org.apache.ratis.server.storage.RaftLog;
 import org.apache.ratis.server.storage.RaftStorageDirectory;
 import org.apache.ratis.server.storage.RaftStorageDirectory.LogPathAndIndex;
@@ -53,7 +52,6 @@ public abstract class RaftSnapshotBaseTest {
   static {
     LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftLog.LOG, Level.DEBUG);
-    LogUtils.setLogLevel(RequestHandler.LOG, Level.DEBUG);
     LogUtils.setLogLevel(RaftClient.LOG, Level.DEBUG);
   }