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

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 7647cec5093e832ac85c35a85fcb533f8d6c7d11
Author: Calvin Kirs <[email protected]>
AuthorDate: Thu Feb 22 14:02:17 2024 +0800

    [Fix](Job)TVF Query JOB Concurrent Reading and Writing Causes Exception 
(#31248)
---
 .../src/main/java/org/apache/doris/job/base/AbstractJob.java       | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/job/base/AbstractJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/job/base/AbstractJob.java
index 78d7598bf13..8c1d6da3a63 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/job/base/AbstractJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/job/base/AbstractJob.java
@@ -50,6 +50,7 @@ import java.util.Collection;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
@@ -128,7 +129,7 @@ public abstract class AbstractJob<T extends AbstractTask, 
C> implements Job<T, C
         this.executeSql = executeSql;
     }
 
-    private List<T> runningTasks = new ArrayList<>();
+    private CopyOnWriteArrayList<T> runningTasks = new 
CopyOnWriteArrayList<>();
 
     private Lock createTaskLock = new ReentrantLock();
 
@@ -140,7 +141,7 @@ public abstract class AbstractJob<T extends AbstractTask, 
C> implements Job<T, C
         for (T task : runningTasks) {
             task.cancel();
         }
-        runningTasks = new ArrayList<>();
+        runningTasks = new CopyOnWriteArrayList<>();
     }
 
     private static final ImmutableList<String> TITLE_NAMES =
@@ -270,7 +271,7 @@ public abstract class AbstractJob<T extends AbstractTask, 
C> implements Job<T, C
     public static AbstractJob readFields(DataInput in) throws IOException {
         String jsonJob = Text.readString(in);
         AbstractJob job = GsonUtils.GSON.fromJson(jsonJob, AbstractJob.class);
-        job.runningTasks = new ArrayList<>();
+        job.runningTasks = new CopyOnWriteArrayList();
         job.createTaskLock = new ReentrantLock();
         return job;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to