This is an automated email from the ASF dual-hosted git repository.

szetszwo 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 07543a4  RATIS-455. Move exception classes to 
org.apache.ratis.protocol.exceptions (#203). Contributed by Rui Wang
07543a4 is described below

commit 07543a44c00e680cec24c1f18d9aa625b09f6e5e
Author: Rui Wang <[email protected]>
AuthorDate: Wed Sep 16 13:31:28 2020 -0700

    RATIS-455. Move exception classes to org.apache.ratis.protocol.exceptions 
(#203). Contributed by Rui Wang
---
 .../main/java/org/apache/ratis/client/impl/ClientProtoUtils.java  | 6 ++++++
 .../src/main/java/org/apache/ratis/client/impl/OrderedAsync.java  | 4 ++--
 .../main/java/org/apache/ratis/client/impl/RaftClientImpl.java    | 6 ++++++
 .../main/java/org/apache/ratis/client/impl/UnorderedAsync.java    | 6 +++---
 .../src/main/java/org/apache/ratis/protocol/RaftClientReply.java  | 6 ++++++
 .../ratis/protocol/{ => exceptions}/AlreadyClosedException.java   | 2 +-
 .../ratis/protocol/{ => exceptions}/AlreadyExistsException.java   | 2 +-
 .../apache/ratis/protocol/{ => exceptions}/ChecksumException.java | 2 +-
 .../ratis/protocol/{ => exceptions}/GroupMismatchException.java   | 2 +-
 .../ratis/protocol/{ => exceptions}/LeaderNotReadyException.java  | 4 +++-
 .../ratis/protocol/{ => exceptions}/NotLeaderException.java       | 4 +++-
 .../ratis/protocol/{ => exceptions}/NotReplicatedException.java   | 2 +-
 .../org/apache/ratis/protocol/{ => exceptions}/RaftException.java | 2 +-
 .../protocol/{ => exceptions}/RaftRetryFailureException.java      | 3 ++-
 .../{ => exceptions}/ReconfigurationInProgressException.java      | 2 +-
 .../{ => exceptions}/ReconfigurationTimeoutException.java         | 2 +-
 .../ratis/protocol/exceptions/ResourceUnavailableException.java   | 2 --
 .../ratis/protocol/{ => exceptions}/ServerNotReadyException.java  | 2 +-
 .../ratis/protocol/{ => exceptions}/StaleReadException.java       | 2 +-
 .../ratis/protocol/{ => exceptions}/StateMachineException.java    | 4 +++-
 .../org/apache/ratis/protocol/exceptions/StreamException.java     | 2 --
 .../ratis/protocol/{ => exceptions}/TimeoutIOException.java       | 2 +-
 ratis-common/src/main/java/org/apache/ratis/util/IOUtils.java     | 4 ++--
 .../src/main/java/org/apache/ratis/util/PeerProxyMap.java         | 2 +-
 .../src/main/java/org/apache/ratis/util/SlidingWindow.java        | 2 +-
 .../java/org/apache/ratis/examples/filestore/FileStoreClient.java | 2 +-
 ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java      | 4 ++--
 .../org/apache/ratis/grpc/client/GrpcClientProtocolClient.java    | 8 ++++----
 .../org/apache/ratis/grpc/client/GrpcClientProtocolService.java   | 3 +++
 .../src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java | 1 +
 .../java/org/apache/ratis/grpc/client/GrpcClientStreamer.java     | 1 +
 .../java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java   | 6 ++++++
 .../src/main/java/org/apache/ratis/netty/NettyRpcProxy.java       | 2 +-
 .../src/main/java/org/apache/ratis/server/impl/LeaderState.java   | 4 ++++
 .../main/java/org/apache/ratis/server/impl/PendingRequest.java    | 1 +
 .../main/java/org/apache/ratis/server/impl/PendingRequests.java   | 4 ++--
 .../main/java/org/apache/ratis/server/impl/RaftServerImpl.java    | 8 ++++++++
 .../main/java/org/apache/ratis/server/impl/RaftServerProxy.java   | 3 +++
 .../src/main/java/org/apache/ratis/server/impl/ServerState.java   | 1 +
 .../java/org/apache/ratis/server/impl/StateMachineUpdater.java    | 2 +-
 .../src/main/java/org/apache/ratis/server/impl/WatchRequests.java | 2 +-
 .../src/main/java/org/apache/ratis/server/raftlog/RaftLog.java    | 2 +-
 .../java/org/apache/ratis/server/raftlog/RaftLogIOException.java  | 2 +-
 .../org/apache/ratis/server/raftlog/RaftLogSequentialOps.java     | 2 +-
 .../ratis/server/raftlog/segmented/SegmentedRaftLogReader.java    | 2 +-
 .../ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java    | 2 +-
 .../src/test/java/org/apache/ratis/RaftAsyncExceptionTests.java   | 4 ++--
 ratis-server/src/test/java/org/apache/ratis/RaftAsyncTests.java   | 6 +++---
 .../src/test/java/org/apache/ratis/RaftExceptionBaseTest.java     | 4 ++++
 .../src/test/java/org/apache/ratis/WatchRequestTests.java         | 8 ++++----
 .../org/apache/ratis/server/impl/GroupManagementBaseTest.java     | 2 +-
 .../org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java | 3 +++
 .../apache/ratis/server/impl/RaftStateMachineExceptionTests.java  | 1 +
 .../org/apache/ratis/statemachine/SimpleStateMachine4Testing.java | 2 +-
 .../test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java   | 4 ++--
 .../java/org/apache/ratis/retry/TestExceptionDependentRetry.java  | 4 ++--
 .../src/test/java/org/apache/ratis/retry/TestRetryPolicy.java     | 6 +++---
 .../src/test/java/org/apache/ratis/server/ServerRestartTests.java | 4 ++--
 .../ratis/server/raftlog/segmented/TestRaftLogReadWrite.java      | 2 +-
 .../ratis/server/raftlog/segmented/TestSegmentedRaftLog.java      | 2 +-
 60 files changed, 124 insertions(+), 67 deletions(-)

diff --git 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
index c14321c..5b3cb7b 100644
--- 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
+++ 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
@@ -19,6 +19,12 @@ package org.apache.ratis.client.impl;
 
 import java.util.Optional;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.NotReplicatedException;
+import org.apache.ratis.protocol.exceptions.RaftException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.proto.RaftProtos.*;
 import org.apache.ratis.util.ProtoUtils;
diff --git 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/OrderedAsync.java 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/OrderedAsync.java
index 3b6c396..0b642b7 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/impl/OrderedAsync.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/impl/OrderedAsync.java
@@ -23,9 +23,9 @@ import 
org.apache.ratis.client.impl.RaftClientImpl.PendingClientRequest;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto.TypeCase;
 import org.apache.ratis.proto.RaftProtos.SlidingWindowEntry;
-import org.apache.ratis.protocol.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
 import org.apache.ratis.protocol.Message;
-import org.apache.ratis.protocol.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftPeerId;
diff --git 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
index 8f00e50..4d89bd3 100644
--- 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
+++ 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
@@ -26,7 +26,13 @@ import 
org.apache.ratis.proto.RaftProtos.RaftClientRequestProto.TypeCase;
 import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 import org.apache.ratis.proto.RaftProtos.SlidingWindowEntry;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.RaftException;
+import org.apache.ratis.protocol.exceptions.RaftRetryFailureException;
 import org.apache.ratis.protocol.exceptions.ResourceUnavailableException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.retry.RetryPolicy;
 import org.apache.ratis.util.CollectionUtils;
 import org.apache.ratis.util.JavaUtils;
diff --git 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/UnorderedAsync.java 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/UnorderedAsync.java
index eeb6b96..6363c65 100644
--- 
a/ratis-client/src/main/java/org/apache/ratis/client/impl/UnorderedAsync.java
+++ 
b/ratis-client/src/main/java/org/apache/ratis/client/impl/UnorderedAsync.java
@@ -20,11 +20,11 @@ package org.apache.ratis.client.impl;
 import org.apache.ratis.client.retry.ClientRetryEvent;
 import org.apache.ratis.client.impl.RaftClientImpl.PendingClientRequest;
 import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.protocol.GroupMismatchException;
-import org.apache.ratis.protocol.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.protocol.RaftException;
+import org.apache.ratis.protocol.exceptions.RaftException;
 import org.apache.ratis.retry.RetryPolicy;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.TimeDuration;
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java 
b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
index 33137c9..36e2fd2 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
@@ -18,6 +18,12 @@
 package org.apache.ratis.protocol;
 
 import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.NotReplicatedException;
+import org.apache.ratis.protocol.exceptions.RaftException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;
 import org.apache.ratis.util.ProtoUtils;
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/AlreadyClosedException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/AlreadyClosedException.java
similarity index 95%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/AlreadyClosedException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/AlreadyClosedException.java
index f69173f..0156892 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/AlreadyClosedException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/AlreadyClosedException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 /**
  * The corresponding object is already closed.
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/AlreadyExistsException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/AlreadyExistsException.java
similarity index 96%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/AlreadyExistsException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/AlreadyExistsException.java
index cc441f2..a90cd39 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/AlreadyExistsException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/AlreadyExistsException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 import java.io.IOException;
 
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ChecksumException.java 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ChecksumException.java
similarity index 96%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/ChecksumException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ChecksumException.java
index 1742c24..70f2774 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ChecksumException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ChecksumException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 import java.io.IOException;
 
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/GroupMismatchException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/GroupMismatchException.java
similarity index 95%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/GroupMismatchException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/GroupMismatchException.java
index af60825..56a872c 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/GroupMismatchException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/GroupMismatchException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 /**
  * This exception indicates that the group id in the request does not match
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/LeaderNotReadyException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/LeaderNotReadyException.java
similarity index 93%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/LeaderNotReadyException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/LeaderNotReadyException.java
index efe795f..d441a8d 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/LeaderNotReadyException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/LeaderNotReadyException.java
@@ -15,7 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
+
+import org.apache.ratis.protocol.RaftGroupMemberId;
 
 /**
  * This exception is sent from the server to a client. The server has just
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/NotLeaderException.java 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/NotLeaderException.java
similarity index 92%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/NotLeaderException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/NotLeaderException.java
index ab291b9..8d5c2cb 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/NotLeaderException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/NotLeaderException.java
@@ -15,8 +15,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
+import org.apache.ratis.protocol.RaftGroupMemberId;
+import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.util.Preconditions;
 
 import java.util.Collection;
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/NotReplicatedException.java
similarity index 97%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/NotReplicatedException.java
index c8643d7..5f48654 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/NotReplicatedException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftException.java 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/RaftException.java
similarity index 96%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/RaftException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/RaftException.java
index 11aac90..7e7db0e 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/RaftException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 import java.io.IOException;
 
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftRetryFailureException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/RaftRetryFailureException.java
similarity index 93%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/RaftRetryFailureException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/RaftRetryFailureException.java
index 47e7902..a04ed7e 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftRetryFailureException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/RaftRetryFailureException.java
@@ -15,8 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
+import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.retry.RetryPolicy;
 
 /**
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ReconfigurationInProgressException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ReconfigurationInProgressException.java
similarity index 95%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/ReconfigurationInProgressException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ReconfigurationInProgressException.java
index 3d0f093..76ccbf4 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ReconfigurationInProgressException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ReconfigurationInProgressException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 public class ReconfigurationInProgressException extends RaftException {
   public ReconfigurationInProgressException(String message) {
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ReconfigurationTimeoutException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ReconfigurationTimeoutException.java
similarity index 95%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/ReconfigurationTimeoutException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ReconfigurationTimeoutException.java
index 69a2e51..14ff977 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ReconfigurationTimeoutException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ReconfigurationTimeoutException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 public class ReconfigurationTimeoutException extends RaftException {
   public ReconfigurationTimeoutException(String message) {
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ResourceUnavailableException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ResourceUnavailableException.java
index 92b4abb..3d01423 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ResourceUnavailableException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ResourceUnavailableException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.ratis.protocol.exceptions;
 
-import org.apache.ratis.protocol.RaftException;
-
 /**
  * A particular resource is unavailable.
  */
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ServerNotReadyException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ServerNotReadyException.java
similarity index 95%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/ServerNotReadyException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ServerNotReadyException.java
index 80307e6..06455c8 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/ServerNotReadyException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/ServerNotReadyException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 /**
  * The server is not ready yet.
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/StaleReadException.java 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StaleReadException.java
similarity index 95%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/StaleReadException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StaleReadException.java
index 0240479..410f05b 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/StaleReadException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StaleReadException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 /**
  * This exception indicates the failure of a stale-read.
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/StateMachineException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StateMachineException.java
similarity index 93%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/StateMachineException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StateMachineException.java
index 15545e1..6a97203 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/StateMachineException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StateMachineException.java
@@ -15,7 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
+
+import org.apache.ratis.protocol.RaftGroupMemberId;
 
 public class StateMachineException extends RaftException {
   public StateMachineException(RaftGroupMemberId serverId, Throwable cause) {
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StreamException.java
 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StreamException.java
index 777e56c..f63f72c 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StreamException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/StreamException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.ratis.protocol.exceptions;
 
-import org.apache.ratis.protocol.RaftException;
-
 /**
  * A stream is not found in the server.
  */
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/protocol/TimeoutIOException.java 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/TimeoutIOException.java
similarity index 96%
rename from 
ratis-common/src/main/java/org/apache/ratis/protocol/TimeoutIOException.java
rename to 
ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/TimeoutIOException.java
index bfdff88..7bcd3c9 100644
--- 
a/ratis-common/src/main/java/org/apache/ratis/protocol/TimeoutIOException.java
+++ 
b/ratis-common/src/main/java/org/apache/ratis/protocol/exceptions/TimeoutIOException.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ratis.protocol;
+package org.apache.ratis.protocol.exceptions;
 
 import java.io.IOException;
 
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/IOUtils.java 
b/ratis-common/src/main/java/org/apache/ratis/util/IOUtils.java
index b075b3f..16eb49b 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/IOUtils.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/IOUtils.java
@@ -17,8 +17,8 @@
  */
 package org.apache.ratis.util;
 
-import org.apache.ratis.protocol.AlreadyClosedException;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.slf4j.Logger;
 
 import java.io.ByteArrayInputStream;
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java 
b/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
index 6327adb..5fb6802 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/PeerProxyMap.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.util;
 
-import org.apache.ratis.protocol.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.util.function.CheckedFunction;
diff --git 
a/ratis-common/src/main/java/org/apache/ratis/util/SlidingWindow.java 
b/ratis-common/src/main/java/org/apache/ratis/util/SlidingWindow.java
index c9175d0..75ffd80 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/SlidingWindow.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/SlidingWindow.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.util;
 
-import org.apache.ratis.protocol.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git 
a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
 
b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
index 4b8cd5a..639cfdb 100644
--- 
a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
+++ 
b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
@@ -30,7 +30,7 @@ import 
org.apache.ratis.proto.ExamplesProtos.WriteRequestProto;
 import org.apache.ratis.protocol.Message;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftGroup;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
index 28b7cc7..09a180d 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
@@ -18,8 +18,8 @@
 package org.apache.ratis.grpc;
 
 import org.apache.ratis.protocol.RaftClientReply;
-import org.apache.ratis.protocol.ServerNotReadyException;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.ServerNotReadyException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.thirdparty.io.grpc.ManagedChannel;
 import org.apache.ratis.thirdparty.io.grpc.Metadata;
 import org.apache.ratis.thirdparty.io.grpc.Status;
diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
index 42c24ef..9e45db3 100644
--- 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
+++ 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
@@ -32,8 +32,8 @@ import 
org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto;
 import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
 import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
 import org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto;
-import org.apache.ratis.protocol.LeaderNotReadyException;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.thirdparty.io.grpc.netty.GrpcSslContexts;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.SslContextBuilder;
 import org.apache.ratis.proto.grpc.AdminProtocolServiceGrpc;
@@ -41,9 +41,9 @@ import 
org.apache.ratis.proto.grpc.AdminProtocolServiceGrpc.AdminProtocolService
 import org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc;
 import 
org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceBlockingStub;
 import 
org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceStub;
-import org.apache.ratis.protocol.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
 import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.protocol.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftPeer;
diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
index d878c8d..dc8ce49 100644
--- 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
+++ 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
@@ -20,6 +20,9 @@ package org.apache.ratis.grpc.client;
 import org.apache.ratis.client.impl.ClientProtoUtils;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.RaftException;
 import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
 import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
 import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
index 0450fa0..9fe24dd 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
@@ -24,6 +24,7 @@ import org.apache.ratis.grpc.GrpcConfigKeys;
 import org.apache.ratis.grpc.GrpcTlsConfig;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
 import org.apache.ratis.thirdparty.io.grpc.StatusRuntimeException;
 import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
 import org.apache.ratis.proto.RaftProtos.GroupInfoRequestProto;
diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
index a93a622..7f53453 100644
--- 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
+++ 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
@@ -23,6 +23,7 @@ import org.apache.ratis.grpc.GrpcConfigKeys;
 import org.apache.ratis.grpc.GrpcTlsConfig;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
 import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
diff --git 
a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
 
b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
index ffb6dc8..bd04dc1 100644
--- 
a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
+++ 
b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/HadoopClientRpc.java
@@ -21,6 +21,12 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.ipc.RemoteException;
 import org.apache.ratis.client.impl.RaftClientRpcWithProxy;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.RaftException;
+import org.apache.ratis.protocol.exceptions.ReconfigurationInProgressException;
+import org.apache.ratis.protocol.exceptions.ReconfigurationTimeoutException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.util.PeerProxyMap;
 
 import java.io.IOException;
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 15e54f4..5f5d7ec 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
@@ -20,7 +20,7 @@ package org.apache.ratis.netty;
 import org.apache.ratis.client.RaftClientConfigKeys;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.RaftPeer;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 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;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
index 0b1a9e1..5718158 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
@@ -20,6 +20,10 @@ package org.apache.ratis.server.impl;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.NotReplicatedException;
+import org.apache.ratis.protocol.exceptions.ReconfigurationTimeoutException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.metrics.LogAppenderMetrics;
 import org.apache.ratis.server.protocol.TermIndex;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequest.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequest.java
index a514c63..933dfd1 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequest.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequest.java
@@ -19,6 +19,7 @@ package org.apache.ratis.server.impl;
 
 import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.statemachine.TransactionContext;
 import org.apache.ratis.util.Preconditions;
 
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java
index 0ea59a7..1a222ea 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java
@@ -21,10 +21,10 @@ import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
 import org.apache.ratis.protocol.Message;
-import org.apache.ratis.protocol.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftClientRequest;
-import org.apache.ratis.protocol.RaftException;
+import org.apache.ratis.protocol.exceptions.RaftException;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.SetConfigurationRequest;
 import org.apache.ratis.server.RaftServerConfigKeys;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
index 79436d0..b1d56d6 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
@@ -20,7 +20,15 @@ package org.apache.ratis.server.impl;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.*;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.RaftException;
+import org.apache.ratis.protocol.exceptions.ReconfigurationInProgressException;
 import org.apache.ratis.protocol.exceptions.ResourceUnavailableException;
+import org.apache.ratis.protocol.exceptions.ServerNotReadyException;
+import org.apache.ratis.protocol.exceptions.StaleReadException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.RaftServerMXBean;
 import org.apache.ratis.server.RaftServerRpc;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java
index 38cccba..f52bc90 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java
@@ -29,6 +29,9 @@ import org.apache.ratis.proto.RaftProtos.RaftRpcRequestProto;
 import org.apache.ratis.proto.RaftProtos.RequestVoteReplyProto;
 import org.apache.ratis.proto.RaftProtos.RequestVoteRequestProto;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.AlreadyExistsException;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
 import org.apache.ratis.rpc.RpcType;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
index 3011fbe..4ce061d 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
@@ -19,6 +19,7 @@ package org.apache.ratis.server.impl;
 
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.ratis.server.raftlog.RaftLog;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
index 907dc80..9b0abec 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
@@ -20,7 +20,7 @@ package org.apache.ratis.server.impl;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 import org.apache.ratis.protocol.Message;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.raftlog.RaftLog;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/WatchRequests.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/WatchRequests.java
index f7f76eb..97605d5 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/WatchRequests.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/WatchRequests.java
@@ -20,7 +20,7 @@ package org.apache.ratis.server.impl;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 import org.apache.ratis.proto.RaftProtos.WatchRequestTypeProto;
-import org.apache.ratis.protocol.NotReplicatedException;
+import org.apache.ratis.protocol.exceptions.NotReplicatedException;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.exceptions.ResourceUnavailableException;
 import org.apache.ratis.server.RaftServerConfigKeys;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java
index 4122262..8f88020 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLog.java
@@ -21,7 +21,7 @@ import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftConfiguration;
 import org.apache.ratis.server.impl.ServerProtoUtils;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
index 37ab9ae..d4c21c1 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogIOException.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.server.raftlog;
 
-import org.apache.ratis.protocol.RaftException;
+import org.apache.ratis.protocol.exceptions.RaftException;
 
 /**
  * Exception while reading/writing RaftLog
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogSequentialOps.java
 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogSequentialOps.java
index 4b790ea..ee4377a 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogSequentialOps.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogSequentialOps.java
@@ -18,7 +18,7 @@
 package org.apache.ratis.server.raftlog;
 
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.impl.RaftConfiguration;
 import org.apache.ratis.statemachine.TransactionContext;
 import org.apache.ratis.util.Preconditions;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
index b529ad0..4a1e17d 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
@@ -18,7 +18,7 @@
 package org.apache.ratis.server.raftlog.segmented;
 
 import org.apache.ratis.io.CorruptedFileException;
-import org.apache.ratis.protocol.ChecksumException;
+import org.apache.ratis.protocol.exceptions.ChecksumException;
 import org.apache.ratis.server.impl.RaftServerConstants;
 import org.apache.ratis.server.metrics.RaftLogMetrics;
 import org.apache.ratis.thirdparty.com.google.protobuf.CodedInputStream;
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
index 8555998..402a222 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
@@ -21,7 +21,7 @@ import com.codahale.metrics.Gauge;
 import com.codahale.metrics.Timer;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.RaftGroupMemberId;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.impl.ServerProtoUtils;
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/RaftAsyncExceptionTests.java 
b/ratis-server/src/test/java/org/apache/ratis/RaftAsyncExceptionTests.java
index 9b2ad9b..09ddec8 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftAsyncExceptionTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftAsyncExceptionTests.java
@@ -22,8 +22,8 @@ import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientConfigKeys;
 import org.apache.ratis.client.impl.OrderedAsync;
-import org.apache.ratis.protocol.AlreadyClosedException;
-import org.apache.ratis.protocol.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.RaftGroupId;
diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftAsyncTests.java 
b/ratis-server/src/test/java/org/apache/ratis/RaftAsyncTests.java
index 370cfd6..552f049 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftAsyncTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftAsyncTests.java
@@ -25,13 +25,13 @@ import org.apache.ratis.client.impl.RaftClientTestUtil;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
-import org.apache.ratis.protocol.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
 import org.apache.ratis.protocol.Message;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.RaftRetryFailureException;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.RaftRetryFailureException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.retry.RetryPolicies;
 import org.apache.ratis.retry.RetryPolicies.RetryLimited;
 import org.apache.ratis.retry.RetryPolicy;
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/RaftExceptionBaseTest.java 
b/ratis-server/src/test/java/org/apache/ratis/RaftExceptionBaseTest.java
index 27bf523..d825d87 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftExceptionBaseTest.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftExceptionBaseTest.java
@@ -22,6 +22,10 @@ import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.GroupMismatchException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.StaleReadException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.raftlog.RaftLog;
diff --git a/ratis-server/src/test/java/org/apache/ratis/WatchRequestTests.java 
b/ratis-server/src/test/java/org/apache/ratis/WatchRequestTests.java
index c9dd63f..368b871 100644
--- a/ratis-server/src/test/java/org/apache/ratis/WatchRequestTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/WatchRequestTests.java
@@ -23,11 +23,11 @@ import org.apache.ratis.client.RaftClientConfigKeys;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
-import org.apache.ratis.protocol.AlreadyClosedException;
-import org.apache.ratis.protocol.NotReplicatedException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.NotReplicatedException;
 import org.apache.ratis.protocol.RaftClientReply;
-import org.apache.ratis.protocol.RaftRetryFailureException;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.RaftRetryFailureException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.retry.RetryPolicies;
 import org.apache.ratis.retry.RetryPolicy;
 import org.apache.ratis.server.RaftServerConfigKeys;
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/GroupManagementBaseTest.java
 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/GroupManagementBaseTest.java
index a205ff2..3355cb9 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/GroupManagementBaseTest.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/GroupManagementBaseTest.java
@@ -23,7 +23,7 @@ import org.apache.ratis.MiniRaftCluster;
 import org.apache.ratis.RaftTestUtil;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.protocol.AlreadyExistsException;
+import org.apache.ratis.protocol.exceptions.AlreadyExistsException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.RaftGroupId;
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
index 3ee0a46..38bb192 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
@@ -27,6 +27,9 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.ReconfigurationInProgressException;
+import org.apache.ratis.protocol.exceptions.ReconfigurationTimeoutException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.raftlog.RaftLog;
 import org.apache.ratis.server.storage.RaftStorageTestUtils;
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftStateMachineExceptionTests.java
 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftStateMachineExceptionTests.java
index 04d13a2..e6e5c2b 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftStateMachineExceptionTests.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftStateMachineExceptionTests.java
@@ -26,6 +26,7 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientRpc;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.*;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.raftlog.RaftLog;
 import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
 import org.apache.ratis.statemachine.StateMachine;
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
 
b/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
index 45761eb..6fd9712 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
@@ -27,7 +27,7 @@ import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerConstants;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
index 85d1171..5d71f61 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
@@ -42,11 +42,11 @@ import 
org.apache.ratis.grpc.client.GrpcClientProtocolClient;
 import org.apache.ratis.grpc.client.GrpcClientProtocolService;
 import org.apache.ratis.proto.RaftProtos;
 import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
-import org.apache.ratis.protocol.AlreadyClosedException;
+import org.apache.ratis.protocol.exceptions.AlreadyClosedException;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.retry.RetryPolicies;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.RaftServerRpc;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/retry/TestExceptionDependentRetry.java
 
b/ratis-test/src/test/java/org/apache/ratis/retry/TestExceptionDependentRetry.java
index 675635e..8fa02c9 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/retry/TestExceptionDependentRetry.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/retry/TestExceptionDependentRetry.java
@@ -25,8 +25,8 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.client.RaftClientConfigKeys;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.grpc.MiniRaftClusterWithGrpc;
-import org.apache.ratis.protocol.RaftRetryFailureException;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.RaftRetryFailureException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/retry/TestRetryPolicy.java 
b/ratis-test/src/test/java/org/apache/ratis/retry/TestRetryPolicy.java
index 005dab0..d1dcc82 100644
--- a/ratis-test/src/test/java/org/apache/ratis/retry/TestRetryPolicy.java
+++ b/ratis-test/src/test/java/org/apache/ratis/retry/TestRetryPolicy.java
@@ -24,13 +24,13 @@ import 
org.apache.ratis.client.retry.RequestTypeDependentRetryPolicy;
 import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
 import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.protocol.LeaderNotReadyException;
-import org.apache.ratis.protocol.NotLeaderException;
+import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
+import org.apache.ratis.protocol.exceptions.NotLeaderException;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.protocol.exceptions.ResourceUnavailableException;
 import org.apache.ratis.util.TimeDuration;
 import org.junit.Assert;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/server/ServerRestartTests.java 
b/ratis-test/src/test/java/org/apache/ratis/server/ServerRestartTests.java
index 9a6c816..f8cec9a 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/ServerRestartTests.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/ServerRestartTests.java
@@ -25,11 +25,11 @@ import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
-import org.apache.ratis.protocol.ChecksumException;
+import org.apache.ratis.protocol.exceptions.ChecksumException;
 import org.apache.ratis.protocol.Message;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.StateMachineException;
+import org.apache.ratis.protocol.exceptions.StateMachineException;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.impl.RaftServerProxy;
 import org.apache.ratis.server.impl.ServerProtoUtils;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestRaftLogReadWrite.java
 
b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestRaftLogReadWrite.java
index aff1e23..c2ac82e 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestRaftLogReadWrite.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestRaftLogReadWrite.java
@@ -20,7 +20,7 @@ package org.apache.ratis.server.raftlog.segmented;
 import org.apache.ratis.BaseTest;
 import org.apache.ratis.RaftTestUtil.SimpleOperation;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.protocol.ChecksumException;
+import org.apache.ratis.protocol.exceptions.ChecksumException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerConstants;
 import org.apache.ratis.server.impl.RaftServerConstants.StartupOption;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
 
b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
index 14580d2..5ba5e91 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
@@ -25,7 +25,7 @@ import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.protocol.TimeoutIOException;
+import org.apache.ratis.protocol.exceptions.TimeoutIOException;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.RaftServerConstants;
 import org.apache.ratis.server.impl.RetryCacheTestUtil;

Reply via email to