This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new bd1894fb72 fix the potential issue for StateTracker that it cannot be
terminated sometimes (#6755)
bd1894fb72 is described below
commit bd1894fb72e85b152dd412afca8a7e6b97ad769e
Author: Zhang.Jinrui <[email protected]>
AuthorDate: Mon Jul 25 10:12:17 2022 +0800
fix the potential issue for StateTracker that it cannot be terminated
sometimes (#6755)
---
.../db/mpp/plan/scheduler/FixedRateFragInsStateTracker.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FixedRateFragInsStateTracker.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FixedRateFragInsStateTracker.java
index 55e93974d9..59dbce1208 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FixedRateFragInsStateTracker.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/FixedRateFragInsStateTracker.java
@@ -50,6 +50,7 @@ public class FixedRateFragInsStateTracker extends
AbstractFragInsStateTracker {
private ScheduledFuture<?> trackTask;
private volatile FragmentInstanceState lastState;
private volatile long durationToLastPrintInMS;
+ private volatile boolean aborted;
public FixedRateFragInsStateTracker(
QueryStateMachine stateMachine,
@@ -58,10 +59,14 @@ public class FixedRateFragInsStateTracker extends
AbstractFragInsStateTracker {
List<FragmentInstance> instances,
IClientManager<TEndPoint, SyncDataNodeInternalServiceClient>
internalServiceClientManager) {
super(stateMachine, executor, scheduledExecutor, instances,
internalServiceClientManager);
+ this.aborted = false;
}
@Override
- public void start() {
+ public synchronized void start() {
+ if (aborted) {
+ return;
+ }
trackTask =
ScheduledExecutorUtil.safelyScheduleAtFixedRate(
scheduledExecutor,
@@ -72,7 +77,8 @@ public class FixedRateFragInsStateTracker extends
AbstractFragInsStateTracker {
}
@Override
- public void abort() {
+ public synchronized void abort() {
+ aborted = true;
logger.info("start to abort state tracker");
if (trackTask != null) {
logger.info("start to cancel fixed rate tracking task");
@@ -82,6 +88,8 @@ public class FixedRateFragInsStateTracker extends
AbstractFragInsStateTracker {
} else {
logger.info("cancellation succeeds");
}
+ } else {
+ logger.info("trackTask not started");
}
}