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

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


The following commit(s) were added to 
refs/heads/xingtanzjr/query_retry_redirect by this push:
     new 84cde6ae60 spotless and add more comments for query retrying step
84cde6ae60 is described below

commit 84cde6ae60b7db0cfbbc64a5c8bdd528bdb04df8
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Wed Aug 17 16:01:39 2022 +0800

    spotless and add more comments for query retrying step
---
 .../src/main/java/org/apache/iotdb/db/mpp/common/MPPQueryContext.java | 3 +++
 .../java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java   | 2 +-
 .../mpp/plan/planner/distribution/SimpleFragmentParallelPlanner.java  | 4 +++-
 .../iotdb/db/mpp/plan/scheduler/FragmentInstanceDispatcherImpl.java   | 2 ++
 4 files changed, 9 insertions(+), 2 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/MPPQueryContext.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/MPPQueryContext.java
index 08da8f11e5..91d4d85f89 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/MPPQueryContext.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/MPPQueryContext.java
@@ -40,6 +40,9 @@ public class MPPQueryContext {
   private TEndPoint localInternalEndpoint;
   private ResultNodeContext resultNodeContext;
 
+  // When some DataNode cannot be connected, its endPoint will be put
+  // in this list. And the following retry will avoid planning fragment
+  // onto this node.
   private final List<TEndPoint> endPointBlackList;
 
   public MPPQueryContext(QueryId queryId) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
index 27444dfe16..4a6ac5fdc0 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
@@ -90,7 +90,7 @@ public class QueryExecution implements IQueryExecution {
 
   private static final IoTDBConfig config = 
IoTDBDescriptor.getInstance().getConfig();
   private static final int MAX_RETRY_COUNT = 3;
-  private static final long RETRY_INTERVAL_IN_MS = 2_000;
+  private static final long RETRY_INTERVAL_IN_MS = 2000;
   private int retryCount = 0;
   private final MPPQueryContext context;
   private IScheduler scheduler;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SimpleFragmentParallelPlanner.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SimpleFragmentParallelPlanner.java
index 7f00ffd9e4..e49b8b90e8 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SimpleFragmentParallelPlanner.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SimpleFragmentParallelPlanner.java
@@ -129,6 +129,8 @@ public class SimpleFragmentParallelPlanner implements 
IFragmentParallelPlaner {
     // enums
     boolean selectRandomDataNode = "weak".equals(readConsistencyLevel);
 
+    // When planning fragment onto specific DataNode, the DataNode whose 
endPoint is in
+    // black list won't be considered because it may have connection issue now.
     List<TDataNodeLocation> availableDataNodes =
         filterAvailableTDataNode(regionReplicaSet.getDataNodeLocations());
     if (availableDataNodes.size() == 0) {
@@ -139,7 +141,7 @@ public class SimpleFragmentParallelPlanner implements 
IFragmentParallelPlaner {
       throw new IllegalArgumentException(errorMsg);
     }
     if (regionReplicaSet.getDataNodeLocationsSize() != 
availableDataNodes.size()) {
-      logger.info("Available replicas: " + availableDataNodes);
+      logger.info("available replicas: " + availableDataNodes);
     }
     int targetIndex;
     if (!selectRandomDataNode || queryContext.getSession() == null) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FragmentInstanceDispatcherImpl.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FragmentInstanceDispatcherImpl.java
index 7849cc4201..ab5b2e8909 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FragmentInstanceDispatcherImpl.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FragmentInstanceDispatcherImpl.java
@@ -191,6 +191,8 @@ public class FragmentInstanceDispatcherImpl implements 
IFragInstanceDispatcher {
       TSStatus status = new TSStatus();
       status.setCode(TSStatusCode.SYNC_CONNECTION_EXCEPTION.getStatusCode());
       status.setMessage("can't connect to node {}" + endPoint);
+      // If the DataNode cannot be connected, its endPoint will be put into 
black list
+      // so that the following retry will avoid dispatching instance towards 
this DataNode.
       queryContext.addFailedEndPoint(endPoint);
       throw new FragmentInstanceDispatchException(status);
     }

Reply via email to