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

jackietien 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 5aaa80a37d [IOTDB-5431] Fix concurrent bug caused by using 
synchronizedSet() in DriverScheduler
5aaa80a37d is described below

commit 5aaa80a37d32dc59eb17022d93cf314507fec444
Author: Jackie Tien <[email protected]>
AuthorDate: Sun Jan 29 11:22:08 2023 +0800

    [IOTDB-5431] Fix concurrent bug caused by using synchronizedSet() in 
DriverScheduler
---
 .../db/mpp/execution/schedule/DriverScheduler.java | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 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 e9f097f7bf..ddcf072a1b 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
@@ -460,16 +460,18 @@ public class DriverScheduler implements IDriverScheduler, 
IService {
         if (queryRelatedTasks != null) {
           for (Set<DriverTask> fragmentRelatedTasks : 
queryRelatedTasks.values()) {
             if (fragmentRelatedTasks != null) {
-              for (DriverTask otherTask : fragmentRelatedTasks) {
-                if (task.equals(otherTask)) {
-                  continue;
-                }
-                otherTask.lock();
-                try {
-                  
otherTask.setAbortCause(DriverTaskAbortedException.BY_QUERY_CASCADING_ABORTED);
-                  clearDriverTask(otherTask);
-                } finally {
-                  otherTask.unlock();
+              synchronized (fragmentRelatedTasks) {
+                for (DriverTask otherTask : fragmentRelatedTasks) {
+                  if (task.equals(otherTask)) {
+                    continue;
+                  }
+                  otherTask.lock();
+                  try {
+                    
otherTask.setAbortCause(DriverTaskAbortedException.BY_QUERY_CASCADING_ABORTED);
+                    clearDriverTask(otherTask);
+                  } finally {
+                    otherTask.unlock();
+                  }
                 }
               }
             }

Reply via email to