diff --git hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordObjectInspectorFactory.java hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordObjectInspectorFactory.java index 18bf3a4058..f3bced714f 100644 --- hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordObjectInspectorFactory.java +++ hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordObjectInspectorFactory.java @@ -19,8 +19,9 @@ package org.apache.hive.hcatalog.data; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.apache.hadoop.hive.serde2.SerDeException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -41,10 +42,10 @@ private final static Logger LOG = LoggerFactory.getLogger(HCatRecordObjectInspectorFactory.class); - static HashMap cachedHCatRecordObjectInspectors = - new HashMap(); - static HashMap cachedObjectInspectors = - new HashMap(); + private static final Map + CACHED_HCAT_RECORD_OBJECT_INSPECTORS = new ConcurrentHashMap<>(); + private static final Map + CACHED_OBJECT_INSPECTORS = new ConcurrentHashMap<>(); /** * Returns HCatRecordObjectInspector given a StructTypeInfo type definition for the record to look into @@ -54,7 +55,7 @@ */ public static HCatRecordObjectInspector getHCatRecordObjectInspector( StructTypeInfo typeInfo) throws SerDeException { - HCatRecordObjectInspector oi = cachedHCatRecordObjectInspectors.get(typeInfo); + HCatRecordObjectInspector oi = CACHED_HCAT_RECORD_OBJECT_INSPECTORS.get(typeInfo); if (oi == null) { LOG.debug("Got asked for OI for {} [{} ]", typeInfo.getCategory(), typeInfo.getTypeName()); @@ -78,7 +79,7 @@ public static HCatRecordObjectInspector getHCatRecordObjectInspector( + "] was not of struct type - HCatRecord expected struct type, got [" + typeInfo.getCategory().toString() + "]"); } - cachedHCatRecordObjectInspectors.put(typeInfo, oi); + CACHED_HCAT_RECORD_OBJECT_INSPECTORS.put(typeInfo, oi); } return oi; } @@ -86,7 +87,7 @@ public static HCatRecordObjectInspector getHCatRecordObjectInspector( public static ObjectInspector getStandardObjectInspectorFromTypeInfo(TypeInfo typeInfo) { - ObjectInspector oi = cachedObjectInspectors.get(typeInfo); + ObjectInspector oi = CACHED_OBJECT_INSPECTORS.get(typeInfo); if (oi == null) { LOG.debug("Got asked for OI for {}, [{}]", typeInfo.getCategory(), typeInfo.getTypeName()); @@ -123,7 +124,7 @@ public static ObjectInspector getStandardObjectInspectorFromTypeInfo(TypeInfo ty default: oi = null; } - cachedObjectInspectors.put(typeInfo, oi); + CACHED_OBJECT_INSPECTORS.put(typeInfo, oi); } return oi; }