From 852ceb0c015d57b85638286c6d9c9176676e8ac2 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 e5b01c50e26bce..bd20e9b78d1e70 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 @@ -21,13 +21,13 @@ 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; import java.io.IOException; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; public class RoutineLoadStatistic { /* @@ -65,7 +65,7 @@ public class RoutineLoadStatistic { // 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(); public static RoutineLoadStatistic read(DataInput in) throws IOException { String json = Text.readString(in);