Adar Dembo created HIVE-21508: --------------------------------- Summary: ClassCastException when initializing HiveMetaStoreClient on JDK10 or newer Key: HIVE-21508 URL: https://issues.apache.org/jira/browse/HIVE-21508 Project: Hive Issue Type: Bug Components: Clients Affects Versions: 2.3.4, 3.2.0 Reporter: Adar Dembo
There's this block of code in {{HiveMetaStoreClient:resolveUris}} (called from the constructor) on master: {noformat} private URI metastoreUris[]; ... if (MetastoreConf.getVar(conf, ConfVars.THRIFT_URI_SELECTION).equalsIgnoreCase("RANDOM")) { List uriList = Arrays.asList(metastoreUris); Collections.shuffle(uriList); metastoreUris = (URI[]) uriList.toArray(); } {noformat} The cast to {{URI[]}} throws a {{ClassCastException}} beginning with JDK 10, possibly with JDK 9 as well. Note that {{THRIFT_URI_SELECTION}} defaults to {{RANDOM}} so this should affect anyone who creates a {{HiveMetaStoreClient}}. On master this can be overridden with {{SEQUENTIAL}} to avoid the broken case; I'm working against 2.3.4 where there's no such workaround. [Here's|https://stackoverflow.com/questions/51372788/array-cast-java-8-vs-java-9] a StackOverflow post that explains the issue in more detail. Interestingly, the author described the issue in the context of the HMS; not sure why there was no follow up with a Hive bug report. -- This message was sent by Atlassian JIRA (v7.6.3#76005)