This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 6d23a11ab0e [fix](mtmv)resolve task tvf concurrent modification
exception #30497
6d23a11ab0e is described below
commit 6d23a11ab0e7c8f4905effca9b01dc0249e787e1
Author: zhangdong <[email protected]>
AuthorDate: Tue Jan 30 11:55:20 2024 +0800
[fix](mtmv)resolve task tvf concurrent modification exception #30497
LinkedList is not thread safe and there may be issues with concurrent
queries and writes. Change it to ConcurrentLinkedQueue
Caused by: java.util.ConcurrentModificationException
at
java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966)
~[?:1.8.0_131]
at java.util.LinkedList$ListItr.next(LinkedList.java:888)
~[?:1.8.0_131]
at
org.apache.doris.tablefunction.MetadataGenerator.taskMetadataResult(MetadataGenerator.java:694)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.tablefunction.MetadataGenerator.getMetadataTable(MetadataGenerator.java:119)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.service.FrontendServiceImpl.fetchSchemaTableData(FrontendServiceImpl.java:2195)
~[doris-fe.jar:1.2-SNAPSHOT]
... 13 more
---
.../java/org/apache/doris/job/extensions/mtmv/MTMVJob.java | 2 +-
.../src/main/java/org/apache/doris/mtmv/MTMVJobInfo.java | 11 +++++------
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVJob.java
b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVJob.java
index 678155170bd..4f44b2e14b9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVJob.java
@@ -185,7 +185,7 @@ public class MTMVJob extends AbstractJob<MTMVTask,
MTMVTaskContext> {
LOG.warn("get mtmv failed", e);
return Lists.newArrayList();
}
- return mtmv.getJobInfo().getHistoryTasks();
+ return Lists.newArrayList(mtmv.getJobInfo().getHistoryTasks());
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobInfo.java
b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobInfo.java
index aca04ee706f..b9a65e4d543 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobInfo.java
@@ -20,10 +20,9 @@ package org.apache.doris.mtmv;
import org.apache.doris.common.Config;
import org.apache.doris.job.extensions.mtmv.MTMVTask;
-import com.google.common.collect.Lists;
import com.google.gson.annotations.SerializedName;
-import java.util.LinkedList;
+import java.util.concurrent.ConcurrentLinkedQueue;
/**
* MTMVJobInfo
@@ -32,11 +31,11 @@ public class MTMVJobInfo {
@SerializedName("jobName")
private String jobName;
@SerializedName("ht")
- private LinkedList<MTMVTask> historyTasks;
+ private ConcurrentLinkedQueue<MTMVTask> historyTasks;
public MTMVJobInfo(String jobName) {
this.jobName = jobName;
- historyTasks = Lists.newLinkedList();
+ historyTasks = new ConcurrentLinkedQueue<>();
}
public String getJobName() {
@@ -49,11 +48,11 @@ public class MTMVJobInfo {
}
historyTasks.add(task);
if (historyTasks.size() > Config.max_persistence_task_count) {
- historyTasks.removeFirst();
+ historyTasks.poll();
}
}
- public LinkedList<MTMVTask> getHistoryTasks() {
+ public ConcurrentLinkedQueue<MTMVTask> getHistoryTasks() {
return historyTasks;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]