This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new 9952463823 [To rel/0.13] Add getBackupConfiguration rpc (#7695)
9952463823 is described below
commit 9952463823845e77401fe3840bda69fbca80af9f
Author: Beyyes <[email protected]>
AuthorDate: Mon Oct 24 09:00:23 2022 +0800
[To rel/0.13] Add getBackupConfiguration rpc (#7695)
---
.../java/org/apache/iotdb/session/SessionTest.java | 13 +++++++++++++
.../db/service/thrift/impl/TSServiceImpl.java | 12 ++++++++++++
.../java/org/apache/iotdb/session/Session.java | 6 ++++++
.../apache/iotdb/session/SessionConnection.java | 22 ++++++++++++++++++++++
.../org/apache/iotdb/session/pool/SessionPool.java | 20 ++++++++++++++++++++
thrift/src/main/thrift/rpc.thrift | 9 +++++++++
6 files changed, 82 insertions(+)
diff --git
a/integration/src/test/java/org/apache/iotdb/session/SessionTest.java
b/integration/src/test/java/org/apache/iotdb/session/SessionTest.java
index 563c54e148..17bc79625f 100644
--- a/integration/src/test/java/org/apache/iotdb/session/SessionTest.java
+++ b/integration/src/test/java/org/apache/iotdb/session/SessionTest.java
@@ -22,6 +22,7 @@ import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
+import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
import org.apache.iotdb.session.template.InternalNode;
import org.apache.iotdb.session.template.MeasurementNode;
import org.apache.iotdb.session.template.Template;
@@ -670,4 +671,16 @@ public class SessionTest {
assertEquals("326: Template is in use on root.sg.1.cd", e.getMessage());
}
}
+
+ @Test
+ public void testGetBackupConfiguration() throws IoTDBConnectionException {
+ session = new Session("127.0.0.1", 6667, "root", "root",
ZoneId.of("+05:00"));
+ session.open();
+ try {
+ TSBackupConfigurationResp resp = session.getBackupConfiguration();
+ assertEquals("127.0.0.1", resp.getSecondaryAddress());
+ } catch (Exception e) {
+ fail();
+ }
+ }
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
index 7e862e532f..2e82d95f22 100644
---
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
+++
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
@@ -86,6 +86,7 @@ import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.service.rpc.thrift.EndPoint;
import org.apache.iotdb.service.rpc.thrift.ServerProperties;
import org.apache.iotdb.service.rpc.thrift.TSAppendSchemaTemplateReq;
+import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
import org.apache.iotdb.service.rpc.thrift.TSCancelOperationReq;
import org.apache.iotdb.service.rpc.thrift.TSCloseOperationReq;
import org.apache.iotdb.service.rpc.thrift.TSCloseSessionReq;
@@ -2193,6 +2194,17 @@ public class TSServiceImpl implements TSIService.Iface {
}
}
+ @Override
+ public TSBackupConfigurationResp getBackupConfiguration() {
+ IoTDBConfig conf = IoTDBDescriptor.getInstance().getConfig();
+ TSBackupConfigurationResp syncConf =
+ new
TSBackupConfigurationResp(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS));
+ syncConf.setEnableOperationSync(conf.isEnableOperationSync());
+ syncConf.setSecondaryAddress(conf.getSecondaryAddress());
+ syncConf.setSecondaryPort(conf.getSecondaryPort());
+ return syncConf;
+ }
+
protected TSStatus executeNonQueryPlan(PhysicalPlan plan) {
try {
if (isEnableOperationSync) {
diff --git a/session/src/main/java/org/apache/iotdb/session/Session.java
b/session/src/main/java/org/apache/iotdb/session/Session.java
index 99fe43b1d8..ba7e1fce6b 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.rpc.RedirectException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.service.rpc.thrift.EndPoint;
import org.apache.iotdb.service.rpc.thrift.TSAppendSchemaTemplateReq;
+import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
import org.apache.iotdb.service.rpc.thrift.TSCreateAlignedTimeseriesReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateMultiTimeseriesReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateSchemaTemplateReq;
@@ -3104,6 +3105,11 @@ public class Session {
this.enableCacheLeader = enableCacheLeader;
}
+ public TSBackupConfigurationResp getBackupConfiguration()
+ throws IoTDBConnectionException, StatementExecutionException {
+ return defaultSessionConnection.getBackupConfiguration();
+ }
+
public static class Builder {
private String host = Config.DEFAULT_HOST;
private int rpcPort = Config.DEFAULT_PORT;
diff --git
a/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
b/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
index 9b0d2ee1d6..f2316f3651 100644
--- a/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
+++ b/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.rpc.SessionTimeoutException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.service.rpc.thrift.EndPoint;
import org.apache.iotdb.service.rpc.thrift.TSAppendSchemaTemplateReq;
+import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
import org.apache.iotdb.service.rpc.thrift.TSCloseSessionReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateAlignedTimeseriesReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateMultiTimeseriesReq;
@@ -1050,6 +1051,27 @@ public class SessionConnection {
}
}
+ protected TSBackupConfigurationResp getBackupConfiguration()
+ throws StatementExecutionException, IoTDBConnectionException {
+ TSBackupConfigurationResp execResp;
+ try {
+ execResp = client.getBackupConfiguration();
+ verifySuccessWrapper(execResp.getStatus());
+ } catch (TException e) {
+ if (reconnect()) {
+ try {
+ execResp = client.getBackupConfiguration();
+ verifySuccessWrapper(execResp.getStatus());
+ } catch (TException tException) {
+ throw new IoTDBConnectionException(tException);
+ }
+ } else {
+ throw new IoTDBConnectionException(logForReconnectionFailure());
+ }
+ }
+ return execResp;
+ }
+
public boolean isEnableRedirect() {
return enableRedirect;
}
diff --git
a/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
b/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
index 326f6c4030..031ce64d6b 100644
--- a/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
+++ b/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
@@ -20,6 +20,7 @@ package org.apache.iotdb.session.pool;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
+import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
import org.apache.iotdb.session.Config;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.session.SessionDataSet;
@@ -2341,6 +2342,25 @@ public class SessionPool {
return null;
}
+ public TSBackupConfigurationResp getBackupConfiguration()
+ throws IoTDBConnectionException, StatementExecutionException {
+ for (int i = 0; i < RETRY; i++) {
+ Session session = getSession();
+ try {
+ TSBackupConfigurationResp resp = session.getBackupConfiguration();
+ putBack(session);
+ return resp;
+ } catch (IoTDBConnectionException e) {
+ // TException means the connection is broken, remove it and get a new
one.
+ cleanSessionAndMayThrowConnectionException(session, i, e);
+ } catch (RuntimeException e) {
+ putBack(session);
+ throw e;
+ }
+ }
+ return null;
+ }
+
public int getMaxSize() {
return maxSize;
}
diff --git a/thrift/src/main/thrift/rpc.thrift
b/thrift/src/main/thrift/rpc.thrift
index fbcabef7f2..43d79d23b4 100644
--- a/thrift/src/main/thrift/rpc.thrift
+++ b/thrift/src/main/thrift/rpc.thrift
@@ -432,6 +432,13 @@ struct TSOperationSyncWriteReq {
3: required binary physicalPlan
}
+struct TSBackupConfigurationResp {
+ 1: required TSStatus status
+ 2: optional bool enableOperationSync
+ 3: optional string secondaryAddress
+ 4: optional i32 secondaryPort
+}
+
service TSIService {
TSOpenSessionResp openSession(1:TSOpenSessionReq req);
@@ -530,4 +537,6 @@ service TSIService {
TSStatus dropSchemaTemplate(1:TSDropSchemaTemplateReq req);
TSStatus executeOperationSync(1:TSOperationSyncWriteReq req);
+
+ TSBackupConfigurationResp getBackupConfiguration();
}
\ No newline at end of file