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/11 11:34:38 UTC

[ignite-3] branch ignite-13885 updated: IGNITE-13885 Raft client wip 5.

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

ascherbakov pushed a commit to branch ignite-13885
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/ignite-13885 by this push:
     new 5d7a8d7  IGNITE-13885 Raft client wip 5.
5d7a8d7 is described below

commit 5d7a8d7c6b7d3fb7d7055b8da057931e96b91825
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Thu Feb 11 14:34:24 2021 +0300

    IGNITE-13885 Raft client wip 5.
---
 .../main/java/org/apache/ignite/raft/Status.java   | 45 +++++++--------
 .../raft/rpc/message/AddPeerRequestImpl.java       | 43 ++++++++++++++
 .../raft/rpc/message/AddPeerResponseImpl.java      | 50 ++++++++++++++++
 .../raft/rpc/message/ChangePeerRequestImpl.java    | 53 +++++++++++++++++
 .../raft/rpc/message/ChangePeersResponseImpl.java  | 50 ++++++++++++++++
 .../raft/rpc/message/GetPeersRequestImpl.java      | 43 ++++++++++++++
 .../raft/rpc/message/GetPeersResponseImpl.java     | 50 ++++++++++++++++
 .../raft/rpc/message/RemovePeerRequestImpl.java    | 43 ++++++++++++++
 .../raft/rpc/message/RemovePeerResponseImpl.java   | 50 ++++++++++++++++
 .../raft/rpc/message/ResetPeerRequestImpl.java     | 66 ++++++++++++++++++++++
 .../apache/ignite/raft/service/ClientService.java  |  2 +-
 11 files changed, 472 insertions(+), 23 deletions(-)

diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/Status.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/Status.java
index 82a9aa4..1e7a36b 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/Status.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/Status.java
@@ -16,32 +16,33 @@
  */
 package org.apache.ignite.raft;
 
-//A Status encapsulates the result of an operation. It may indicate success,
-
-//or it may indicate an error with an associated error message. It's suitable
-//for passing status of functions with richer information than just error_code
-//in exception-forbidden code. This utility is inspired by leveldb::Status.
-//
-//Multiple threads can invoke const methods on a Status without
-//external synchronization, but if any of the threads may call a
-//non-const method, all threads accessing the same Status must use
-//external synchronization.
-//
-//Since failed status needs to allocate memory, you should be careful when
-//failed status is frequent.
+/**
+ * A Status encapsulates the result of an operation. It may indicate success,
+ * <p>
+ * or it may indicate an error with an associated error message. It's suitable
+ * for passing status of functions with richer information than just error_code
+ * in exception-forbidden code. This utility is inspired by leveldb::Status.
+ * <p>
+ * Multiple threads can invoke const methods on a Status without
+ * external synchronization, but if any of the threads may call a
+ * non-const method, all threads accessing the same Status must use
+ * external synchronization.
+ * <p>
+ * Since failed status needs to allocate memory, you should be careful when
+ * failed status is frequent.
+ */
 public class Status {
-
     /**
      * Status internal state.
-     *
-     * @author boyan (boyan@alibaba-inc.com)
-     *
-     * 2018-Apr-03 11:17:51 AM
      */
     private static class State {
-        /** error code */
-        int    code;
-        /** error msg*/
+        /**
+         * error code
+         */
+        int code;
+        /**
+         * error msg
+         */
         String msg;
 
         State(int code, String msg) {
@@ -212,7 +213,7 @@ public class Status {
             return "Status[OK]";
         } else {
             return "Status[" + RaftError.describeCode(this.state.code) + "<" + this.state.code + ">: " + this.state.msg
-                   + "]";
+                + "]";
         }
     }
 
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/AddPeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/AddPeerRequestImpl.java
new file mode 100644
index 0000000..9280cce
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/AddPeerRequestImpl.java
@@ -0,0 +1,43 @@
+package org.apache.ignite.raft.rpc.message;
+
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class AddPeerRequestImpl implements CliRequests.AddPeerRequest, CliRequests.AddPeerRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private String peerId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public CliRequests.AddPeerRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/AddPeerResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/AddPeerResponseImpl.java
new file mode 100644
index 0000000..b205201
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/AddPeerResponseImpl.java
@@ -0,0 +1,50 @@
+package org.apache.ignite.raft.rpc.message;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class AddPeerResponseImpl implements CliRequests.AddPeerResponse, CliRequests.AddPeerResponse.Builder {
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder addOldPeers(String oldPeersId) {
+        oldPeersList.add(oldPeersId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String newPeersId) {
+        newPeersList.add(newPeersId);
+
+        return this;
+    }
+
+    @Override public CliRequests.AddPeerResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ChangePeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ChangePeerRequestImpl.java
new file mode 100644
index 0000000..0544b5a
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ChangePeerRequestImpl.java
@@ -0,0 +1,53 @@
+package org.apache.ignite.raft.rpc.message;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class ChangePeerRequestImpl implements CliRequests.ChangePeersRequest, CliRequests.ChangePeersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String peerId) {
+        newPeersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ChangePeersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ChangePeersResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ChangePeersResponseImpl.java
new file mode 100644
index 0000000..c6f529b
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ChangePeersResponseImpl.java
@@ -0,0 +1,50 @@
+package org.apache.ignite.raft.rpc.message;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class ChangePeersResponseImpl implements CliRequests.ChangePeersResponse, CliRequests.ChangePeersResponse.Builder {
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder addOldPeers(String oldPeerId) {
+        oldPeersList.add(oldPeerId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String newPeerId) {
+        newPeersList.add(newPeerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ChangePeersResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/GetPeersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/GetPeersRequestImpl.java
new file mode 100644
index 0000000..14c53be
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/GetPeersRequestImpl.java
@@ -0,0 +1,43 @@
+package org.apache.ignite.raft.rpc.message;
+
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class GetPeersRequestImpl implements CliRequests.GetPeersRequest, CliRequests.GetPeersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private boolean onlyAlive;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public boolean getOnlyAlive() {
+        return onlyAlive;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder setOnlyAlive(boolean onlyGetAlive) {
+        this.onlyAlive = onlyGetAlive;
+
+        return this;
+    }
+
+    @Override public CliRequests.GetPeersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/GetPeersResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/GetPeersResponseImpl.java
new file mode 100644
index 0000000..dbe7124
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/GetPeersResponseImpl.java
@@ -0,0 +1,50 @@
+package org.apache.ignite.raft.rpc.message;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class GetPeersResponseImpl implements CliRequests.GetPeersResponse, CliRequests.GetPeersResponse.Builder {
+    private List<String> peersList = new ArrayList<>();
+    private List<String> learnersList = new ArrayList<>();
+
+    @Override public List<String> getPeersList() {
+        return peersList;
+    }
+
+    @Override public int getPeersCount() {
+        return peersList.size();
+    }
+
+    @Override public String getPeers(int index) {
+        return peersList.get(index);
+    }
+
+    @Override public List<String> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public int getLearnersCount() {
+        return learnersList.size();
+    }
+
+    @Override public String getLearners(int index) {
+        return learnersList.get(index);
+    }
+
+    @Override public Builder addPeers(String peerId) {
+        peersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public Builder addLearners(String learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.GetPeersResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/RemovePeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/RemovePeerRequestImpl.java
new file mode 100644
index 0000000..4d2c3fa
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/RemovePeerRequestImpl.java
@@ -0,0 +1,43 @@
+package org.apache.ignite.raft.rpc.message;
+
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class RemovePeerRequestImpl implements CliRequests.RemovePeerRequest, CliRequests.RemovePeerRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private String peerId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public CliRequests.RemovePeerRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/RemovePeerResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/RemovePeerResponseImpl.java
new file mode 100644
index 0000000..a22c912
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/RemovePeerResponseImpl.java
@@ -0,0 +1,50 @@
+package org.apache.ignite.raft.rpc.message;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class RemovePeerResponseImpl implements CliRequests.RemovePeerResponse, CliRequests.RemovePeerResponse.Builder {
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder addOldPeers(String oldPeerId) {
+        oldPeersList.add(oldPeerId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String newPeerId) {
+        newPeersList.add(newPeerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.RemovePeerResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ResetPeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ResetPeerRequestImpl.java
new file mode 100644
index 0000000..cfa5cbc
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/rpc/message/ResetPeerRequestImpl.java
@@ -0,0 +1,66 @@
+package org.apache.ignite.raft.rpc.message;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.rpc.CliRequests;
+
+class ResetPeerRequestImpl implements CliRequests.ResetPeerRequest, CliRequests.ResetPeerRequest.Builder {
+    private String groupId;
+    private String peerId;
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String peerId) {
+        newPeersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ResetPeerRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/service/ClientService.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/service/ClientService.java
index 7f6482c..151d630 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/service/ClientService.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/service/ClientService.java
@@ -65,7 +65,7 @@ public interface ClientService extends Lifecycle<RpcOptions> {
      *
      * @param endpoint  server address
      * @param request   request data
-     * @param done      callback
+     * @param done      callback TODO asch Add @nullable.
      * @param timeoutMs timeout millis
      * @return a future with operation result
      */