From e2616ba3b5f94e1cc23d5ea1ee649869ee10e03b Mon Sep 17 00:00:00 2001 From: PLASH SPEED <879158514@qq.com> Date: Sun, 10 Dec 2023 22:02:29 +0800 Subject: [PATCH 1/2] HIVE-27944:When HIVE-LLAP reads the ICEBERG table, a deadlock may occur. Since the Properties object implement HashTable interface, all the methods of the HashTable interface are synchronised. In a multi-threaded environment, a deadlock will occur when propA.equals(propB) and propB.equals(propA) occur at the same time. --- .../java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java index 2ce7ed88c8b9..914162e3f9de 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java @@ -71,7 +71,7 @@ public class SplitGrouper { // TODO This needs to be looked at. Map of Map to Map... Made concurrent for now since split generation // can happen in parallel. - private static final Map, Map> cache = + private final Map, Map> cache = new ConcurrentHashMap<>(); private final TezMapredSplitsGrouper tezGrouper = new TezMapredSplitsGrouper(); From d789c9ca8d0debcbefe60b30bfce099f68454e69 Mon Sep 17 00:00:00 2001 From: PLASH SPEED <879158514@qq.com> Date: Tue, 26 Dec 2023 10:56:49 +0800 Subject: [PATCH 2/2] use hashmap --- .../java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java index 914162e3f9de..dd6a91b46098 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java @@ -29,7 +29,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; import org.apache.hadoop.hive.ql.io.AcidUtils; import org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; @@ -72,7 +71,7 @@ public class SplitGrouper { // TODO This needs to be looked at. Map of Map to Map... Made concurrent for now since split generation // can happen in parallel. private final Map, Map> cache = - new ConcurrentHashMap<>(); + new HashMap<>(); private final TezMapredSplitsGrouper tezGrouper = new TezMapredSplitsGrouper();