reset ResultHandleContext before retyr (#7405)
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 8f4e534..57e201e 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
@@ -64,7 +64,7 @@
this.session = session;
this.localDataBlockEndpoint = localDataBlockEndpoint;
this.localInternalEndpoint = localInternalEndpoint;
- this.resultNodeContext = new ResultNodeContext(queryId);
+ this.initResultNodeContext();
}
public MPPQueryContext(
@@ -76,9 +76,17 @@
long timeOut,
long startTime) {
this(sql, queryId, session, localDataBlockEndpoint, localInternalEndpoint);
- this.resultNodeContext = new ResultNodeContext(queryId);
this.timeOut = timeOut;
this.startTime = startTime;
+ this.initResultNodeContext();
+ }
+
+ public void prepareForRetry() {
+ this.initResultNodeContext();
+ }
+
+ private void initResultNodeContext() {
+ this.resultNodeContext = new ResultNodeContext(queryId);
}
public QueryId getQueryId() {
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 a471be8..a6e7afa 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
@@ -205,6 +205,8 @@
stateMachine.transitionToQueued();
// force invalid PartitionCache
partitionFetcher.invalidAllCache();
+ // clear runtime variables in MPPQueryContext
+ context.prepareForRetry();
// re-analyze the query
this.analysis = analyze(rawStatement, context, partitionFetcher, schemaFetcher);
// re-start the QueryExecution