You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2023/05/16 13:09:24 UTC

[iotdb] branch caLastOpt updated: fix bug

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

jackietien pushed a commit to branch caLastOpt
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/caLastOpt by this push:
     new 8964aacdbc fix bug
8964aacdbc is described below

commit 8964aacdbc487e78e135794fc9a9adf0a7352950
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Tue May 16 21:09:13 2023 +0800

    fix bug
---
 .../java/org/apache/iotdb/SessionPoolExample.java  | 54 ++++++++++++++++++----
 .../service/thrift/impl/ClientRPCServiceImpl.java  | 15 ++++--
 .../datanode1conf/iotdb-datanode.properties        |  2 +-
 .../datanode2conf/iotdb-datanode.properties        |  2 +-
 .../datanode3conf/iotdb-datanode.properties        |  2 +-
 5 files changed, 59 insertions(+), 16 deletions(-)

diff --git a/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java b/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java
index f3c70178ef..f1348edac5 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java
@@ -26,9 +26,9 @@ import org.apache.iotdb.session.pool.SessionPool;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 public class SessionPoolExample {
 
@@ -50,7 +50,6 @@ public class SessionPoolExample {
   /** Build a redirect-able SessionPool for this example */
   private static void constructRedirectSessionPool() {
     List<String> nodeUrls = new ArrayList<>();
-    nodeUrls.add("127.0.0.1:6667");
     nodeUrls.add("127.0.0.1:6668");
     sessionPool =
         new SessionPool.Builder()
@@ -62,17 +61,54 @@ public class SessionPoolExample {
   }
 
   public static void main(String[] args)
-      throws StatementExecutionException, IoTDBConnectionException, InterruptedException {
+      throws StatementExecutionException, IoTDBConnectionException {
     // Choose the SessionPool you going to use
     constructRedirectSessionPool();
 
-    service = Executors.newFixedThreadPool(10);
-    insertRecord();
-    queryByRowRecord();
-    Thread.sleep(1000);
-    queryByIterator();
+    //    service = Executors.newFixedThreadPool(10);
+    //    insertRecord();
+    //    queryByRowRecord();
+    //    Thread.sleep(1000);
+    //    queryByIterator();
+
+    SessionDataSetWrapper sessionDataSetWrapper =
+        sessionPool.executeLastDataQueryForOneDevice(
+            "root.ca.condition",
+            "root.ca.condition.`123456789`",
+            Arrays.asList("Pa", "Pb", "Pc", "status", "Pd"));
+
+    while (sessionDataSetWrapper.hasNext()) {
+      System.out.println(sessionDataSetWrapper.next());
+    }
+
+    sessionDataSetWrapper.close();
+
+    sessionDataSetWrapper =
+        sessionPool.executeLastDataQueryForOneDevice(
+            "root.ca.condition",
+            "root.ca.condition.`123456789`",
+            Arrays.asList("Pa", "Pb", "Pc", "status", "Pd"));
+
+    while (sessionDataSetWrapper.hasNext()) {
+      System.out.println(sessionDataSetWrapper.next());
+    }
+
+    sessionDataSetWrapper.close();
+
+    sessionDataSetWrapper =
+        sessionPool.executeLastDataQueryForOneDevice(
+            "root.ca.condition",
+            "root.ca.condition.`123456789`",
+            Arrays.asList("Pa", "Pb", "Pc", "status", "Pd"));
+
+    while (sessionDataSetWrapper.hasNext()) {
+      System.out.println(sessionDataSetWrapper.next());
+    }
+
+    sessionDataSetWrapper.close();
+
     sessionPool.close();
-    service.shutdown();
+    //    service.shutdown();
   }
 
   // more insert example, see SessionExample.java
diff --git a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java
index 434acf1192..c6cb35d374 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java
@@ -689,7 +689,15 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
         TSExecuteStatementResp resp;
         if (queryExecution.isQuery()) {
           resp = createResponse(queryExecution.getDatasetHeader(), queryId);
-          resp.setStatus(result.status);
+          TSStatus tsstatus = new TSStatus();
+          tsstatus.setCode(TSStatusCode.REDIRECTION_RECOMMEND.getStatusCode());
+          tsstatus.setRedirectNode(
+              regionReplicaSets
+                  .get(regionReplicaSets.size() - 1)
+                  .dataNodeLocations
+                  .get(0)
+                  .clientRpcEndPoint);
+          resp.setStatus(tsstatus);
           finished = SELECT_RESULT.apply(resp, queryExecution, req.fetchSize);
           resp.setMoreData(!finished);
           quota.addReadResult(resp.getQueryResult());
@@ -725,8 +733,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
   }
 
   private TSLastDataQueryReq convert(TSFastLastDataQueryForOneDeviceReq req) {
-    TSLastDataQueryReq res = new TSLastDataQueryReq();
-    List<String> paths = new ArrayList<>(req.sensors);
+    List<String> paths = new ArrayList<>(req.sensors.size());
     for (String sensor : req.sensors) {
       paths.add(req.deviceId + "." + sensor);
     }
@@ -736,7 +743,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
     tsLastDataQueryReq.setEnableRedirectQuery(req.enableRedirectQuery);
     tsLastDataQueryReq.setLegalPathNodes(req.legalPathNodes);
     tsLastDataQueryReq.setTimeout(req.timeout);
-    return res;
+    return tsLastDataQueryReq;
   }
 
   @Override
diff --git a/server/src/test/resources/datanode1conf/iotdb-datanode.properties b/server/src/test/resources/datanode1conf/iotdb-datanode.properties
index 60aac5c54f..498dd5ea58 100644
--- a/server/src/test/resources/datanode1conf/iotdb-datanode.properties
+++ b/server/src/test/resources/datanode1conf/iotdb-datanode.properties
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-dn_rpc_address=0.0.0.0
+dn_rpc_address=127.0.0.1
 dn_internal_address=127.0.0.1
 
 dn_rpc_port=6667
diff --git a/server/src/test/resources/datanode2conf/iotdb-datanode.properties b/server/src/test/resources/datanode2conf/iotdb-datanode.properties
index decb6a4a38..56c5fd4845 100644
--- a/server/src/test/resources/datanode2conf/iotdb-datanode.properties
+++ b/server/src/test/resources/datanode2conf/iotdb-datanode.properties
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-dn_rpc_address=0.0.0.0
+dn_rpc_address=127.0.0.1
 dn_internal_address=127.0.0.1
 
 dn_rpc_port=6668
diff --git a/server/src/test/resources/datanode3conf/iotdb-datanode.properties b/server/src/test/resources/datanode3conf/iotdb-datanode.properties
index b087567713..54f5f057c9 100644
--- a/server/src/test/resources/datanode3conf/iotdb-datanode.properties
+++ b/server/src/test/resources/datanode3conf/iotdb-datanode.properties
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-dn_rpc_address=0.0.0.0
+dn_rpc_address=127.0.0.1
 dn_internal_address=127.0.0.1
 
 dn_rpc_port=6669