diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 6f15fd0..8fb730a 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -292,7 +292,9 @@ private void promoteRandomMetaStoreURI() { } @Override - public boolean isCompatibleWith(HiveConf conf) { + // This method needs to be synchronized with close/snapshotActiveConf + // since currentMetaVars might be changed in the middle + public synchronized boolean isCompatibleWith(HiveConf conf) { if (currentMetaVars == null) { return false; // recreate } @@ -489,7 +491,7 @@ private void open() throws MetaException { LOG.info("Connected to metastore."); } - private void snapshotActiveConf() { + private synchronized void snapshotActiveConf() { currentMetaVars = new HashMap(HiveConf.metaVars.length); for (ConfVars oneVar : HiveConf.metaVars) { currentMetaVars.put(oneVar.varname, conf.get(oneVar.varname, "")); @@ -501,7 +503,7 @@ public String getTokenStrForm() throws IOException { } @Override - public void close() { + public synchronized void close() { isConnected = false; currentMetaVars = null; try {