You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sz...@apache.org on 2017/10/24 19:41:50 UTC

incubator-ratis git commit: RATIS-120. In RaftClient.Builder, allow clientRpc to be initialized automatically.

Repository: incubator-ratis
Updated Branches:
  refs/heads/master 96c470d88 -> 55764cc24


RATIS-120. In RaftClient.Builder, allow clientRpc to be initialized automatically.


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

Branch: refs/heads/master
Commit: 55764cc24c5dc5a35df29a8c23fcdf787c1bb8a3
Parents: 96c470d
Author: Tsz-Wo Nicholas Sze <sz...@hortonworks.com>
Authored: Fri Oct 13 15:38:12 2017 -0700
Committer: Tsz-Wo Nicholas Sze <sz...@hortonworks.com>
Committed: Fri Oct 13 15:38:12 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/ratis/client/ClientFactory.java |  3 ++-
 .../java/org/apache/ratis/client/RaftClient.java    | 16 ++++++++++++++++
 .../java/org/apache/ratis/client/RaftClientRpc.java |  3 ---
 .../ratis/client/impl/RaftClientRpcWithProxy.java   |  5 -----
 .../java/org/apache/ratis/util/PeerProxyMap.java    | 12 +++++-------
 .../java/org/apache/ratis/grpc/GrpcFactory.java     |  5 +++--
 .../apache/ratis/grpc/client/AppendStreamer.java    |  3 +--
 .../org/apache/ratis/grpc/client/GrpcClientRpc.java |  4 ++--
 .../org/apache/ratis/hadooprpc/HadoopFactory.java   |  5 +++--
 .../ratis/hadooprpc/client/HadoopClientRpc.java     |  4 ++--
 .../ratis/hadooprpc/server/HadoopRpcService.java    |  3 +--
 .../java/org/apache/ratis/netty/NettyFactory.java   |  5 +++--
 .../java/org/apache/ratis/netty/NettyRpcProxy.java  |  4 ++++
 .../apache/ratis/netty/client/NettyClientRpc.java   |  4 ++--
 .../apache/ratis/netty/server/NettyRpcService.java  |  4 ++--
 .../test/java/org/apache/ratis/MiniRaftCluster.java | 15 ++-------------
 .../ratis/server/simulation/SimulatedClientRpc.java |  5 -----
 .../ratis/server/simulation/SimulatedRpc.java       |  3 ++-
 18 files changed, 50 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-client/src/main/java/org/apache/ratis/client/ClientFactory.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/ClientFactory.java b/ratis-client/src/main/java/org/apache/ratis/client/ClientFactory.java
index 6407ba8..0aa4827 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/ClientFactory.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/ClientFactory.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ratis.client;
 
+import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.rpc.RpcFactory;
 
 /** A factory interface for creating client components. */
@@ -31,5 +32,5 @@ public interface ClientFactory extends RpcFactory {
   }
 
   /** Create a {@link RaftClientRpc}. */
-  RaftClientRpc newRaftClientRpc();
+  RaftClientRpc newRaftClientRpc(ClientId clientId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java b/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
index f1fbeb0..4251931 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
@@ -17,8 +17,11 @@
  */
 package org.apache.ratis.client;
 
+import org.apache.ratis.RaftConfigKeys;
 import org.apache.ratis.client.impl.ClientImplUtils;
+import org.apache.ratis.conf.Parameters;
 import org.apache.ratis.conf.RaftProperties;
+import org.apache.ratis.rpc.RpcType;
 import org.apache.ratis.util.TimeDuration;
 import org.apache.ratis.protocol.*;
 import org.slf4j.Logger;
@@ -70,6 +73,7 @@ public interface RaftClient extends Closeable {
     private RaftPeerId leaderId;
     private RaftProperties properties;
     private TimeDuration retryInterval = RaftClientConfigKeys.Rpc.TIMEOUT_DEFAULT;
+    private Parameters parameters;
 
     private Builder() {}
 
@@ -80,6 +84,12 @@ public interface RaftClient extends Closeable {
       }
       if (properties != null) {
         retryInterval = RaftClientConfigKeys.Rpc.timeout(properties);
+
+        if (clientRpc == null) {
+          final RpcType rpcType = RaftConfigKeys.Rpc.type(properties);
+          final ClientFactory factory = ClientFactory.cast(rpcType.newFactory(parameters));
+          clientRpc = factory.newRaftClientRpc(clientId);
+        }
       }
       return ClientImplUtils.newRaftClient(clientId,
           Objects.requireNonNull(group, "The 'group' field is not initialized."),
@@ -117,5 +127,11 @@ public interface RaftClient extends Closeable {
       this.properties = properties;
       return this;
     }
+
+    /** Set {@link Parameters}. */
+    public Builder setParameters(Parameters parameters) {
+      this.parameters = parameters;
+      return this;
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-client/src/main/java/org/apache/ratis/client/RaftClientRpc.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/RaftClientRpc.java b/ratis-client/src/main/java/org/apache/ratis/client/RaftClientRpc.java
index afe058c..90e9570 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/RaftClientRpc.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/RaftClientRpc.java
@@ -27,9 +27,6 @@ import org.apache.ratis.protocol.RaftPeerId;
 
 /** The client side rpc of a raft service. */
 public interface RaftClientRpc extends Closeable {
-  /** Set the client name */
-  void setName(String name);
-
   /** Send a request. */
   RaftClientReply sendRequest(RaftClientRequest request) throws IOException;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientRpcWithProxy.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientRpcWithProxy.java b/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientRpcWithProxy.java
index 4294249..835a876 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientRpcWithProxy.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientRpcWithProxy.java
@@ -43,11 +43,6 @@ public abstract class RaftClientRpcWithProxy<PROXY extends Closeable>
   }
 
   @Override
-  public void setName(String name) {
-    proxies.setName(name);
-  }
-
-  @Override
   public void addServers(Iterable<RaftPeer> servers) {
     proxies.addPeers(servers);
   }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java b/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
index 856e98e..6e18f23 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
@@ -74,22 +74,20 @@ public class PeerProxyMap<PROXY extends Closeable> implements Closeable {
     }
   }
 
-  private volatile String name;
+  private final String name;
   private final Map<RaftPeerId, PeerAndProxy> peers = new ConcurrentHashMap<>();
   private final Object resetLock = new Object();
 
   private final CheckedFunction<RaftPeer, PROXY, IOException> createProxy;
 
-  public PeerProxyMap(CheckedFunction<RaftPeer, PROXY, IOException> createProxy) {
+  public PeerProxyMap(String name, CheckedFunction<RaftPeer, PROXY, IOException> createProxy) {
+    this.name = name;
     this.createProxy = createProxy;
   }
 
-  public PeerProxyMap() {
-    this.createProxy = this::createProxyImpl;
-  }
-
-  public void setName(String name) {
+  public PeerProxyMap(String name) {
     this.name = name;
+    this.createProxy = this::createProxyImpl;
   }
 
   public PROXY getProxy(RaftPeerId id) throws IOException {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcFactory.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcFactory.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcFactory.java
index 16f5c1b..3d00952 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcFactory.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcFactory.java
@@ -21,6 +21,7 @@ import org.apache.ratis.client.ClientFactory;
 import org.apache.ratis.conf.Parameters;
 import org.apache.ratis.grpc.client.GrpcClientRpc;
 import org.apache.ratis.grpc.server.GRpcLogAppender;
+import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.*;
@@ -47,7 +48,7 @@ public class GrpcFactory implements ServerFactory, ClientFactory {
   }
 
   @Override
-  public GrpcClientRpc newRaftClientRpc() {
-    return new GrpcClientRpc();
+  public GrpcClientRpc newRaftClientRpc(ClientId clientId) {
+    return new GrpcClientRpc(clientId);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/AppendStreamer.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/AppendStreamer.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/AppendStreamer.java
index 4bd3fe0..1eba386 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/AppendStreamer.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/AppendStreamer.java
@@ -94,9 +94,8 @@ public class AppendStreamer implements Closeable {
     this.groupId = group.getGroupId();
     this.peers = group.getPeers().stream().collect(
         Collectors.toMap(RaftPeer::getId, Function.identity()));
-    proxyMap = new PeerProxyMap<>(
+    proxyMap = new PeerProxyMap<>(clientId.toString(),
         raftPeer -> new RaftClientProtocolProxy(raftPeer, ResponseHandler::new));
-    proxyMap.setName(clientId.toString());
     proxyMap.addPeers(group.getPeers());
     refreshLeaderProxy(leaderId, null);
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
index 23ac7b8..d7ae284 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
@@ -42,8 +42,8 @@ import static org.apache.ratis.client.impl.ClientProtoUtils.*;
 public class GrpcClientRpc extends RaftClientRpcWithProxy<RaftClientProtocolClient> {
   public static final Logger LOG = LoggerFactory.getLogger(GrpcClientRpc.class);
 
-  public GrpcClientRpc() {
-    super(new PeerProxyMap<>(RaftClientProtocolClient::new));
+  public GrpcClientRpc(ClientId clientId) {
+    super(new PeerProxyMap<>(clientId.toString(), RaftClientProtocolClient::new));
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/HadoopFactory.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/HadoopFactory.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/HadoopFactory.java
index 75fe363..8f8bc99 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/HadoopFactory.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/HadoopFactory.java
@@ -22,6 +22,7 @@ import org.apache.ratis.client.ClientFactory;
 import org.apache.ratis.conf.Parameters;
 import org.apache.ratis.hadooprpc.client.HadoopClientRpc;
 import org.apache.ratis.hadooprpc.server.HadoopRpcService;
+import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.ServerFactory;
@@ -61,7 +62,7 @@ public class HadoopFactory extends ServerFactory.BaseFactory implements ClientFa
   }
 
   @Override
-  public HadoopClientRpc newRaftClientRpc() {
-    return new HadoopClientRpc(getConf());
+  public HadoopClientRpc newRaftClientRpc(ClientId clientId) {
+    return new HadoopClientRpc(clientId, getConf());
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
index 83f4869..9c7cdf9 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
@@ -26,8 +26,8 @@ import org.apache.ratis.util.PeerProxyMap;
 import java.io.IOException;
 
 public class HadoopClientRpc extends RaftClientRpcWithProxy<CombinedClientProtocolClientSideTranslatorPB> {
-  public HadoopClientRpc(final Configuration conf) {
-    super(new PeerProxyMap<>(
+  public HadoopClientRpc(ClientId clientId, Configuration conf) {
+    super(new PeerProxyMap<>(clientId.toString(),
         p -> new CombinedClientProtocolClientSideTranslatorPB(p.getAddress(), conf)));
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/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 0512e8c..1fea9ff 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
@@ -92,9 +92,8 @@ public class HadoopRpcService implements RaftServerRpc {
 
   private HadoopRpcService(RaftServer server, final Configuration conf) {
     this.id = server.getId();
-    this.proxies = new PeerProxyMap<>(
+    this.proxies = new PeerProxyMap<>(id.toString(),
         p -> new Proxy<>(RaftServerProtocolPB.class, p.getAddress(), conf));
-    this.proxies.setName(id.toString());
     try {
       this.ipcServer = newRpcServer(server, conf);
     } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-netty/src/main/java/org/apache/ratis/netty/NettyFactory.java
----------------------------------------------------------------------
diff --git a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyFactory.java b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyFactory.java
index b53e94a..f7010c9 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyFactory.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyFactory.java
@@ -21,6 +21,7 @@ import org.apache.ratis.client.ClientFactory;
 import org.apache.ratis.conf.Parameters;
 import org.apache.ratis.netty.client.NettyClientRpc;
 import org.apache.ratis.netty.server.NettyRpcService;
+import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.ServerFactory;
@@ -39,7 +40,7 @@ public class NettyFactory extends ServerFactory.BaseFactory implements ClientFac
   }
 
   @Override
-  public NettyClientRpc newRaftClientRpc() {
-    return new NettyClientRpc();
+  public NettyClientRpc newRaftClientRpc(ClientId clientId) {
+    return new NettyClientRpc(clientId);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-netty/src/main/java/org/apache/ratis/netty/NettyRpcProxy.java
----------------------------------------------------------------------
diff --git a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyRpcProxy.java b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyRpcProxy.java
index 5b3492b..20521b6 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyRpcProxy.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyRpcProxy.java
@@ -45,6 +45,10 @@ public class NettyRpcProxy implements Closeable {
   public static class PeerMap extends PeerProxyMap<NettyRpcProxy> {
     private final EventLoopGroup group = new NioEventLoopGroup();
 
+    public PeerMap(String name) {
+      super(name);
+    }
+
     @Override
     public NettyRpcProxy createProxyImpl(RaftPeer peer)
         throws IOException {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-netty/src/main/java/org/apache/ratis/netty/client/NettyClientRpc.java
----------------------------------------------------------------------
diff --git a/ratis-netty/src/main/java/org/apache/ratis/netty/client/NettyClientRpc.java b/ratis-netty/src/main/java/org/apache/ratis/netty/client/NettyClientRpc.java
index 1526725..703e040 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/client/NettyClientRpc.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/client/NettyClientRpc.java
@@ -31,8 +31,8 @@ import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerRequestPro
 import java.io.IOException;
 
 public class NettyClientRpc extends RaftClientRpcWithProxy<NettyRpcProxy> {
-  public NettyClientRpc() {
-    super(new NettyRpcProxy.PeerMap());
+  public NettyClientRpc(ClientId clientId) {
+    super(new NettyRpcProxy.PeerMap(clientId.toString()));
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/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 6e9448a..8089821 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
@@ -84,7 +84,7 @@ public final class NettyRpcService implements RaftServerRpc {
   private final EventLoopGroup workerGroup = new NioEventLoopGroup();
   private final ChannelFuture channelFuture;
 
-  private final NettyRpcProxy.PeerMap proxies = new NettyRpcProxy.PeerMap();
+  private final NettyRpcProxy.PeerMap proxies;
 
   @ChannelHandler.Sharable
   class InboundHandler extends SimpleChannelInboundHandler<RaftNettyServerRequestProto> {
@@ -99,7 +99,7 @@ public final class NettyRpcService implements RaftServerRpc {
   private NettyRpcService(RaftServer server) {
     this.server = server;
     this.id = server.getId();
-    this.proxies.setName(id.toString());
+    this.proxies = new NettyRpcProxy.PeerMap(id.toString());
 
     final ChannelInitializer<SocketChannel> initializer
         = new ChannelInitializer<SocketChannel>() {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/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 b5cdaef..a7a9412 100644
--- a/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java
+++ b/ratis-server/src/test/java/org/apache/ratis/MiniRaftCluster.java
@@ -17,16 +17,13 @@
  */
 package org.apache.ratis;
 
-import org.apache.ratis.client.ClientFactory;
 import org.apache.ratis.client.RaftClient;
-import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.conf.Parameters;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.rpc.RpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.BlockRequestHandlingInjection;
@@ -127,7 +124,6 @@ public abstract class MiniRaftCluster {
     return ids;
   }
 
-  protected final ClientFactory clientFactory;
   protected RaftGroup group;
   protected final RaftProperties properties;
   protected final Parameters parameters;
@@ -138,10 +134,6 @@ public abstract class MiniRaftCluster {
     this.properties = new RaftProperties(properties);
     this.parameters = parameters;
 
-    final RpcType rpcType = RaftConfigKeys.Rpc.type(properties);
-    this.clientFactory = ClientFactory.cast(
-        rpcType.newFactory(parameters));
-
     ExitUtils.disableSystemExit();
   }
 
@@ -436,15 +428,12 @@ public abstract class MiniRaftCluster {
   }
 
   public RaftClient createClient(RaftPeerId leaderId, RaftGroup group) {
-    final RaftClientRpc rpc = clientFactory.newRaftClientRpc();
-    final RaftClient client = RaftClient.newBuilder()
+    return RaftClient.newBuilder()
         .setRaftGroup(group)
         .setLeaderId(leaderId)
-        .setClientRpc(rpc)
         .setProperties(properties)
+        .setParameters(parameters)
         .build();
-    rpc.setName(client.getId().toString());
-    return client;
   }
 
   public void shutdown() {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedClientRpc.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedClientRpc.java b/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedClientRpc.java
index cb28b3c..386d2e7 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedClientRpc.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedClientRpc.java
@@ -31,11 +31,6 @@ class SimulatedClientRpc
   }
 
   @Override
-  public void setName(String name) {
-    // do nothing
-  }
-
-  @Override
   public void addServers(Iterable<RaftPeer> servers) {
     // do nothing
   }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/55764cc2/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedRpc.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedRpc.java b/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedRpc.java
index abdc8cf..b6e0b1f 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedRpc.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/simulation/SimulatedRpc.java
@@ -19,6 +19,7 @@ package org.apache.ratis.server.simulation;
 
 import org.apache.ratis.client.ClientFactory;
 import org.apache.ratis.conf.Parameters;
+import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.rpc.RpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.ServerFactory;
@@ -69,7 +70,7 @@ class SimulatedRpc implements RpcType {
     }
 
     @Override
-    public SimulatedClientRpc newRaftClientRpc() {
+    public SimulatedClientRpc newRaftClientRpc(ClientId clientId) {
       return Objects.requireNonNull(client2serverRequestReply);
     }