This is an automated email from the ASF dual-hosted git repository. xingtanzjr pushed a commit to branch xingtanzjr/fix_state_tacker in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3542f37aa5dc3a42fb91182507dd2bf717e8a168 Author: Jinrui.Zhang <[email protected]> AuthorDate: Fri Jul 22 16:47:35 2022 +0800 fix the potential issue for StateTracker that it cannot be terminated sometimes --- .../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"); } }
