From 0051832f91c1a42eae2096d94b2c28ead2b773ac Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:06:03 +0800 Subject: [PATCH] [fix](statistics)Use ConcurrentHashMap to avoid ConcurrentModificationException (#36452) (#36950) OlapTable idToPartition Map should use ConcurrentHashMap to avoid ConcurrentModificationException. backport: https://github.com/apache/doris/pull/36452 --- .../src/main/java/org/apache/doris/catalog/OlapTable.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index fa6425c72a..0164c31197 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -99,6 +99,7 @@ import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** @@ -140,7 +141,7 @@ public class OlapTable extends Table implements MTMVRelatedTableIf { @SerializedName("partitionInfo") private PartitionInfo partitionInfo; @SerializedName("idToPartition") - private Map idToPartition = new HashMap<>(); + private ConcurrentHashMap idToPartition = new ConcurrentHashMap<>(); private Map nameToPartition = Maps.newTreeMap(); @SerializedName(value = "distributionInfo") @@ -611,7 +612,7 @@ public class OlapTable extends Table implements MTMVRelatedTableIf { // reset partition info and idToPartition map Map partitionMap = Maps.newHashMap(); Map origIdToPartition = idToPartition; - idToPartition = Maps.newHashMap(); + idToPartition = new ConcurrentHashMap<>(); for (Map.Entry entry : origPartNameToId.entrySet()) { long newPartId = env.getNextId(); idToPartition.put(newPartId, origIdToPartition.get(entry.getValue()));