From bd890dfff2fa5b32c86cfed7c4c61566134456a2 Mon Sep 17 00:00:00 2001 From: hui lai Date: Wed, 11 Jun 2025 16:00:40 +0800 Subject: [PATCH] [fix](load) fix concurrent read and write to runningTxnIds (#51615) ### What problem does this PR solve? Execute `show routine load` meets `java.util.ConcurrentModificationException: null`, using ConcurrentHashMap to fix concurrent read and write to runningTxnIds. --- .../apache/doris/load/routineload/RoutineLoadStatistic.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadStatistic.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadStatistic.java index f7c089cfbc3684..dc07ce7e8ba3a2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadStatistic.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadStatistic.java @@ -22,7 +22,6 @@ import org.apache.doris.persist.gson.GsonUtils; import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import com.google.gson.annotations.SerializedName; import java.io.DataInput; @@ -30,6 +29,7 @@ import java.io.IOException; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; public class RoutineLoadStatistic implements Writable { /* @@ -67,7 +67,7 @@ public class RoutineLoadStatistic implements Writable { // Save all transactions current running. Including PREPARE, COMMITTED. // No need to persist, only for tracing txn of routine load job. - public Set runningTxnIds = Sets.newHashSet(); + public Set runningTxnIds = ConcurrentHashMap.newKeySet(); @Override public void write(DataOutput out) throws IOException {