[
https://issues.apache.org/jira/browse/HIVE-29073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18007778#comment-18007778
]
Butao Zhang commented on HIVE-29073:
------------------------------------
I haven't delved deeply into this part of the code yet. But based on the [patch
|https://issues.apache.org/jira/secure/attachment/13077502/WIP-HIVE-29073.patch]
you provided, if we set the metaconf every time before returning the
metaStoreClient, would that work? What potential negative impacts could there
be?
{code:java}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index e55be0f3e9..78a7ca7fd2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -6119,6 +6119,16 @@ public synchronized IMetaStoreClient getMSC(
metaStoreClient =
HiveMetaStoreClient.newSynchronizedClient(metaStoreClient);
}
}
+ SessionState ss = SessionState.get();
+ if (ss != null) {
+ for (Map.Entry<String, String> entry :
ss.getOverriddenMetaConfigurations().entrySet()) {
+ try {
+ setMetaConf(metaStoreClient, entry.getKey(), entry.getValue());
+ } catch (HiveException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
return metaStoreClient;
}
{code}
> Overlay modified session level metaconf to new hmsclient connection
> -------------------------------------------------------------------
>
> Key: HIVE-29073
> URL: https://issues.apache.org/jira/browse/HIVE-29073
> Project: Hive
> Issue Type: Improvement
> Reporter: Raghav Aggarwal
> Assignee: Raghav Aggarwal
> Priority: Major
> Attachments: HIVE-29073.pdf, WIP-HIVE-29073.patch
>
>
> Scenario steps:
> {code:java}
> 1. Create a beeline session and modify metaconf like following (for example):
> set metaconf:metastore.try.direct.sql=false;
> set metaconf:metastore.partition.name.whitelist.pattern=[^9]*;
> 2. Restart HMS keeping the beeline session same.
> 3. Run some queries which leverages the modified metaConf, the sessions level
> modified metaconf are not honoured (observation){code}
>
> In SetProcessor.java, for metaconf's, SessionState is not updated.
> setMetaConf() is called which calls HMSHandler#setMetaConf and updates
> HMSHandlerContext which is ThreadLocal.
> SessionState should store modified metaconf in a map, similar to
> SessionState#overriddenConfigurations which currently stores only HS2 level
> configs.
> {*}From user perspective{*}, if the configs are set on beeline, it shouldn't
> matter to them, if HMS crashes and restarted or the HMS call (get_table etc)
> goes to another HMS (if more than 1 HMS are present), it should honour the
> session level modified conf. The new hmsclient connection should pass the
> metaConf to HMSHandler.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)