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);