You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xu...@apache.org on 2020/12/28 07:02:15 UTC
[iotdb] 01/01: add test no reply interface
This is an automated email from the ASF dual-hosted git repository.
xuekaifeng pushed a commit to branch add-void-rpc-interface
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit dbf0cf45845d3628696275a0bebe1b2cc3ffe3ef
Author: 151250176 <15...@smail.nju.edu.cn>
AuthorDate: Mon Dec 28 15:01:40 2020 +0800
add test no reply interface
---
.../org/apache/iotdb/db/service/TSServiceImpl.java | 9 ++++++++
.../java/org/apache/iotdb/session/Session.java | 7 ++++++
.../apache/iotdb/session/SessionConnection.java | 25 ++++++++++++++++++++++
.../org/apache/iotdb/session/pool/SessionPool.java | 21 ++++++++++++++++++
.../java/org/apache/iotdb/session/SessionUT.java | 9 ++++++++
.../apache/iotdb/session/pool/SessionPoolTest.java | 9 ++++++++
thrift/rpc-changelist.md | 2 ++
thrift/src/main/thrift/rpc.thrift | 12 ++++++++---
8 files changed, 91 insertions(+), 3 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index e8ce619..507df60 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -131,6 +131,7 @@ import org.apache.iotdb.service.rpc.thrift.TSQueryNonAlignDataSet;
import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
import org.apache.iotdb.service.rpc.thrift.TSSetTimeZoneReq;
import org.apache.iotdb.service.rpc.thrift.TSStatus;
+import org.apache.iotdb.service.rpc.thrift.TSTestNoReplyReq;
import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -1220,6 +1221,14 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
return properties;
}
+ /**
+ * execute no reply request
+ */
+ @Override
+ public void testNoReply(TSTestNoReplyReq req){
+ logger.info("execute test no reply");
+ }
+
@Override
public TSStatus insertRecords(TSInsertRecordsReq req) {
if (auditLogger.isDebugEnabled()) {
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 472dbe3..872bc86 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -298,6 +298,13 @@ public class Session {
}
/**
+ * execute no reply test
+ */
+ public void testNoReply() throws IoTDBConnectionException {
+ defaultSessionConnection.testNoReply();
+ }
+
+ /**
* query eg. select * from paths where time >= startTime and time < endTime time interval include
* startTime and exclude endTime
*
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 28b18eb..adcfdcc 100644
--- a/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
+++ b/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
@@ -45,6 +45,7 @@ import org.apache.iotdb.service.rpc.thrift.TSOpenSessionResp;
import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
import org.apache.iotdb.service.rpc.thrift.TSSetTimeZoneReq;
import org.apache.iotdb.service.rpc.thrift.TSStatus;
+import org.apache.iotdb.service.rpc.thrift.TSTestNoReplyReq;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TCompactProtocol;
@@ -601,6 +602,30 @@ public class SessionConnection {
}
}
+ /**
+ * execute no reply test
+ */
+ protected void testNoReply()
+ throws IoTDBConnectionException {
+ TSTestNoReplyReq request = new TSTestNoReplyReq();
+ request.setSessionId(sessionId);
+ try {
+ client.testNoReply(request);
+ } catch (TException e) {
+ if (reconnect()) {
+ try {
+ request.setSessionId(sessionId);
+ client.testNoReply(request);
+ } catch (TException tException) {
+ throw new IoTDBConnectionException(tException);
+ }
+ } else {
+ throw new IoTDBConnectionException(MSG_RECONNECTION_FAIL);
+ }
+ }
+ logger.info("test no reply successfully! ");
+ }
+
private boolean reconnect() {
boolean flag = false;
for (int i = 1; i <= Config.RETRY_NUM; i++) {
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 0f8bb56..e3c161e 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
@@ -518,6 +518,27 @@ public class SessionPool {
}
}
+ public void testNoReply()
+ throws IoTDBConnectionException {
+ for (int i = 0; i < RETRY; i++) {
+ Session session = getSession();
+ try {
+ session.testNoReply();
+ putBack(session);
+ return;
+ } catch (IoTDBConnectionException e) {
+ // TException means the connection is broken, remove it and get a new one.
+ logger.warn("testNoReply failed", e);
+ cleanSessionAndMayThrowConnectionException(session, i, e);
+ } catch (RuntimeException e) {
+ putBack(session);
+ throw e;
+ }
+ }
+ }
+
+
+
/**
* This method NOT insert data into database and the server just return after accept the request,
* this method should be used to test other time cost in client
diff --git a/session/src/test/java/org/apache/iotdb/session/SessionUT.java b/session/src/test/java/org/apache/iotdb/session/SessionUT.java
index 24e2ad9..ffeacd3 100644
--- a/session/src/test/java/org/apache/iotdb/session/SessionUT.java
+++ b/session/src/test/java/org/apache/iotdb/session/SessionUT.java
@@ -58,6 +58,15 @@ public class SessionUT {
}
@Test
+ public void testNoReply() {
+ try{
+ session.testNoReply();
+ } catch (IoTDBConnectionException e) {
+ fail("test no reply failed");
+ }
+ }
+
+ @Test
public void testSortTablet() {
/*
To test sortTablet in Class Session
diff --git a/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java b/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
index c426e90..0aef59a 100644
--- a/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
+++ b/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
@@ -52,6 +52,15 @@ public class SessionPoolTest {
EnvironmentUtils.cleanEnv();
}
+ @Test
+ public void testNoReply() {
+ try{
+ SessionPool pool = new SessionPool("127.0.0.1", 6667, "root", "root", 3);
+ pool.testNoReply();
+ } catch (IoTDBConnectionException e) {
+ fail("test no reply failed");
+ }
+ }
@Test
public void insert() {
diff --git a/thrift/rpc-changelist.md b/thrift/rpc-changelist.md
index 424d39a..6d76289 100644
--- a/thrift/rpc-changelist.md
+++ b/thrift/rpc-changelist.md
@@ -128,6 +128,8 @@ Last Updated on 2019-10-27 by Lei Rui.
| Add method testInsertBatch(1:TSBatchInsertionReq req); | Kaifeng Xue |
| Add struct TSCreateMultiTimeseriesReq | qiaojialin |
| Add method createMultiTimeseries(1:TSCreateMultiTimeseriesReq req); | qiaojialin |
+| Add struct TSTestNoReplyReq | Kaifeng Xue |
+| Add method testNoReply | Kaifeng Xue |
## 3. Update
diff --git a/thrift/src/main/thrift/rpc.thrift b/thrift/src/main/thrift/rpc.thrift
index 7f29bbd..c16025b 100644
--- a/thrift/src/main/thrift/rpc.thrift
+++ b/thrift/src/main/thrift/rpc.thrift
@@ -240,10 +240,14 @@ struct TSInsertStringRecordsReq {
}
struct TSDeleteDataReq {
+ 1: required i64 sessionId
+ 2: required list<string> paths
+ 3: required i64 startTime
+ 4: required i64 endTime
+ }
+
+struct TSTestNoReplyReq {
1: required i64 sessionId
- 2: required list<string> paths
- 3: required i64 startTime
- 4: required i64 endTime
}
struct TSCreateTimeseriesReq {
@@ -334,6 +338,8 @@ service TSIService {
TSStatus insertStringRecords(1:TSInsertStringRecordsReq req);
+ void testNoReply(1: TSTestNoReplyReq req);
+
TSStatus testInsertTablet(1:TSInsertTabletReq req);
TSStatus testInsertTablets(1:TSInsertTabletsReq req);