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 2023/04/07 07:18:50 UTC

[iotdb] 01/02: Fix npe when release fi

This is an automated email from the ASF dual-hosted git repository.

xiangweiwei pushed a commit to branch abortFINPE
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 5e5c384da66098352d9d7cae95e78a1607fdf12d
Author: Alima777 <wx...@gmail.com>
AuthorDate: Thu Apr 6 17:23:00 2023 +0800

    Fix npe when release fi
---
 .../db/mpp/execution/schedule/DriverScheduler.java | 28 ++++++++++++----------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java
index 6cd893f441..733958b06e 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java
@@ -272,18 +272,22 @@ public class DriverScheduler implements IDriverScheduler, IService {
 
   @Override
   public void abortFragmentInstance(FragmentInstanceId instanceId) {
-    Set<DriverTask> instanceRelatedTasks = queryMap.get(instanceId.getQueryId()).remove(instanceId);
-    if (instanceRelatedTasks != null) {
-      for (DriverTask task : instanceRelatedTasks) {
-        if (task == null) {
-          return;
-        }
-        task.lock();
-        try {
-          task.setAbortCause(DriverTaskAbortedException.BY_FRAGMENT_ABORT_CALLED);
-          clearDriverTask(task);
-        } finally {
-          task.unlock();
+    Map<FragmentInstanceId, Set<DriverTask>> queryRelatedTasks =
+        queryMap.get(instanceId.getQueryId());
+    if (queryRelatedTasks != null) {
+      Set<DriverTask> instanceRelatedTasks = queryRelatedTasks.remove(instanceId);
+      if (instanceRelatedTasks != null) {
+        for (DriverTask task : instanceRelatedTasks) {
+          if (task == null) {
+            return;
+          }
+          task.lock();
+          try {
+            task.setAbortCause(DriverTaskAbortedException.BY_FRAGMENT_ABORT_CALLED);
+            clearDriverTask(task);
+          } finally {
+            task.unlock();
+          }
         }
       }
     }