You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Adar Dembo (JIRA)" <ji...@apache.org> on 2019/03/26 08:50:00 UTC

[jira] [Created] (HIVE-21508) ClassCastException when initializing HiveMetaStoreClient on JDK10 or newer

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)