You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2022/07/22 08:47:49 UTC
[iotdb] 01/01: fix the potential issue for StateTracker that it cannot be terminated sometimes
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 <xi...@gmail.com>
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");
}
}