ngsg commented on code in PR #5771:
URL: https://github.com/apache/hive/pull/5771#discussion_r2188060497


##########
ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java:
##########
@@ -6006,11 +6009,21 @@ public HiveMetaHook getHook(
       }
     };
 
+    IMetaStoreClient thriftClient = ThriftHiveMetaStoreClient.newClient(conf, 
allowEmbedded);
+    IMetaStoreClient clientWithLocalCache = 
HiveMetaStoreClientWithLocalCache.newClient(conf, thriftClient);
+    IMetaStoreClient sessionLevelClient = 
SessionHiveMetaStoreClient.newClient(conf, clientWithLocalCache);
+    IMetaStoreClient clientWithHook = 
HookEnabledMetaStoreClient.newClient(conf, hookLoader, sessionLevelClient);
+
     if (conf.getBoolVar(ConfVars.METASTORE_FASTPATH)) {
-      return new SessionHiveMetaStoreClient(conf, hookLoader, allowEmbedded);
+      return 
org.apache.hadoop.hive.metastore.client.SynchronizedMetaStoreClient.newClient(conf,
 clientWithHook);

Review Comment:
   I wrapped this with `SynchronizedMetaStoreClient` based on a request from 
@dengzhhu653 to always make the client chain be thread-safe. 
`SessionHiveMetaStoreClient` itself didn't support synchronized access; 
synchronization was previously achieved by calling static method 
`HiveMetaStoreClient#newSynchronizedClient` in `Hive#getMSC` as you noted. So 
the PR changes the synchronization logic from 
   * MSC to remote MS -> wrap with `SynchronizedHandler`
   * otherwise -> no wrapping
   to
   * always wrap with `SynchronizedMetaStoreClient`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org
For additional commands, e-mail: gitbox-h...@hive.apache.org

Reply via email to