From ab2e0d0ba2697ba0750ec52fbb3b3a0187734a4b Mon Sep 17 00:00:00 2001 From: Danny Chan Date: Tue, 27 Jul 2021 15:18:05 +0800 Subject: [PATCH] [HUDI-2219] Fix NPE of HoodieConfig (#3342) --- .../hudi/common/util/ReflectionUtils.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/hudi-common/src/main/java/org/apache/hudi/common/util/ReflectionUtils.java b/hudi-common/src/main/java/org/apache/hudi/common/util/ReflectionUtils.java index 2895f46db..55db2a704 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/util/ReflectionUtils.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/util/ReflectionUtils.java @@ -45,19 +45,21 @@ public class ReflectionUtils { private static final Logger LOG = LogManager.getLogger(ReflectionUtils.class); - private static Map> clazzCache = new HashMap<>(); + private static final Map> CLAZZ_CACHE = new HashMap<>(); public static Class getClass(String clazzName) { - if (!clazzCache.containsKey(clazzName)) { - try { - Class clazz = Class.forName(clazzName, true, - Thread.currentThread().getContextClassLoader()); - clazzCache.put(clazzName, clazz); - } catch (ClassNotFoundException e) { - throw new HoodieException("Unable to load class", e); + synchronized (CLAZZ_CACHE) { + if (!CLAZZ_CACHE.containsKey(clazzName)) { + try { + Class clazz = Class.forName(clazzName, true, + Thread.currentThread().getContextClassLoader()); + CLAZZ_CACHE.put(clazzName, clazz); + } catch (ClassNotFoundException e) { + throw new HoodieException("Unable to load class", e); + } } } - return clazzCache.get(clazzName); + return CLAZZ_CACHE.get(clazzName); } public static T loadClass(String fqcn) {