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/16 13:21:58 UTC

[incubator-ratis] branch master updated: RATIS-1243. Create ratis-server-api module. (#357)

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 a8bddc5  RATIS-1243. Create ratis-server-api module. (#357)
a8bddc5 is described below

commit a8bddc5af3ba4b4c7db48de3b45f267993e51dc7
Author: Tsz-Wo Nicholas Sze <sz...@apache.org>
AuthorDate: Wed Dec 16 21:21:09 2020 +0800

    RATIS-1243. Create ratis-server-api module. (#357)
---
 pom.xml                                            |  7 ++++
 .../org/apache/ratis/grpc/server/GrpcService.java  | 13 ++++---
 .../ratis/hadooprpc/server/HadoopRpcService.java   | 11 +++---
 .../apache/ratis/netty/server/NettyRpcService.java | 12 +++----
 {ratis-server => ratis-server-api}/pom.xml         | 42 ++--------------------
 .../org/apache/ratis/server/DataStreamServer.java  |  0
 .../apache/ratis/server/DataStreamServerRpc.java   |  0
 .../java/org/apache/ratis/server/DivisionInfo.java |  2 +-
 .../apache/ratis/server/DivisionProperties.java    |  0
 .../org/apache/ratis/server/RaftConfiguration.java |  0
 .../apache/ratis/server/RaftServerConfigKeys.java  |  0
 .../org/apache/ratis/server/RaftServerMXBean.java  |  2 +-
 .../org/apache/ratis/server/RaftServerRpc.java     | 22 +-----------
 .../ratis/server/RaftServerRpcWithProxy.java       |  0
 .../java/org/apache/ratis/server/RetryCache.java   |  0
 .../apache/ratis/server/leader/FollowerInfo.java   |  0
 .../protocol/RaftServerAsynchronousProtocol.java   |  2 +-
 .../ratis/server/protocol/RaftServerProtocol.java  |  0
 .../apache/ratis/server/protocol/TermIndex.java    |  0
 .../ratis/server/raftlog/RaftLogIOException.java   |  0
 .../apache/ratis/server/raftlog/RaftLogIndex.java  |  2 +-
 ratis-server/pom.xml                               |  5 +++
 22 files changed, 36 insertions(+), 84 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8c34481..d7bc110 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,6 +73,7 @@
     <module>ratis-proto</module>
     <module>ratis-common</module>
     <module>ratis-client</module>
+    <module>ratis-server-api</module>
     <module>ratis-server</module>
     <module>ratis-resource-bundle</module>
     <module>ratis-grpc</module>
@@ -383,6 +384,12 @@
       </dependency>
 
       <dependency>
+        <artifactId>ratis-server-api</artifactId>
+        <groupId>org.apache.ratis</groupId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
         <artifactId>ratis-server</artifactId>
         <groupId>org.apache.ratis</groupId>
         <version>${project.version}</version>
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
index 0d0f72e..57500e7 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
@@ -26,7 +26,6 @@ import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
-import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.RaftServerRpcWithProxy;
 import org.apache.ratis.thirdparty.io.grpc.ServerInterceptors;
 import org.apache.ratis.thirdparty.io.grpc.netty.GrpcSslContexts;
@@ -47,26 +46,26 @@ import java.util.function.Supplier;
 
 import static org.apache.ratis.thirdparty.io.netty.handler.ssl.SslProvider.OPENSSL;
 
-/** A grpc implementation of {@link RaftServerRpc}. */
+/** A grpc implementation of {@link org.apache.ratis.server.RaftServerRpc}. */
 public final class GrpcService extends RaftServerRpcWithProxy<GrpcServerProtocolClient,
     PeerProxyMap<GrpcServerProtocolClient>> {
   static final Logger LOG = LoggerFactory.getLogger(GrpcService.class);
   public static final String GRPC_SEND_SERVER_REQUEST =
       JavaUtils.getClassSimpleName(GrpcService.class) + ".sendRequest";
 
-  public static final class Builder extends RaftServerRpc.Builder<Builder, GrpcService> {
+  public static final class Builder {
+    private RaftServer server;
     private GrpcTlsConfig tlsConfig;
 
     private Builder() {}
 
-    @Override
-    public Builder getThis() {
+    public Builder setServer(RaftServer raftServer) {
+      this.server = raftServer;
       return this;
     }
 
-    @Override
     public GrpcService build() {
-      return new GrpcService(getServer(), getTlsConfig());
+      return new GrpcService(server, getTlsConfig());
     }
 
     public Builder setTlsConfig(GrpcTlsConfig tlsConfig) {
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 8552765..a9ca1a9 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
@@ -37,7 +37,6 @@ import org.apache.ratis.proto.hadoop.HadoopCompatibilityProtos.ServerRequestProt
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
-import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.RaftServerRpcWithProxy;
 import org.apache.ratis.server.protocol.RaftServerProtocol;
 import com.google.protobuf.BlockingService;
@@ -61,7 +60,8 @@ public final class HadoopRpcService extends RaftServerRpcWithProxy<Proxy<RaftSer
   static final String CLASS_NAME = JavaUtils.getClassSimpleName(HadoopRpcService.class);
   public static final String SEND_SERVER_REQUEST = CLASS_NAME + ".sendServerRequest";
 
-  public static final class Builder extends RaftServerRpc.Builder<Builder, HadoopRpcService> {
+  public static final class Builder {
+    private RaftServer server;
     private Configuration conf;
 
     private Builder() {}
@@ -78,14 +78,13 @@ public final class HadoopRpcService extends RaftServerRpcWithProxy<Proxy<RaftSer
       return this;
     }
 
-    @Override
-    public Builder getThis() {
+    public Builder setServer(RaftServer raftServer) {
+      this.server = raftServer;
       return this;
     }
 
-    @Override
     public HadoopRpcService build() {
-      return new HadoopRpcService(getServer(), getConf());
+      return new HadoopRpcService(server, getConf());
     }
   }
 
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 7c4b1b3..8b9729f 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
@@ -26,7 +26,6 @@ import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
-import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.RaftServerRpcWithProxy;
 import org.apache.ratis.thirdparty.io.netty.bootstrap.ServerBootstrap;
 import org.apache.ratis.thirdparty.io.netty.channel.*;
@@ -62,17 +61,18 @@ public final class NettyRpcService extends RaftServerRpcWithProxy<NettyRpcProxy,
   static final String CLASS_NAME = JavaUtils.getClassSimpleName(NettyRpcService.class);
   public static final String SEND_SERVER_REQUEST = CLASS_NAME + ".sendServerRequest";
 
-  public static final class Builder extends RaftServerRpc.Builder<Builder, NettyRpcService> {
+  public static final class Builder {
+    private RaftServer server;
+
     private Builder() {}
 
-    @Override
-    public Builder getThis() {
+    public Builder setServer(RaftServer raftServer) {
+      this.server = raftServer;
       return this;
     }
 
-    @Override
     public NettyRpcService build() {
-      return new NettyRpcService(getServer());
+      return new NettyRpcService(server);
     }
   }
 
diff --git a/ratis-server/pom.xml b/ratis-server-api/pom.xml
similarity index 61%
copy from ratis-server/pom.xml
copy to ratis-server-api/pom.xml
index 646bc6e..fce56f2 100644
--- a/ratis-server/pom.xml
+++ b/ratis-server-api/pom.xml
@@ -20,8 +20,8 @@
     <version>1.1.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>ratis-server</artifactId>
-  <name>Apache Ratis Server</name>
+  <artifactId>ratis-server-api</artifactId>
+  <name>Apache Ratis Server API</name>
 
   <dependencies>
     <dependency>
@@ -37,23 +37,11 @@
       <artifactId>ratis-common</artifactId>
       <groupId>org.apache.ratis</groupId>
     </dependency>
-    <dependency>
-      <artifactId>ratis-common</artifactId>
-      <groupId>org.apache.ratis</groupId>
-      <scope>test</scope>
-      <type>test-jar</type>
-    </dependency>
 
     <dependency>
       <artifactId>ratis-client</artifactId>
       <groupId>org.apache.ratis</groupId>
     </dependency>
-    <dependency>
-      <artifactId>ratis-client</artifactId>
-      <groupId>org.apache.ratis</groupId>
-      <scope>test</scope>
-      <type>test-jar</type>
-    </dependency>
 
     <dependency>
       <groupId>org.slf4j</groupId>
@@ -63,31 +51,5 @@
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
     </dependency>
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ratis</groupId>
-      <artifactId>ratis-metrics</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ratis</groupId>
-      <artifactId>ratis-metrics</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 </project>
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/DataStreamServer.java b/ratis-server-api/src/main/java/org/apache/ratis/server/DataStreamServer.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/DataStreamServer.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/DataStreamServer.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/DataStreamServerRpc.java b/ratis-server-api/src/main/java/org/apache/ratis/server/DataStreamServerRpc.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/DataStreamServerRpc.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/DataStreamServerRpc.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/DivisionInfo.java b/ratis-server-api/src/main/java/org/apache/ratis/server/DivisionInfo.java
similarity index 97%
rename from ratis-server/src/main/java/org/apache/ratis/server/DivisionInfo.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/DivisionInfo.java
index 2be7018..f815924 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/DivisionInfo.java
+++ b/ratis-server-api/src/main/java/org/apache/ratis/server/DivisionInfo.java
@@ -23,7 +23,7 @@ import org.apache.ratis.proto.RaftProtos.RoleInfoProto;
 import org.apache.ratis.util.LifeCycle;
 
 /**
- * Information of a {@link RaftServer.Division}.
+ * Information of a raft server division.
  */
 public interface DivisionInfo {
   /** @return the current role of this server division. */
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/DivisionProperties.java b/ratis-server-api/src/main/java/org/apache/ratis/server/DivisionProperties.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/DivisionProperties.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/DivisionProperties.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/RaftConfiguration.java b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftConfiguration.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/RaftConfiguration.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/RaftConfiguration.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/RaftServerConfigKeys.java b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerConfigKeys.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/RaftServerConfigKeys.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerConfigKeys.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/RaftServerMXBean.java b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerMXBean.java
similarity index 99%
rename from ratis-server/src/main/java/org/apache/ratis/server/RaftServerMXBean.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerMXBean.java
index 70e5790..06499a1 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/RaftServerMXBean.java
+++ b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerMXBean.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
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/RaftServerRpc.java b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerRpc.java
similarity index 78%
rename from ratis-server/src/main/java/org/apache/ratis/server/RaftServerRpc.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerRpc.java
index 6172f1e..df434d3 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/RaftServerRpc.java
+++ b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerRpc.java
@@ -18,40 +18,20 @@
 package org.apache.ratis.server;
 
 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.protocol.RaftPeer;
 import org.apache.ratis.server.protocol.RaftServerProtocol;
 
 import java.io.Closeable;
 import java.io.IOException;
 import java.net.InetSocketAddress;
-import java.util.Objects;
 
 /**
  * An server-side interface for supporting different RPC implementations
  * such as Netty, gRPC and Hadoop.
  */
 public interface RaftServerRpc extends RaftServerProtocol, RpcType.Get, RaftPeer.Add, Closeable {
-  /** To build {@link RaftServerRpc} objects. */
-  abstract class Builder<B extends Builder, RPC extends RaftServerRpc> {
-    private RaftServer server;
-
-    public RaftServer getServer() {
-      return Objects.requireNonNull(server,
-          "The 'server' field is not initialized.");
-    }
-
-    public B setServer(RaftServer raftServer) {
-      this.server = raftServer;
-      return getThis();
-    }
-
-    protected abstract B getThis();
-
-    public abstract RPC build();
-  }
-
   /** Start the RPC service. */
   void start() throws IOException;
 
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/RaftServerRpcWithProxy.java b/ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerRpcWithProxy.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/RaftServerRpcWithProxy.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerRpcWithProxy.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/RetryCache.java b/ratis-server-api/src/main/java/org/apache/ratis/server/RetryCache.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/RetryCache.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/RetryCache.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/leader/FollowerInfo.java b/ratis-server-api/src/main/java/org/apache/ratis/server/leader/FollowerInfo.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/leader/FollowerInfo.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/leader/FollowerInfo.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/protocol/RaftServerAsynchronousProtocol.java b/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/RaftServerAsynchronousProtocol.java
similarity index 99%
rename from ratis-server/src/main/java/org/apache/ratis/server/protocol/RaftServerAsynchronousProtocol.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/protocol/RaftServerAsynchronousProtocol.java
index d13f7f5..2c7e1d5 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/protocol/RaftServerAsynchronousProtocol.java
+++ b/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/RaftServerAsynchronousProtocol.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
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/protocol/RaftServerProtocol.java b/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/RaftServerProtocol.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/protocol/RaftServerProtocol.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/protocol/RaftServerProtocol.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/protocol/TermIndex.java b/ratis-server-api/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/protocol/TermIndex.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java b/ratis-server-api/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
similarity index 100%
rename from ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIndex.java b/ratis-server-api/src/main/java/org/apache/ratis/server/raftlog/RaftLogIndex.java
similarity index 97%
rename from ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIndex.java
rename to ratis-server-api/src/main/java/org/apache/ratis/server/raftlog/RaftLogIndex.java
index 1241c5b..ed545e2 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIndex.java
+++ b/ratis-server-api/src/main/java/org/apache/ratis/server/raftlog/RaftLogIndex.java
@@ -25,7 +25,7 @@ import java.util.function.Consumer;
 import java.util.function.LongUnaryOperator;
 
 /**
- * Indices of {@link RaftLog} such as commit index, match index, etc.
+ * Indices of a raft log such as commit index, match index, etc.
  *
  * This class is thread safe.
  */
diff --git a/ratis-server/pom.xml b/ratis-server/pom.xml
index 646bc6e..3959e40 100644
--- a/ratis-server/pom.xml
+++ b/ratis-server/pom.xml
@@ -56,6 +56,11 @@
     </dependency>
 
     <dependency>
+      <artifactId>ratis-server-api</artifactId>
+      <groupId>org.apache.ratis</groupId>
+    </dependency>
+
+    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>