You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by el...@apache.org on 2018/09/21 15:15:13 UTC

[2/3] incubator-ratis git commit: RATIS-316. Use ratis-thirdparty and reorganize generated code

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogStateMachine.java
----------------------------------------------------------------------
diff --git a/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogStateMachine.java b/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogStateMachine.java
index 3444dd5..cdc17f3 100644
--- a/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogStateMachine.java
+++ b/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogStateMachine.java
@@ -23,8 +23,8 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.RaftServerConstants;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.ratis.server.storage.RaftStorage;
-import org.apache.ratis.shaded.proto.RaftProtos;
-import org.apache.ratis.shaded.proto.RaftProtos.LogEntryProto;
+import org.apache.ratis.proto.RaftProtos;
+import org.apache.ratis.proto.RaftProtos.LogEntryProto;
 import org.apache.ratis.statemachine.StateMachineStorage;
 import org.apache.ratis.statemachine.TransactionContext;
 import org.apache.ratis.statemachine.impl.BaseStateMachine;
@@ -32,7 +32,7 @@ import org.apache.ratis.statemachine.impl.SimpleStateMachineStorage;
 import org.apache.ratis.statemachine.impl.SingleFileSnapshotInfo;
 import org.apache.ratis.util.AutoCloseableLock;
 
-import org.apache.ratis.shaded.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
 
 import java.io.*;
 import java.util.HashMap;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-logservice/src/test/java/org/apache/ratis/logservice/api/TestLogMessage.java
----------------------------------------------------------------------
diff --git a/ratis-logservice/src/test/java/org/apache/ratis/logservice/api/TestLogMessage.java b/ratis-logservice/src/test/java/org/apache/ratis/logservice/api/TestLogMessage.java
index fb74d64..d58bdda 100644
--- a/ratis-logservice/src/test/java/org/apache/ratis/logservice/api/TestLogMessage.java
+++ b/ratis-logservice/src/test/java/org/apache/ratis/logservice/api/TestLogMessage.java
@@ -22,8 +22,8 @@ import static org.junit.Assert.assertEquals;
 import org.apache.ratis.logservice.api.LogMessage.Type;
 import org.junit.Test;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
 
 public class TestLogMessage {
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-netty/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-netty/pom.xml b/ratis-netty/pom.xml
index 2423b32..b573420 100644
--- a/ratis-netty/pom.xml
+++ b/ratis-netty/pom.xml
@@ -25,9 +25,12 @@
 
   <dependencies>
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
       <groupId>org.apache.ratis</groupId>
-      <scope>provided</scope>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-proto</artifactId>
+      <groupId>org.apache.ratis</groupId>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-netty/src/main/java/org/apache/ratis/netty/NettyClient.java
----------------------------------------------------------------------
diff --git a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyClient.java b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyClient.java
index ce5021a..373011e 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyClient.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyClient.java
@@ -17,15 +17,15 @@
  */
 package org.apache.ratis.netty;
 
-import org.apache.ratis.shaded.io.netty.bootstrap.Bootstrap;
-import org.apache.ratis.shaded.io.netty.channel.Channel;
-import org.apache.ratis.shaded.io.netty.channel.ChannelFuture;
-import org.apache.ratis.shaded.io.netty.channel.ChannelInitializer;
-import org.apache.ratis.shaded.io.netty.channel.EventLoopGroup;
-import org.apache.ratis.shaded.io.netty.channel.socket.SocketChannel;
-import org.apache.ratis.shaded.io.netty.channel.socket.nio.NioSocketChannel;
-import org.apache.ratis.shaded.io.netty.handler.logging.LogLevel;
-import org.apache.ratis.shaded.io.netty.handler.logging.LoggingHandler;
+import org.apache.ratis.thirdparty.io.netty.bootstrap.Bootstrap;
+import org.apache.ratis.thirdparty.io.netty.channel.Channel;
+import org.apache.ratis.thirdparty.io.netty.channel.ChannelFuture;
+import org.apache.ratis.thirdparty.io.netty.channel.ChannelInitializer;
+import org.apache.ratis.thirdparty.io.netty.channel.EventLoopGroup;
+import org.apache.ratis.thirdparty.io.netty.channel.socket.SocketChannel;
+import org.apache.ratis.thirdparty.io.netty.channel.socket.nio.NioSocketChannel;
+import org.apache.ratis.thirdparty.io.netty.handler.logging.LogLevel;
+import org.apache.ratis.thirdparty.io.netty.handler.logging.LoggingHandler;
 import org.apache.ratis.util.LifeCycle;
 import org.apache.ratis.util.NetUtils;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/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 20521b6..1c83629 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
@@ -18,16 +18,16 @@
 package org.apache.ratis.netty;
 
 import org.apache.ratis.protocol.RaftPeer;
-import org.apache.ratis.shaded.io.netty.channel.*;
-import org.apache.ratis.shaded.io.netty.channel.nio.NioEventLoopGroup;
-import org.apache.ratis.shaded.io.netty.channel.socket.SocketChannel;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufDecoder;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufEncoder;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftRpcRequestProto;
-import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerReplyProto;
-import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerRequestProto;
+import org.apache.ratis.thirdparty.io.netty.channel.*;
+import org.apache.ratis.thirdparty.io.netty.channel.nio.NioEventLoopGroup;
+import org.apache.ratis.thirdparty.io.netty.channel.socket.SocketChannel;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufEncoder;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
+import org.apache.ratis.proto.RaftProtos.RaftRpcRequestProto;
+import org.apache.ratis.proto.netty.NettyProtos.RaftNettyServerReplyProto;
+import org.apache.ratis.proto.netty.NettyProtos.RaftNettyServerRequestProto;
 import org.apache.ratis.util.IOUtils;
 import org.apache.ratis.util.PeerProxyMap;
 import org.apache.ratis.util.ProtoUtils;
@@ -39,7 +39,7 @@ import java.util.Queue;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 
-import static org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerReplyProto.RaftNettyServerReplyCase.EXCEPTIONREPLY;
+import static org.apache.ratis.proto.netty.NettyProtos.RaftNettyServerReplyProto.RaftNettyServerReplyCase.EXCEPTIONREPLY;
 
 public class NettyRpcProxy implements Closeable {
   public static class PeerMap extends PeerProxyMap<NettyRpcProxy> {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/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 3bc2608..b763d58 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
@@ -21,12 +21,12 @@ import org.apache.ratis.client.impl.ClientProtoUtils;
 import org.apache.ratis.client.impl.RaftClientRpcWithProxy;
 import org.apache.ratis.netty.NettyRpcProxy;
 import org.apache.ratis.protocol.*;
-import org.apache.ratis.shaded.proto.RaftProtos;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftRpcRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.GroupManagementRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.SetConfigurationRequestProto;
-import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerRequestProto;
+import org.apache.ratis.proto.RaftProtos;
+import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
+import org.apache.ratis.proto.RaftProtos.RaftRpcRequestProto;
+import org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto;
+import org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto;
+import org.apache.ratis.proto.netty.NettyProtos.RaftNettyServerRequestProto;
 
 import java.io.IOException;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/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 f6fcbc6..adcd786 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
@@ -27,21 +27,21 @@ import org.apache.ratis.rpc.SupportedRpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.impl.RaftServerRpcWithProxy;
-import org.apache.ratis.shaded.io.netty.bootstrap.ServerBootstrap;
-import org.apache.ratis.shaded.io.netty.channel.*;
-import org.apache.ratis.shaded.io.netty.channel.nio.NioEventLoopGroup;
-import org.apache.ratis.shaded.io.netty.channel.socket.SocketChannel;
-import org.apache.ratis.shaded.io.netty.channel.socket.nio.NioServerSocketChannel;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufDecoder;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufEncoder;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
-import org.apache.ratis.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
-import org.apache.ratis.shaded.io.netty.handler.logging.LogLevel;
-import org.apache.ratis.shaded.io.netty.handler.logging.LoggingHandler;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
-import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyExceptionReplyProto;
-import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerReplyProto;
-import org.apache.ratis.shaded.proto.netty.NettyProtos.RaftNettyServerRequestProto;
+import org.apache.ratis.thirdparty.io.netty.bootstrap.ServerBootstrap;
+import org.apache.ratis.thirdparty.io.netty.channel.*;
+import org.apache.ratis.thirdparty.io.netty.channel.nio.NioEventLoopGroup;
+import org.apache.ratis.thirdparty.io.netty.channel.socket.SocketChannel;
+import org.apache.ratis.thirdparty.io.netty.channel.socket.nio.NioServerSocketChannel;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufEncoder;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
+import org.apache.ratis.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
+import org.apache.ratis.thirdparty.io.netty.handler.logging.LogLevel;
+import org.apache.ratis.thirdparty.io.netty.handler.logging.LoggingHandler;
+import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.proto.netty.NettyProtos.RaftNettyExceptionReplyProto;
+import org.apache.ratis.proto.netty.NettyProtos.RaftNettyServerReplyProto;
+import org.apache.ratis.proto.netty.NettyProtos.RaftNettyServerRequestProto;
 import org.apache.ratis.util.CodeInjectionForTesting;
 import org.apache.ratis.util.ProtoUtils;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/pom.xml b/ratis-proto-shaded/pom.xml
deleted file mode 100644
index 87e3766..0000000
--- a/ratis-proto-shaded/pom.xml
+++ /dev/null
@@ -1,482 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License. See accompanying LICENSE file.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>ratis</artifactId>
-    <groupId>org.apache.ratis</groupId>
-    <version>0.3.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>ratis-proto-shaded</artifactId>
-  <name>Apache Ratis Proto Shaded</name>
-
-  <properties>
-    <maven.javadoc.skip>true</maven.javadoc.skip>
-    <!--The Default target dir-->
-    <classes.dir>${project.build.directory}/classes</classes.dir>
-
-    <!--Version of grpc to be shaded -->
-    <shaded.grpc.version>1.14.0</shaded.grpc.version>
-    <!--Version of Netty to be shaded -->
-    <shaded.netty.version>4.1.27.Final</shaded.netty.version>
-    <netty-tcnative.version>2.0.8.Final</netty-tcnative.version>
-  </properties>
-
-  <build>
-    <extensions>
-      <!-- Use os-maven-plugin to initialize the "os.detected" properties -->
-      <extension>
-        <groupId>kr.motd.maven</groupId>
-        <artifactId>os-maven-plugin</artifactId>
-        <version>1.5.0.Final</version>
-      </extension>
-    </extensions>
-    <!--I want to override these in profile so define them
-         with variables up here-->
-    <sourceDirectory>${shaded.sources.dir}</sourceDirectory>
-    <outputDirectory>${classes.dir}</outputDirectory>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <configuration>
-          <compilerArgs>
-            <!-- disable all javac warnings for shaded sources -->
-            <arg>-Xlint:none</arg>
-            <arg>-XDignore.symbol.file</arg>
-          </compilerArgs>
-          <showWarnings>false</showWarnings>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-        <configuration>
-          <excludes>org/apache/ratis/shaded/**/*</excludes>
-        </configuration>
-      </plugin>
-      <!-- Make a jar and put the sources in the jar -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <!--Make it so assembly:single does nothing in here-->
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <skipAssembly>true</skipAssembly>
-        </configuration>
-      </plugin>
-    </plugins>
-    <pluginManagement>
-      <plugins>
-        <!--This plugin's configuration is used to store Eclipse m2e settings only.
-          It has no influence on the Maven build itself. -->
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-shade-plugin</artifactId>
-                    <versionRange>[3.1.1,)</versionRange>
-                    <goals>
-                      <goal>shade</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore/>
-                  </action>
-                </pluginExecution>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-antrun-plugin</artifactId>
-                    <versionRange>[1.7,)</versionRange>
-                    <goals>
-                      <goal>run</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore/>
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>com.google.protobuf</groupId>
-      <artifactId>protobuf-java</artifactId>
-      <version>${shaded.protobuf.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.protobuf.nano</groupId>
-      <artifactId>protobuf-javanano</artifactId>
-      <version>${shaded.protobuf-javanano.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-netty</artifactId>
-      <version>${shaded.grpc.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-protobuf</artifactId>
-      <version>${shaded.grpc.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-stub</artifactId>
-      <version>${shaded.grpc.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-context</artifactId>
-      <version>${shaded.grpc.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>com.google.auto</groupId>
-      <artifactId>auto-common</artifactId>
-      <version>0.8</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.auto.service</groupId>
-      <artifactId>auto-service</artifactId>
-      <version>1.0-rc4</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.auto.value</groupId>
-      <artifactId>auto-value-annotations</artifactId>
-      <version>1.6</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.auto.value</groupId>
-      <artifactId>auto-value</artifactId>
-      <version>1.6</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-      <version>24.1-jre</version>
-    </dependency>
-
-    <dependency>
-      <groupId>com.google.code.findbugs</groupId>
-      <artifactId>jsr305</artifactId>
-      <version>3.0.2</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.errorprone</groupId>
-      <artifactId>error_prone_annotations</artifactId>
-      <version>2.2.0</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.j2objc</groupId>
-      <artifactId>j2objc-annotations</artifactId>
-      <version>1.3</version>
-    </dependency>
-
-    <dependency>
-      <groupId>com.squareup</groupId>
-      <artifactId>javapoet</artifactId>
-      <version>1.10.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.codehaus.mojo</groupId>
-      <artifactId>animal-sniffer-annotations</artifactId>
-      <version>1.16</version>
-    </dependency>
-
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-all</artifactId>
-      <version>${shaded.netty.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-tcnative</artifactId>
-      <version>${netty-tcnative.version}</version>
-      <classifier>${os.detected.classifier}</classifier>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.marshalling</groupId>
-      <artifactId>jboss-marshalling</artifactId>
-      <version>1.4.11.Final</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-      <version>1.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-      <version>2.11.0</version>
-    </dependency>
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <version>1.2.17</version>
-    </dependency>
-
-    <dependency>
-      <groupId>com.jcraft</groupId>
-      <artifactId>jzlib</artifactId>
-      <version>1.1.3</version>
-    </dependency>
-    <dependency>
-      <groupId>com.ning</groupId>
-      <artifactId>compress-lzf</artifactId>
-      <version>1.0.3</version>
-    </dependency>
-    <dependency>
-      <groupId>net.jpountz.lz4</groupId>
-      <artifactId>lz4</artifactId>
-      <version>1.3.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.bouncycastle</groupId>
-      <artifactId>bcpkix-jdk15on</artifactId>
-      <version>1.54</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.code.gson</groupId>
-      <artifactId>gson</artifactId>
-      <version>2.8.2</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.eclipse.jetty.npn</groupId>
-      <artifactId>npn-api</artifactId>
-      <version>1.1.1.v20141010</version>
-      <scope>provided</scope> <!-- Provided by npn-boot -->
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty.alpn</groupId>
-      <artifactId>alpn-api</artifactId>
-      <version>1.1.2.v20150522</version>
-      <scope>provided</scope> <!-- Provided by alpn-boot -->
-    </dependency>
-
-    <dependency>
-      <groupId>org.jctools</groupId>
-      <artifactId>jctools-core</artifactId>
-      <version>2.1.2</version>
-    </dependency>
-
-    <dependency>
-      <groupId>com.fasterxml</groupId>
-      <artifactId>aalto-xml</artifactId>
-      <version>1.0.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>io.opencensus</groupId>
-      <artifactId>opencensus-api</artifactId>
-      <version>${io.opencensus.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>io.opencensus</groupId>
-      <artifactId>opencensus-contrib-grpc-metrics</artifactId>
-      <version>${io.opencensus.version}</version>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>compile-protobuf</id>
-      <!--
-         Shade and drop the generated java files under target/shaded-sources.
-         Run this profile/step everytime you change proto
-         files or update the protobuf version.
-      -->
-      <activation>
-        <property>
-          <name>!skipShade</name>
-        </property>
-      </activation>
-      <properties>
-      </properties>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.xolstice.maven.plugins</groupId>
-            <artifactId>protobuf-maven-plugin</artifactId>
-            <configuration>
-              <protocArtifact>
-                com.google.protobuf:protoc:${shaded.protobuf.version}:exe:${os.detected.classifier}
-              </protocArtifact>
-              <!-- Place these in a location that compiler-plugin is already looking -->
-              <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
-              <!-- With multiple executions, this must be `false` otherwise we wipe out the previous execution -->
-              <clearOutputDirectory>false</clearOutputDirectory>
-            </configuration>
-            <executions>
-              <execution>
-                <id>1</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>compile</goal>
-                </goals>
-              </execution>
-              <execution>
-                <id>2</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>compile-custom</goal>
-                </goals>
-                <configuration>
-                  <pluginId>grpc-java</pluginId>
-                  <pluginArtifact>
-                    io.grpc:protoc-gen-grpc-java:${shaded.grpc.version}:exe:${os.detected.classifier}
-                  </pluginArtifact>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <artifactId>maven-jar-plugin</artifactId>
-            <executions>
-              <execution>
-                <!-- Replace the "default" jar-plugin execution -->
-                <!-- This is a super-dirty hack to work around Yetus
-                     PreCommit not using the package lifecycle phase -->
-                <id>default-jar</id>
-                <phase>process-classes</phase>
-                <goals>
-                  <goal>jar</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-shade-plugin</artifactId>
-            <executions>
-              <execution>
-                <phase>process-classes</phase>
-                <goals>
-                  <goal>shade</goal>
-                </goals>
-                <configuration>
-                  <shadeSourcesContent>true</shadeSourcesContent>
-                  <createSourcesJar>true</createSourcesJar>
-                  <!-- Replace the original artifact which is no good on its own -->
-                  <shadedArtifactAttached>false</shadedArtifactAttached>
-                  <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
-                  <relocations>
-                    <relocation>
-                      <pattern>com.google.api</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.api</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.cloud.audit</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.cloud.audit</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.common</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.common</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.logging.type</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.logging.type</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.longrunning</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.longrunning</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.protobuf</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.protobuf</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.rpc</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.rpc</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.thirdparty.publicsuffix</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.thirdparty.publicsuffix</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.type</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.type</shadedPattern>
-                    </relocation>
-
-                    <relocation>
-                      <pattern>io.grpc</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.io.grpc</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>io.netty</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.io.netty</shadedPattern>
-                    </relocation>
-
-                    <relocation>
-                      <pattern>io.opencensus</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.io.opencensus</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>com.google.gson</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.gson</shadedPattern>
-                    </relocation>
-                  </relocations>
-
-                  <artifactSet>
-                    <includes>
-                      <include>com.google.api.grpc:proto-google-common-protos</include>
-                      <include>com.google.code.gson:gson</include>
-                      <include>com.google.guava:guava</include>
-                      <include>com.google.protobuf.nano:protobuf-javanano</include>
-                      <include>com.google.protobuf:protobuf-java-util</include>
-                      <include>com.google.protobuf:protobuf-java</include>
-                      <include>io.grpc:grpc-context</include>
-                      <include>io.grpc:grpc-core</include>
-                      <include>io.grpc:grpc-netty</include>
-                      <include>io.grpc:grpc-protobuf-lite</include>
-                      <include>io.grpc:grpc-protobuf</include>
-                      <include>io.grpc:grpc-stub</include>
-                      <include>io.netty:netty-all</include>
-                      <include>io.opencensus:opencensus-api</include>
-                      <include>io.opencensus:opencensus-contrib-grpc-metrics</include>
-                    </includes>
-                  </artifactSet>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/Examples.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/Examples.proto b/ratis-proto-shaded/src/main/proto/Examples.proto
deleted file mode 100644
index 6efef5b..0000000
--- a/ratis-proto-shaded/src/main/proto/Examples.proto
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto";
-option java_outer_classname = "ExamplesProtos";
-option java_generate_equals_and_hash = true;
-package ratis.example;
-
-message FileStoreRequestProto {
-  oneof Request {
-    WriteRequestHeaderProto writeHeader = 1;
-    WriteRequestProto write = 2;
-    DeleteRequestProto delete = 3;
-  }
-}
-
-message ReadRequestProto {
-  bytes path = 1;
-  uint64 offset = 2;
-  uint64 length = 3;
-}
-
-message WriteRequestHeaderProto {
-  bytes path = 1;
-  bool close = 2; // close the file after write?
-  uint64 offset = 3;
-}
-
-message WriteRequestProto {
-  WriteRequestHeaderProto header = 1;
-  bytes data = 2;
-}
-
-message DeleteRequestProto {
-  bytes path = 1;
-}
-
-message ReadReplyProto {
-  bytes resolvedPath = 1;
-  uint64 offset = 2;
-  bytes data = 3; // returned data size may be smaller than the requested size
-}
-
-message WriteReplyProto {
-  bytes resolvedPath = 1;
-  uint64 offset = 2;
-  uint64 length = 3; // bytes actually written
-}
-
-message DeleteReplyProto {
-  bytes resolvedPath = 1;
-}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/Grpc.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/Grpc.proto b/ratis-proto-shaded/src/main/proto/Grpc.proto
deleted file mode 100644
index 5c4bbad..0000000
--- a/ratis-proto-shaded/src/main/proto/Grpc.proto
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto.grpc";
-option java_outer_classname = "GrpcProtos";
-option java_generate_equals_and_hash = true;
-package ratis.grpc;
-
-import "Raft.proto";
-
-service RaftClientProtocolService {
-  // A client-to-server RPC to set new raft configuration
-  rpc setConfiguration(ratis.common.SetConfigurationRequestProto)
-      returns(ratis.common.RaftClientReplyProto) {}
-
-  // A client-to-server stream RPC to append data
-  rpc append(stream ratis.common.RaftClientRequestProto)
-      returns (stream ratis.common.RaftClientReplyProto) {}
-}
-
-service RaftServerProtocolService {
-  rpc requestVote(ratis.common.RequestVoteRequestProto)
-      returns(ratis.common.RequestVoteReplyProto) {}
-
-  rpc appendEntries(stream ratis.common.AppendEntriesRequestProto)
-      returns(stream ratis.common.AppendEntriesReplyProto) {}
-
-  rpc installSnapshot(stream ratis.common.InstallSnapshotRequestProto)
-      returns(ratis.common.InstallSnapshotReplyProto) {}
-}
-
-service AdminProtocolService {
-  // A client-to-server RPC to add a new group
-  rpc groupManagement(ratis.common.GroupManagementRequestProto)
-      returns(ratis.common.RaftClientReplyProto) {}
-
-  rpc serverInformation(ratis.common.ServerInformationRequestProto)
-      returns(ratis.common.ServerInformationReplyProto) {}
-}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/Hadoop.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/Hadoop.proto b/ratis-proto-shaded/src/main/proto/Hadoop.proto
deleted file mode 100644
index 0d6107e..0000000
--- a/ratis-proto-shaded/src/main/proto/Hadoop.proto
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto.hadoop";
-option java_outer_classname = "HadoopProtos";
-option java_generic_services = true;
-option java_generate_equals_and_hash = true;
-package ratis.hadoop;
-
-import "Raft.proto";
-
-service CombinedClientProtocolService {
-  rpc submitClientRequest(ratis.common.RaftClientRequestProto)
-      returns(ratis.common.RaftClientReplyProto);
-
-  rpc setConfiguration(ratis.common.SetConfigurationRequestProto)
-      returns(ratis.common.RaftClientReplyProto);
-
-  rpc groupManagement(ratis.common.GroupManagementRequestProto)
-      returns(ratis.common.RaftClientReplyProto);
-
-  rpc serverInformation(ratis.common.ServerInformationRequestProto)
-      returns(ratis.common.ServerInformationReplyProto);
-}
-
-service RaftServerProtocolService {
-  rpc requestVote(ratis.common.RequestVoteRequestProto)
-      returns(ratis.common.RequestVoteReplyProto);
-
-  rpc appendEntries(ratis.common.AppendEntriesRequestProto)
-      returns(ratis.common.AppendEntriesReplyProto);
-
-  rpc installSnapshot(ratis.common.InstallSnapshotRequestProto)
-      returns(ratis.common.InstallSnapshotReplyProto);
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/Logservice.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/Logservice.proto b/ratis-proto-shaded/src/main/proto/Logservice.proto
deleted file mode 100644
index fd586bf..0000000
--- a/ratis-proto-shaded/src/main/proto/Logservice.proto
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto.logservice";
-option java_outer_classname = "LogServiceProtos";
-option java_generate_equals_and_hash = true;
-package ratis.logservice;
-
-enum MessageType {
-	READ_REQUEST = 0;
-	READ_REPLY = 1;
-	WRITE = 2;
-}
-
-message LogMessage {
-	MessageType type = 1;
-	string log_name = 2;
-	uint64 length = 3;
-	bytes  data = 4;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/Netty.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/Netty.proto b/ratis-proto-shaded/src/main/proto/Netty.proto
deleted file mode 100644
index 40aa498..0000000
--- a/ratis-proto-shaded/src/main/proto/Netty.proto
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto.netty";
-option java_outer_classname = "NettyProtos";
-option java_generate_equals_and_hash = true;
-package ratis.netty;
-
-import "Raft.proto";
-
-message RaftNettyExceptionReplyProto {
-  ratis.common.RaftRpcReplyProto rpcReply = 1;
-  bytes exception = 2;
-}
-
-message RaftNettyServerRequestProto {
-  oneof raftNettyServerRequest {
-    ratis.common.RequestVoteRequestProto requestVoteRequest = 1;
-    ratis.common.AppendEntriesRequestProto appendEntriesRequest = 2;
-    ratis.common.InstallSnapshotRequestProto installSnapshotRequest = 3;
-    ratis.common.RaftClientRequestProto raftClientRequest = 4;
-    ratis.common.SetConfigurationRequestProto setConfigurationRequest = 5;
-    ratis.common.GroupManagementRequestProto groupManagementRequest = 6;
-    ratis.common.ServerInformationRequestProto serverInformationRequest = 7;
-  }
-}
-
-message RaftNettyServerReplyProto {
-  oneof raftNettyServerReply {
-    ratis.common.RequestVoteReplyProto requestVoteReply = 1;
-    ratis.common.AppendEntriesReplyProto appendEntriesReply = 2;
-    ratis.common.InstallSnapshotReplyProto installSnapshotReply = 3;
-    ratis.common.RaftClientReplyProto raftClientReply = 4;
-    ratis.common.ServerInformationReplyProto serverInfoReply = 5;
-    RaftNettyExceptionReplyProto exceptionReply = 6;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/RMap.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/RMap.proto b/ratis-proto-shaded/src/main/proto/RMap.proto
deleted file mode 100644
index 33ce4fb..0000000
--- a/ratis-proto-shaded/src/main/proto/RMap.proto
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto.rmap";
-option java_outer_classname = "RMapProtos";
-option java_generate_equals_and_hash = true;
-package ratis.rmap;
-
-// TODO: This .proto file should go to the ratis-replicated-map module, but we need it here
-// due to shading.
-
-// Metadata about a replicated map
-message RMapInfo {
-    int64 rmap_id = 1;
-    string name = 2;
-    string key_class = 3;
-    string value_class = 4;
-    string key_serde_class = 5;
-    string value_serde_class = 6;
-    string key_comparator_class = 7;
-}
-
-// An entry in a replicated map.`
-message Entry {
-    bytes key = 1;
-    bytes value = 2;
-}
-
-// TODO: raft client should allow a Service decleration, and calling a method from the service
-// similar to how coprocessor calls work in HBase.
-message Request {
-    oneof RequestType {
-        MultiActionRequest multi_action_request = 1;
-        ScanRequest scan_request = 2;
-        CreateRMapRequest create_rmap_request = 3;
-        DeleteRMapRequest delete_rmap_request = 4;
-        ListRMapInfosRequest list_rmap_infos_request = 5;
-    }
-}
-
-message Response {
-    ExceptionResponse exception = 1;
-    oneof ResponseType {
-        MultiActionResponse multi_action_response = 2;
-        ScanResponse scan_response = 3;
-        CreateRMapResponse create_rmap_response = 4;
-        DeleteRMapResponse delete_rmap_response = 5;
-        ListRMapInfosResponse list_rmap_infos_response = 6;
-    }
-}
-
-message MultiActionRequest {
-    int64 rmap_id = 1;
-    repeated Action action = 2;
-}
-
-message Action {
-    oneof ActionType {
-        GetRequest get_request = 1;
-        PutRequest put_request = 2;
-    }
-}
-
-message ActionResponse {
-    oneof ActionType {
-        GetResponse get_response = 1;
-        PutResponse put_response = 2;
-    }
-}
-
-message MultiActionResponse {
-    repeated ActionResponse action_response = 1;
-}
-
-message CreateRMapRequest {
-    RMapInfo rmap_info = 1;
-}
-
-message CreateRMapResponse {
-    RMapInfo rmap_info = 1;
-}
-
-message DeleteRMapRequest {
-    int64 rmap_id = 1;
-}
-
-message DeleteRMapResponse {
-}
-
-message ListRMapInfosRequest {
-    oneof ListRMapInfosType {
-        // if set, we only care about a particular RMapInfo
-        int64 rmap_id = 1;
-
-        // only return infos whose names match this pattern
-        string name_pattern = 2;
-    }
-}
-
-message ListRMapInfosResponse {
-    repeated RMapInfo rmap_info = 1;
-}
-
-message GetRequest {
-    bytes key = 1;
-}
-
-message GetResponse {
-    bool found = 1;
-    bytes key = 2;
-    bytes value = 3;
-}
-
-message PutRequest {
-    bytes key = 1;
-    bytes value = 2;
-}
-
-message PutResponse {
-}
-
-message Scan {
-    bytes start_Key = 1;
-    bytes end_key = 2;
-    bool start_key_inclusive = 3;
-    bool end_key_inclusive = 4;
-    bool keys_only = 5;
-    int32 limit = 6;
-}
-
-message ScanRequest {
-    int64 rmap_id = 1;
-    Scan scan = 2;
-}
-
-message ScanResponse {
-    repeated Entry entry = 1;
-}
-
-message ExceptionResponse {
-    // Class name of the exception thrown from the server
-    string exception_class_name = 1;
-    // Exception stack trace from the server side
-    string stack_trace = 2;
-    // Optional hostname.  Filled in for some exceptions such as region moved
-    // where exception gives clue on where the region may have moved.
-    string hostname = 3;
-    int32 port = 4;
-    // Set if we are NOT to retry on receipt of this exception
-    bool do_not_retry = 5;
-}
-
-message Id {
-    int64 id = 1;
-}
-
-message WALEntry {
-    int64 rmap_id = 1;  // these are shared by all WALEntry types
-    repeated Entry entry = 2;
-    oneof WALEntryType {
-        // Multi is not here, because we do not want to create one more object unnecessarily
-        CreateRMapWALEntry create_rmap_entry = 3;
-        DeleteRMapWALEntry delete_rmap_entry = 4;
-    }
-}
-
-message CreateRMapWALEntry {
-    RMapInfo rmap_info = 1;
-    Id id = 2;
-}
-
-message DeleteRMapWALEntry {
-    int64 id = 1;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/proto/Raft.proto
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/proto/Raft.proto b/ratis-proto-shaded/src/main/proto/Raft.proto
deleted file mode 100644
index 0a93e95..0000000
--- a/ratis-proto-shaded/src/main/proto/Raft.proto
+++ /dev/null
@@ -1,307 +0,0 @@
-/**
- * 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
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.apache.ratis.shaded.proto";
-option java_outer_classname = "RaftProtos";
-option java_generate_equals_and_hash = true;
-package ratis.common;
-
-message RaftPeerProto {
-  bytes id = 1;      // id of the peer
-  string address = 2; // e.g. IP address, hostname etc.
-}
-
-message RaftGroupIdProto {
-  bytes id = 1;
-}
-
-message RaftGroupProto {
-  RaftGroupIdProto groupId = 1;
-  repeated RaftPeerProto peers = 2;
-}
-
-message RaftConfigurationProto {
-  repeated RaftPeerProto peers = 1; // the peers in the current or new conf
-  repeated RaftPeerProto oldPeers = 2; // the peers in the old conf
-}
-
-message SMLogEntryProto {
-  // TODO: This is not super efficient if the SM itself uses PB to serialize its own data for a
-  // log entry. Data will be copied twice. We should directly support having any Message from SM
-  bytes data = 1;
-
-  bytes stateMachineData = 2; // State machine specific data which is not written to log.
-  bool stateMachineDataAttached = 3; // set this flag when state machine data is attached.
-  uint64 serializedProtobufSize = 4; // size of the serialized LogEntryProto along with stateMachineData
-}
-
-message LeaderNoOp {
-  // empty
-}
-
-message LogEntryProto {
-  uint64 term = 1;
-  uint64 index = 2;
-
-  oneof LogEntryBody {
-    SMLogEntryProto smLogEntry = 3;
-    RaftConfigurationProto configurationEntry = 4;
-    LeaderNoOp noOp = 5;
-  }
-
-  // clientId and callId are used to rebuild the retry cache. They're not
-  // necessary for configuration change since re-conf is idempotent.
-  bytes clientId = 6;
-  uint64 callId = 7;
-}
-
-message TermIndexProto {
-  uint64 term = 1;
-  uint64 index = 2;
-}
-
-message RaftRpcRequestProto {
-  bytes requestorId = 1;
-  bytes replyId = 2;
-  RaftGroupIdProto raftGroupId = 3;
-  uint64 callId = 4;
-
-  uint64 seqNum = 15;
-}
-
-message RaftRpcReplyProto {
-  bytes requestorId = 1;
-  bytes replyId = 2;
-  RaftGroupIdProto raftGroupId = 3;
-  uint64 callId = 4;
-
-  bool success = 15;
-}
-
-message FileChunkProto {
-  string filename = 1; // relative to root
-  uint64 totalSize = 2;
-  bytes fileDigest = 3;
-  uint32 chunkIndex = 4;
-  uint64 offset = 5;
-  bytes data = 6;
-  bool done = 7;
-}
-
-enum InstallSnapshotResult {
-  SUCCESS = 0;
-  NOT_LEADER = 1;
-}
-
-message RequestVoteRequestProto {
-  RaftRpcRequestProto serverRequest = 1;
-  uint64 candidateTerm = 2;
-  TermIndexProto candidateLastEntry = 3;
-}
-
-message RequestVoteReplyProto {
-  RaftRpcReplyProto serverReply = 1;
-  uint64 term = 2;
-  bool shouldShutdown = 3;
-}
-
-message CommitInfoProto {
-  RaftPeerProto server = 1;
-  uint64 commitIndex = 2;
-}
-
-message AppendEntriesRequestProto {
-  RaftRpcRequestProto serverRequest = 1;
-  uint64 leaderTerm = 2;
-  TermIndexProto previousLog = 3;
-  repeated LogEntryProto entries = 4;
-  uint64 leaderCommit = 5;
-  bool initializing = 6;
-
-  repeated CommitInfoProto commitInfos = 15;
-}
-
-message AppendEntriesReplyProto {
-  enum AppendResult {
-    SUCCESS = 0;
-    NOT_LEADER = 1; // the requester's term is not large enough
-    INCONSISTENCY = 2; // gap between the local log and the entries
-  }
-
-  RaftRpcReplyProto serverReply = 1;
-  uint64 term = 2;
-  uint64 nextIndex = 3;
-  AppendResult result = 4;
-}
-
-message InstallSnapshotRequestProto {
-  RaftRpcRequestProto serverRequest = 1;
-  string requestId = 2; // an identifier for chunked-requests.
-  uint32 requestIndex = 3; // the index for this request chunk. Starts from 0.
-  RaftConfigurationProto raftConfiguration = 4;
-  uint64 leaderTerm = 5;
-  TermIndexProto termIndex = 6;
-  repeated FileChunkProto fileChunks = 7;
-  uint64 totalSize = 8;
-  bool done = 9; // whether this is the final chunk for the same req.
-}
-
-message InstallSnapshotReplyProto {
-  RaftRpcReplyProto serverReply = 1;
-  uint32 requestIndex = 2;
-  uint64 term = 3;
-  InstallSnapshotResult result = 4;
-}
-
-message ClientMessageEntryProto {
-  bytes content = 1;
-}
-
-enum ReplicationLevel {
-  MAJORITY = 0;
-  ALL = 1;
-}
-
-
-/** Role of raft peer */
-enum RaftPeerRole {
-  LEADER = 0;
-  CANDIDATE = 1;
-  FOLLOWER = 2;
-}
-
-message WriteRequestTypeProto {
-  ReplicationLevel replication = 1;
-}
-
-message ReadRequestTypeProto {
-}
-
-message StaleReadRequestTypeProto {
-  uint64 minIndex = 1;
-}
-
-// normal client request
-message RaftClientRequestProto {
-  RaftRpcRequestProto rpcRequest = 1;
-  ClientMessageEntryProto message = 2;
-
-  oneof Type {
-    WriteRequestTypeProto write = 3;
-    ReadRequestTypeProto read = 4;
-    StaleReadRequestTypeProto staleRead = 5;
-  }
-}
-
-message NotLeaderExceptionProto {
-  RaftPeerProto suggestedLeader = 1;
-  repeated RaftPeerProto peersInConf = 2;
-}
-
-message NotReplicatedExceptionProto {
-  uint64 callId = 1;
-  ReplicationLevel replication = 2;
-  uint64 logIndex = 3;
-}
-
-message StateMachineExceptionProto {
-  string exceptionClassName = 1;
-  string errorMsg = 2;
-  bytes stacktrace = 3;
-}
-
-message RaftClientReplyProto {
-  RaftRpcReplyProto rpcReply = 1;
-  ClientMessageEntryProto message = 2;
-
-  oneof ExceptionDetails {
-    NotLeaderExceptionProto notLeaderException = 3;
-    NotReplicatedExceptionProto notReplicatedException = 4;
-    StateMachineExceptionProto stateMachineException = 5;
-  }
-
-  repeated CommitInfoProto commitInfos = 15;
-}
-
-// setConfiguration request
-message SetConfigurationRequestProto {
-  RaftRpcRequestProto rpcRequest = 1;
-  repeated RaftPeerProto peers = 2;
-}
-
-// A request to add a new group
-message GroupAddRequestProto {
-  RaftGroupProto group = 1; // the group to be added.
-}
-
-message GroupRemoveRequestProto {
-  RaftGroupIdProto groupId = 1; // the group to be removed.
-  bool deleteDirectory = 2; // delete the directory for that group?
-}
-
-message GroupManagementRequestProto {
-  RaftRpcRequestProto rpcRequest = 1;
-
-  oneof Op {
-    GroupAddRequestProto groupAdd = 2;
-    GroupRemoveRequestProto groupRemove = 3;
-  }
-}
-
-// server info request
-message ServerInformationRequestProto {
-  RaftRpcRequestProto rpcRequest = 1;
-}
-
-message ServerRpcProto {
-  RaftPeerProto id = 1;
-  uint64 lastRpcElapsedTimeMs = 2;
-}
-
-message LeaderInfoProto {
-  repeated ServerRpcProto followerInfo = 1;
-}
-
-message FollowerInfoProto {
-  ServerRpcProto leaderInfo = 1;
-  bool inLogSync = 2;
-}
-
-message CandidateInfoProto {
-  uint64 lastLeaderElapsedTimeMs = 1;
-}
-
-message RoleInfoProto {
-  RaftPeerProto self = 1;
-  RaftPeerRole role = 2;
-  uint64 roleElapsedTimeMs = 3;
-
-  oneof PeerInfo {
-    LeaderInfoProto leaderInfo = 4;
-    FollowerInfoProto followerInfo = 5;
-    CandidateInfoProto candidateInfo = 6;
-  }
-}
-
-message ServerInformationReplyProto {
-  RaftRpcReplyProto rpcReply = 1;
-  RaftGroupProto group = 2;
-  RoleInfoProto role = 3;
-  bool isRaftStorageHealthy = 4;
-  repeated CommitInfoProto commitInfos = 5;
-}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ManagedChannelProvider
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ManagedChannelProvider b/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ManagedChannelProvider
deleted file mode 100644
index dbf2d84..0000000
--- a/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ManagedChannelProvider
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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 regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-org.apache.ratis.shaded.io.grpc.netty.NettyChannelProvider

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.NameResolverProvider
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.NameResolverProvider b/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.NameResolverProvider
deleted file mode 100644
index 439b1d8..0000000
--- a/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.NameResolverProvider
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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 regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-org.apache.ratis.shaded.io.grpc.internal.DnsNameResolverProvider

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ServerProvider
----------------------------------------------------------------------
diff --git a/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ServerProvider b/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ServerProvider
deleted file mode 100644
index f251467..0000000
--- a/ratis-proto-shaded/src/main/resources/META-INF/services/org.apache.ratis.shaded.io.grpc.ServerProvider
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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 regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-org.apache.ratis.shaded.io.grpc.netty.NettyServerProvider

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-proto/pom.xml b/ratis-proto/pom.xml
new file mode 100644
index 0000000..ffbfe70
--- /dev/null
+++ b/ratis-proto/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>ratis</artifactId>
+    <groupId>org.apache.ratis</groupId>
+    <version>0.3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>ratis-proto</artifactId>
+  <name>Apache Ratis Protocols</name>
+
+  <properties>
+    <maven.javadoc.skip>true</maven.javadoc.skip>
+  </properties>
+
+  <build>
+    <extensions>
+      <!-- Use os-maven-plugin to initialize the "os.detected" properties -->
+      <extension>
+        <groupId>kr.motd.maven</groupId>
+        <artifactId>os-maven-plugin</artifactId>
+        <version>1.5.0.Final</version>
+      </extension>
+    </extensions>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <compilerArgs>
+            <!-- disable all javac warnings for shaded sources -->
+            <arg>-Xlint:none</arg>
+            <arg>-XDignore.symbol.file</arg>
+          </compilerArgs>
+          <showWarnings>false</showWarnings>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <configuration/>
+      </plugin>
+      <!-- Make a jar and put the sources in the jar -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-source-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <!--Make it so assembly:single does nothing in here-->
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <skipAssembly>true</skipAssembly>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <configuration>
+          <protocArtifact>
+            com.google.protobuf:protoc:${shaded.protobuf.version}:exe:${os.detected.classifier}
+          </protocArtifact>
+          <!-- Place these in a location that compiler-plugin is already looking -->
+          <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
+          <!-- With multiple executions, this must be `false` otherwise we wipe out the previous execution -->
+          <clearOutputDirectory>false</clearOutputDirectory>
+        </configuration>
+        <executions>
+          <execution>
+            <id>compile-protobuf</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>compile-grpc</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>compile-custom</goal>
+            </goals>
+            <configuration>
+              <pluginId>grpc-java</pluginId>
+              <pluginArtifact>
+                io.grpc:protoc-gen-grpc-java:${shaded.grpc.version}:exe:${os.detected.classifier}
+              </pluginArtifact>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <!-- Replace the "default" jar-plugin execution -->
+            <!-- This is a super-dirty hack to work around Yetus
+                 PreCommit not using the package lifecycle phase -->
+            <id>default-jar</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <!-- Modify the generated source to use our shaded protobuf -->
+      <plugin>
+        <groupId>com.google.code.maven-replacer-plugin</groupId>
+        <artifactId>replacer</artifactId>
+        <version>1.5.3</version>
+        <executions>
+          <execution>
+            <phase>process-sources</phase>
+            <goals>
+              <goal>replace</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <basedir>${project.build.directory}/generated-sources</basedir>
+          <includes>
+              <include>**/*.java</include>
+          </includes>
+          <replacements>
+            <replacement>
+              <token>([^\.])com.google</token>
+              <value>$1org.apache.ratis.thirdparty.com.google</value>
+            </replacement>
+            <replacement>
+              <token>([^\.])io.grpc</token>
+              <value>$1org.apache.ratis.thirdparty.io.grpc</value>
+            </replacement>
+          </replacements>
+        </configuration>
+      </plugin>
+    </plugins>
+    <pluginManagement>
+      <plugins>
+        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+        <plugin>
+          <groupId>org.eclipse.m2e</groupId>
+          <artifactId>lifecycle-mapping</artifactId>
+          <version>1.0.0</version>
+          <configuration>
+            <lifecycleMappingMetadata>
+              <pluginExecutions>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>
+                      com.google.code.maven-replacer-plugin
+                    </groupId>
+                    <artifactId>replacer</artifactId>
+                    <versionRange>
+                      [1.5.3,)
+                    </versionRange>
+                    <goals>
+                      <goal>replace</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore></ignore>
+                  </action>
+                </pluginExecution>
+              </pluginExecutions>
+            </lifecycleMappingMetadata>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.ratis</groupId>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/src/main/proto/Examples.proto
----------------------------------------------------------------------
diff --git a/ratis-proto/src/main/proto/Examples.proto b/ratis-proto/src/main/proto/Examples.proto
new file mode 100644
index 0000000..c2e2500
--- /dev/null
+++ b/ratis-proto/src/main/proto/Examples.proto
@@ -0,0 +1,67 @@
+/**
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.apache.ratis.proto";
+option java_outer_classname = "ExamplesProtos";
+option java_generate_equals_and_hash = true;
+package ratis.example;
+
+message FileStoreRequestProto {
+  oneof Request {
+    WriteRequestHeaderProto writeHeader = 1;
+    WriteRequestProto write = 2;
+    DeleteRequestProto delete = 3;
+  }
+}
+
+message ReadRequestProto {
+  bytes path = 1;
+  uint64 offset = 2;
+  uint64 length = 3;
+}
+
+message WriteRequestHeaderProto {
+  bytes path = 1;
+  bool close = 2; // close the file after write?
+  uint64 offset = 3;
+}
+
+message WriteRequestProto {
+  WriteRequestHeaderProto header = 1;
+  bytes data = 2;
+}
+
+message DeleteRequestProto {
+  bytes path = 1;
+}
+
+message ReadReplyProto {
+  bytes resolvedPath = 1;
+  uint64 offset = 2;
+  bytes data = 3; // returned data size may be smaller than the requested size
+}
+
+message WriteReplyProto {
+  bytes resolvedPath = 1;
+  uint64 offset = 2;
+  uint64 length = 3; // bytes actually written
+}
+
+message DeleteReplyProto {
+  bytes resolvedPath = 1;
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/src/main/proto/Grpc.proto
----------------------------------------------------------------------
diff --git a/ratis-proto/src/main/proto/Grpc.proto b/ratis-proto/src/main/proto/Grpc.proto
new file mode 100644
index 0000000..3126fdb
--- /dev/null
+++ b/ratis-proto/src/main/proto/Grpc.proto
@@ -0,0 +1,54 @@
+/**
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.apache.ratis.proto.grpc";
+option java_outer_classname = "GrpcProtos";
+option java_generate_equals_and_hash = true;
+package ratis.grpc;
+
+import "Raft.proto";
+
+service RaftClientProtocolService {
+  // A client-to-server RPC to set new raft configuration
+  rpc setConfiguration(ratis.common.SetConfigurationRequestProto)
+      returns(ratis.common.RaftClientReplyProto) {}
+
+  // A client-to-server stream RPC to append data
+  rpc append(stream ratis.common.RaftClientRequestProto)
+      returns (stream ratis.common.RaftClientReplyProto) {}
+}
+
+service RaftServerProtocolService {
+  rpc requestVote(ratis.common.RequestVoteRequestProto)
+      returns(ratis.common.RequestVoteReplyProto) {}
+
+  rpc appendEntries(stream ratis.common.AppendEntriesRequestProto)
+      returns(stream ratis.common.AppendEntriesReplyProto) {}
+
+  rpc installSnapshot(stream ratis.common.InstallSnapshotRequestProto)
+      returns(ratis.common.InstallSnapshotReplyProto) {}
+}
+
+service AdminProtocolService {
+  // A client-to-server RPC to add a new group
+  rpc groupManagement(ratis.common.GroupManagementRequestProto)
+      returns(ratis.common.RaftClientReplyProto) {}
+
+  rpc serverInformation(ratis.common.ServerInformationRequestProto)
+      returns(ratis.common.ServerInformationReplyProto) {}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/src/main/proto/Hadoop.proto
----------------------------------------------------------------------
diff --git a/ratis-proto/src/main/proto/Hadoop.proto b/ratis-proto/src/main/proto/Hadoop.proto
new file mode 100644
index 0000000..dd220ef
--- /dev/null
+++ b/ratis-proto/src/main/proto/Hadoop.proto
@@ -0,0 +1,51 @@
+/**
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.apache.ratis.proto.hadoop";
+option java_outer_classname = "HadoopProtos";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+package ratis.hadoop;
+
+import "Raft.proto";
+
+service CombinedClientProtocolService {
+  rpc submitClientRequest(ratis.common.RaftClientRequestProto)
+      returns(ratis.common.RaftClientReplyProto);
+
+  rpc setConfiguration(ratis.common.SetConfigurationRequestProto)
+      returns(ratis.common.RaftClientReplyProto);
+
+  rpc groupManagement(ratis.common.GroupManagementRequestProto)
+      returns(ratis.common.RaftClientReplyProto);
+
+  rpc serverInformation(ratis.common.ServerInformationRequestProto)
+      returns(ratis.common.ServerInformationReplyProto);
+}
+
+service RaftServerProtocolService {
+  rpc requestVote(ratis.common.RequestVoteRequestProto)
+      returns(ratis.common.RequestVoteReplyProto);
+
+  rpc appendEntries(ratis.common.AppendEntriesRequestProto)
+      returns(ratis.common.AppendEntriesReplyProto);
+
+  rpc installSnapshot(ratis.common.InstallSnapshotRequestProto)
+      returns(ratis.common.InstallSnapshotReplyProto);
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/src/main/proto/Logservice.proto
----------------------------------------------------------------------
diff --git a/ratis-proto/src/main/proto/Logservice.proto b/ratis-proto/src/main/proto/Logservice.proto
new file mode 100644
index 0000000..8ea32f2
--- /dev/null
+++ b/ratis-proto/src/main/proto/Logservice.proto
@@ -0,0 +1,35 @@
+/**
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.apache.ratis.proto.logservice";
+option java_outer_classname = "LogServiceProtos";
+option java_generate_equals_and_hash = true;
+package ratis.logservice;
+
+enum MessageType {
+	READ_REQUEST = 0;
+	READ_REPLY = 1;
+	WRITE = 2;
+}
+
+message LogMessage {
+	MessageType type = 1;
+	string log_name = 2;
+	uint64 length = 3;
+	bytes  data = 4;
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/src/main/proto/Netty.proto
----------------------------------------------------------------------
diff --git a/ratis-proto/src/main/proto/Netty.proto b/ratis-proto/src/main/proto/Netty.proto
new file mode 100644
index 0000000..b817e8b
--- /dev/null
+++ b/ratis-proto/src/main/proto/Netty.proto
@@ -0,0 +1,52 @@
+/**
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.apache.ratis.proto.netty";
+option java_outer_classname = "NettyProtos";
+option java_generate_equals_and_hash = true;
+package ratis.netty;
+
+import "Raft.proto";
+
+message RaftNettyExceptionReplyProto {
+  ratis.common.RaftRpcReplyProto rpcReply = 1;
+  bytes exception = 2;
+}
+
+message RaftNettyServerRequestProto {
+  oneof raftNettyServerRequest {
+    ratis.common.RequestVoteRequestProto requestVoteRequest = 1;
+    ratis.common.AppendEntriesRequestProto appendEntriesRequest = 2;
+    ratis.common.InstallSnapshotRequestProto installSnapshotRequest = 3;
+    ratis.common.RaftClientRequestProto raftClientRequest = 4;
+    ratis.common.SetConfigurationRequestProto setConfigurationRequest = 5;
+    ratis.common.GroupManagementRequestProto groupManagementRequest = 6;
+    ratis.common.ServerInformationRequestProto serverInformationRequest = 7;
+  }
+}
+
+message RaftNettyServerReplyProto {
+  oneof raftNettyServerReply {
+    ratis.common.RequestVoteReplyProto requestVoteReply = 1;
+    ratis.common.AppendEntriesReplyProto appendEntriesReply = 2;
+    ratis.common.InstallSnapshotReplyProto installSnapshotReply = 3;
+    ratis.common.RaftClientReplyProto raftClientReply = 4;
+    ratis.common.ServerInformationReplyProto serverInfoReply = 5;
+    RaftNettyExceptionReplyProto exceptionReply = 6;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-proto/src/main/proto/RMap.proto
----------------------------------------------------------------------
diff --git a/ratis-proto/src/main/proto/RMap.proto b/ratis-proto/src/main/proto/RMap.proto
new file mode 100644
index 0000000..43c9377
--- /dev/null
+++ b/ratis-proto/src/main/proto/RMap.proto
@@ -0,0 +1,189 @@
+/**
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.apache.ratis.proto.rmap";
+option java_outer_classname = "RMapProtos";
+option java_generate_equals_and_hash = true;
+package ratis.rmap;
+
+// TODO: This .proto file should go to the ratis-replicated-map module, but we need it here
+// due to shading.
+
+// Metadata about a replicated map
+message RMapInfo {
+    int64 rmap_id = 1;
+    string name = 2;
+    string key_class = 3;
+    string value_class = 4;
+    string key_serde_class = 5;
+    string value_serde_class = 6;
+    string key_comparator_class = 7;
+}
+
+// An entry in a replicated map.`
+message Entry {
+    bytes key = 1;
+    bytes value = 2;
+}
+
+// TODO: raft client should allow a Service decleration, and calling a method from the service
+// similar to how coprocessor calls work in HBase.
+message Request {
+    oneof RequestType {
+        MultiActionRequest multi_action_request = 1;
+        ScanRequest scan_request = 2;
+        CreateRMapRequest create_rmap_request = 3;
+        DeleteRMapRequest delete_rmap_request = 4;
+        ListRMapInfosRequest list_rmap_infos_request = 5;
+    }
+}
+
+message Response {
+    ExceptionResponse exception = 1;
+    oneof ResponseType {
+        MultiActionResponse multi_action_response = 2;
+        ScanResponse scan_response = 3;
+        CreateRMapResponse create_rmap_response = 4;
+        DeleteRMapResponse delete_rmap_response = 5;
+        ListRMapInfosResponse list_rmap_infos_response = 6;
+    }
+}
+
+message MultiActionRequest {
+    int64 rmap_id = 1;
+    repeated Action action = 2;
+}
+
+message Action {
+    oneof ActionType {
+        GetRequest get_request = 1;
+        PutRequest put_request = 2;
+    }
+}
+
+message ActionResponse {
+    oneof ActionType {
+        GetResponse get_response = 1;
+        PutResponse put_response = 2;
+    }
+}
+
+message MultiActionResponse {
+    repeated ActionResponse action_response = 1;
+}
+
+message CreateRMapRequest {
+    RMapInfo rmap_info = 1;
+}
+
+message CreateRMapResponse {
+    RMapInfo rmap_info = 1;
+}
+
+message DeleteRMapRequest {
+    int64 rmap_id = 1;
+}
+
+message DeleteRMapResponse {
+}
+
+message ListRMapInfosRequest {
+    oneof ListRMapInfosType {
+        // if set, we only care about a particular RMapInfo
+        int64 rmap_id = 1;
+
+        // only return infos whose names match this pattern
+        string name_pattern = 2;
+    }
+}
+
+message ListRMapInfosResponse {
+    repeated RMapInfo rmap_info = 1;
+}
+
+message GetRequest {
+    bytes key = 1;
+}
+
+message GetResponse {
+    bool found = 1;
+    bytes key = 2;
+    bytes value = 3;
+}
+
+message PutRequest {
+    bytes key = 1;
+    bytes value = 2;
+}
+
+message PutResponse {
+}
+
+message Scan {
+    bytes start_Key = 1;
+    bytes end_key = 2;
+    bool start_key_inclusive = 3;
+    bool end_key_inclusive = 4;
+    bool keys_only = 5;
+    int32 limit = 6;
+}
+
+message ScanRequest {
+    int64 rmap_id = 1;
+    Scan scan = 2;
+}
+
+message ScanResponse {
+    repeated Entry entry = 1;
+}
+
+message ExceptionResponse {
+    // Class name of the exception thrown from the server
+    string exception_class_name = 1;
+    // Exception stack trace from the server side
+    string stack_trace = 2;
+    // Optional hostname.  Filled in for some exceptions such as region moved
+    // where exception gives clue on where the region may have moved.
+    string hostname = 3;
+    int32 port = 4;
+    // Set if we are NOT to retry on receipt of this exception
+    bool do_not_retry = 5;
+}
+
+message Id {
+    int64 id = 1;
+}
+
+message WALEntry {
+    int64 rmap_id = 1;  // these are shared by all WALEntry types
+    repeated Entry entry = 2;
+    oneof WALEntryType {
+        // Multi is not here, because we do not want to create one more object unnecessarily
+        CreateRMapWALEntry create_rmap_entry = 3;
+        DeleteRMapWALEntry delete_rmap_entry = 4;
+    }
+}
+
+message CreateRMapWALEntry {
+    RMapInfo rmap_info = 1;
+    Id id = 2;
+}
+
+message DeleteRMapWALEntry {
+    int64 id = 1;
+}