You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by as...@apache.org on 2021/02/17 11:52:59 UTC
[ignite-3] branch ignite-14149 updated: IGNITE-14149 Improvements.
This is an automated email from the ASF dual-hosted git repository.
ascherbakov pushed a commit to branch ignite-14149
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/ignite-14149 by this push:
new 634c221 IGNITE-14149 Improvements.
634c221 is described below
commit 634c22155bd458dc31204b3d8253617e29571fb6
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Wed Feb 17 14:52:41 2021 +0300
IGNITE-14149 Improvements.
---
.../java/org/apache/ignite/raft/RaftException.java | 16 +++++++++++++++
.../client/rpc/impl/RaftGroupRpcClientImpl.java | 23 +++++++++++++++++-----
2 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/RaftException.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/RaftException.java
new file mode 100644
index 0000000..f63f6f0
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/RaftException.java
@@ -0,0 +1,16 @@
+package org.apache.ignite.raft;
+
+/** */
+public class RaftException extends Exception {
+ private final int statusCode;
+
+ public RaftException(int statusCode, String statusMsg) {
+ super(statusMsg);
+
+ this.statusCode = statusCode;
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
index 0a1fb69..86dbd4c 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
@@ -10,8 +10,10 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.RaftException;
import org.apache.ignite.raft.State;
import org.apache.ignite.raft.client.RaftClientCommonMessages;
+import org.apache.ignite.raft.client.RaftClientCommonMessages.StatusResponse;
import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
import org.apache.ignite.raft.client.message.RaftClientCommonMessageBuilderFactory;
import org.apache.ignite.raft.rpc.InvokeCallback;
@@ -55,11 +57,11 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
return null;
}
- @Override public Future<RaftClientCommonMessages.StatusResponse> resetPeers(PeerId peerId, RaftClientCommonMessages.ResetPeerRequest request) {
+ @Override public Future<StatusResponse> resetPeers(PeerId peerId, RaftClientCommonMessages.ResetPeerRequest request) {
return null;
}
- @Override public Future<RaftClientCommonMessages.StatusResponse> snapshot(PeerId peerId, RaftClientCommonMessages.SnapshotRequest request) {
+ @Override public Future<StatusResponse> snapshot(PeerId peerId, RaftClientCommonMessages.SnapshotRequest request) {
return null;
}
@@ -79,7 +81,7 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
return null;
}
- @Override public Future<RaftClientCommonMessages.StatusResponse> transferLeader(RaftClientCommonMessages.TransferLeaderRequest request) {
+ @Override public Future<StatusResponse> transferLeader(RaftClientCommonMessages.TransferLeaderRequest request) {
return null;
}
@@ -136,8 +138,19 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
@Override public void complete(R response, Throwable err) {
if (err != null)
fut.completeExceptionally(err);
- else
- fut.complete(response);
+ else {
+ if (response instanceof StatusResponse) {
+ StatusResponse resp = (StatusResponse) response;
+
+ // Translate error response to exception with the code.
+ if (resp.getStatusCode() != 0)
+ fut.completeExceptionally(new RaftException(resp.getStatusCode(), resp.getStatusMsg()));
+ else
+ fut.complete(response);
+ }
+ else
+ fut.complete(response);
+ }
}
}, executor, defaultTimeout);