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
*/