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;