[
https://issues.apache.org/jira/browse/HIVE-28534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sercan Tekin updated HIVE-28534:
--------------------------------
Status: Patch Available (was: Open)
> Improve HMS Client Exception Handling for Hive-3
> ------------------------------------------------
>
> Key: HIVE-28534
> URL: https://issues.apache.org/jira/browse/HIVE-28534
> Project: Hive
> Issue Type: Improvement
> Components: Standalone Metastore
> Affects Versions: 3.1.3
> Reporter: Sercan Tekin
> Assignee: Sercan Tekin
> Priority: Major
> Labels: pull-request-available
> Fix For: 3.1.4
>
>
> When the HMS client fails to connect to the server due to a
> *TTransportException*, there is no issue with error reporting.
> However, when the failure is caused by an *IOException*, the exception
> object, which is used for reporting purposes, remains null. As a result, it
> does not properly capture the root cause, and end-users encounter an
> unrelated NPE, masking the actual issue.
> {code:java}
> Exception in thread "main" java.lang.AssertionError: Unable to connect to HMS!
> at TestHMS.main(TestHMS.java:20)
> Caused by: java.lang.NullPointerException
> at
> org.apache.hadoop.util.StringUtils.stringifyException(StringUtils.java:90)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:613)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:233)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:145)
> at TestHMS.main(TestHMS.java:13)
> {code}
> The testing code that I used is as below:
> {code:java}
> import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
> import org.apache.hadoop.hive.conf.HiveConf;
> import java.util.List;
> public class TestHMS {
> public static void main(String[] args) {
> String HOSTNAME = "<hostname>";
> HiveConf hiveConf = new HiveConf();
> hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://" +
> HOSTNAME + ":9083");
> hiveConf.setBoolVar(HiveConf.ConfVars.METASTORE_USE_THRIFT_SASL,
> true);
> hiveConf.setBoolVar(HiveConf.ConfVars.HIVE_METASTORE_USE_SSL, true);
> try (HiveMetaStoreClient client = new HiveMetaStoreClient(hiveConf)) {
> List<String> databases = client.getAllDatabases();
> System.out.println("Available databases:");
> for (String db : databases) {
> System.out.println(db);
> }
> } catch (Exception e) {
> throw new AssertionError("Unable to connect to HMS!", e);
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)