From bf191f8d4662fd1e9c28f3cacce9179dc8cab561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E5=81=A5?= Date: Thu, 17 Mar 2022 16:50:28 +0800 Subject: [PATCH] [HUDI-3645] Fix NPE caused by multiple threads accessing non-thread-safe HashMap (#5028) - Change HashMap in HoodieROTablePathFilter to ConcurrentHashMap --- .../java/org/apache/hudi/hadoop/HoodieROTablePathFilter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hudi-hadoop-mr/src/main/java/org/apache/hudi/hadoop/HoodieROTablePathFilter.java b/hudi-hadoop-mr/src/main/java/org/apache/hudi/hadoop/HoodieROTablePathFilter.java index 32dfd7c1e..be868ad29 100644 --- a/hudi-hadoop-mr/src/main/java/org/apache/hudi/hadoop/HoodieROTablePathFilter.java +++ b/hudi-hadoop-mr/src/main/java/org/apache/hudi/hadoop/HoodieROTablePathFilter.java @@ -45,6 +45,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** @@ -93,7 +94,7 @@ public class HoodieROTablePathFilter implements Configurable, PathFilter, Serial } public HoodieROTablePathFilter(Configuration conf) { - this.hoodiePathCache = new HashMap<>(); + this.hoodiePathCache = new ConcurrentHashMap<>(); this.nonHoodiePathCache = new HashSet<>(); this.conf = new SerializableConfiguration(conf); this.metaClientCache = new HashMap<>();