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);
}