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:39:39 UTC
[ignite-3] branch ignite-14149 updated: IGNITE-14149 Raft group
services.
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 7ffe756 IGNITE-14149 Raft group services.
7ffe756 is described below
commit 7ffe7563b713c49ff101ccc23861ee00c6de6a8e
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Wed Feb 17 14:39:18 2021 +0300
IGNITE-14149 Raft group services.
---
.../raft/client/RaftClientCommonMessages.java | 20 ++++++++++++++++++
.../raft/client/{ => rpc}/RaftGroupRpcClient.java | 4 ++--
.../{ => rpc}/impl/RaftGroupRpcClientImpl.java | 24 ++++++++++++----------
.../client/service/RaftGroupClientService.java | 8 ++++++++
.../raft/client/service/RaftGroupMgmtService.java | 5 +++++
.../ignite/raft/client/RaftGroupRpcClientTest.java | 4 ++--
6 files changed, 50 insertions(+), 15 deletions(-)
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientCommonMessages.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientCommonMessages.java
index 39b9b90..30b1cb5 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientCommonMessages.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientCommonMessages.java
@@ -256,4 +256,24 @@ public final class RaftClientCommonMessages {
LearnersOpResponse build();
}
}
+
+ public interface UserRequest<T> extends Message {
+ T request();
+
+ public interface Builder<T> {
+ Builder setRequest(T request);
+
+ UserRequest<T> build();
+ }
+ }
+
+ public interface UserResponse<T> extends Message {
+ T response();
+
+ public interface Builder<T> {
+ Builder setResponse(T response);
+
+ UserResponse<T> build();
+ }
+ }
}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftGroupRpcClient.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java
similarity index 98%
rename from modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftGroupRpcClient.java
rename to modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java
index bccfded..acdac5b 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftGroupRpcClient.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.raft.client;
+package org.apache.ignite.raft.client.rpc;
import java.util.concurrent.Future;
import org.apache.ignite.raft.State;
@@ -38,7 +38,7 @@ import static org.apache.ignite.raft.client.RaftClientCommonMessages.StatusRespo
import static org.apache.ignite.raft.client.RaftClientCommonMessages.TransferLeaderRequest;
/**
- * Raft group RPC client.
+ * Low-level raft group RPC client.
*/
public interface RaftGroupRpcClient {
/**
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/impl/RaftGroupRpcClientImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
similarity index 87%
rename from modules/raft-client/src/main/java/org/apache/ignite/raft/client/impl/RaftGroupRpcClientImpl.java
rename to modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
index affa939..0a1fb69 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/impl/RaftGroupRpcClientImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
@@ -1,4 +1,4 @@
-package org.apache.ignite.raft.client.impl;
+package org.apache.ignite.raft.client.rpc.impl;
import java.util.HashSet;
import java.util.Map;
@@ -12,7 +12,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.ignite.raft.PeerId;
import org.apache.ignite.raft.State;
import org.apache.ignite.raft.client.RaftClientCommonMessages;
-import org.apache.ignite.raft.client.RaftGroupRpcClient;
+import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
import org.apache.ignite.raft.client.message.RaftClientCommonMessageBuilderFactory;
import org.apache.ignite.raft.rpc.InvokeCallback;
import org.apache.ignite.raft.rpc.Message;
@@ -114,18 +114,20 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
if (state.getLeader() == null) {
synchronized (state) {
- CompletableFuture<RaftClientCommonMessages.GetLeaderResponse> fut0 =
- refreshLeader(initialCfgNodes.iterator().next(), request.getGroupId()); // TODO asch search all nodes.
+ PeerId leader = state.getLeader();
- try {
- RaftClientCommonMessages.GetLeaderResponse resp = fut0.get(defaultTimeout, TimeUnit.MILLISECONDS);
+ if (leader == null) {
+ CompletableFuture<RaftClientCommonMessages.GetLeaderResponse> fut0 =
+ refreshLeader(initialCfgNodes.iterator().next(), request.getGroupId()); // TODO asch search all nodes.
- state.setLeader(resp.getLeaderId());
- }
- catch (Exception e) {
- fut.completeExceptionally(e);
+ try {
+ state.setLeader(fut0.get(defaultTimeout, TimeUnit.MILLISECONDS).getLeaderId());
+ }
+ catch (Exception e) {
+ fut.completeExceptionally(e);
- return fut;
+ return fut;
+ }
}
}
}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientService.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientService.java
new file mode 100644
index 0000000..82f71f7
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientService.java
@@ -0,0 +1,8 @@
+package org.apache.ignite.raft.client.service;
+
+/**
+ *
+ */
+public interface RaftGroupClientService {
+ <T, R> R submit(T request);
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupMgmtService.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupMgmtService.java
new file mode 100644
index 0000000..ae86483
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupMgmtService.java
@@ -0,0 +1,5 @@
+package org.apache.ignite.raft.client.service;
+
+/** */
+public interface RaftGroupMgmtService {
+}
diff --git a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/RaftGroupRpcClientTest.java b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/RaftGroupRpcClientTest.java
index bf1656a..5aa14b5 100644
--- a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/RaftGroupRpcClientTest.java
+++ b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/RaftGroupRpcClientTest.java
@@ -5,9 +5,9 @@ import java.util.concurrent.Executor;
import java.util.concurrent.Future;
import org.apache.ignite.raft.PeerId;
import org.apache.ignite.raft.State;
-import org.apache.ignite.raft.client.impl.RaftGroupRpcClientImpl;
-import org.apache.ignite.raft.client.message.GetLeaderResponseImpl;
+import org.apache.ignite.raft.client.rpc.impl.RaftGroupRpcClientImpl;
import org.apache.ignite.raft.client.message.RaftClientCommonMessageBuilderFactory;
+import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
import org.apache.ignite.raft.rpc.InvokeCallback;
import org.apache.ignite.raft.rpc.Message;
import org.apache.ignite.raft.rpc.NodeImpl;