You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Vitalii Diravka (JIRA)" <ji...@apache.org> on 2018/07/01 00:34:00 UTC

[jira] [Comment Edited] (DRILL-6412) Hive default storage plugin template shows "null" when drillbit is started

    [ https://issues.apache.org/jira/browse/DRILL-6412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16528944#comment-16528944 ] 

Vitalii Diravka edited comment on DRILL-6412 at 7/1/18 12:33 AM:
-----------------------------------------------------------------

*RCA.* The issue related to the wrong design of obtaining plugins by REST API. 
 Currently instantiating of Drill storage plugins is accompanied by instantiating clients for such storages. 
 Even for disabled plugins the clients are tried to be instantiated and when Exception is obtained in this process the `null` is shown in WebUI.

*Solution.* Initialize clients only for the case, when plugin is enabled. If some error is obtained, show the message and leave the plugin disabled.


was (Author: vitalii):
*RCA.*The issue related to the wrong design of obtaining plugins by REST API. 
Currently instantiating of Drill storage plugins is accompanied by instantiating clients for such storages.
Even for disabled plugins the clients are tried to be instantiated and when Exception is obtained in this process the `null` is shown in WebUI.

*Solution.* Initialize clients only for the case, when plugin is enabled. If some error is obtained, show the message and leave the plugin disabled.

> Hive default storage plugin template shows "null" when drillbit is started
> --------------------------------------------------------------------------
>
>                 Key: DRILL-6412
>                 URL: https://issues.apache.org/jira/browse/DRILL-6412
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Storage - Hive, Storage - Other
>    Affects Versions: 1.13.0
>            Reporter: Vitalii Diravka
>            Priority: Minor
>             Fix For: Future
>
>
> The storage plugin configs for Hive storage plugin is not shown for the case when some error happened while instantiating HiveMetaStoreClient:
> {code}
>  distribution/target/apache-drill-1.14.0-SNAPSHOT/apache-drill-1.14.0-SNAPSHOT/bin/drill-embedded 
> May 12, 2018 5:21:45 PM org.glassfish.jersey.server.ApplicationHandler initialize
> INFO: Initiating Jersey application, version Jersey: 2.8 2014-04-29 01:25:26...
> apache drill 1.14.0-SNAPSHOT 
> "the only truly happy people are children, the creative minority and drill users"
> 0: jdbc:drill:zk=local> 17:21:54.609 [qtp17064901-66] ERROR o.a.h.h.metastore.RetryingHMSHandler - MetaException(message:Version information not found in metastore. )
>         at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:7564)
>         at org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:7542)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:101)
>         at com.sun.proxy.$Proxy72.verifySchema(Unknown Source)
>         at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:591)
>         at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:584)
>         at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:651)
> ....
> at org.apache.drill.exec.store.hive.DrillHiveMetaStoreClient.createCloseableClientWithCaching(DrillHiveMetaStoreClient.java:136)
>         at org.apache.drill.exec.store.hive.schema.HiveSchemaFactory.<init>(HiveSchemaFactory.java:76)
>         at org.apache.drill.exec.store.hive.HiveStoragePlugin.<init>(HiveStoragePlugin.java:69)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>         at org.apache.drill.exec.store.StoragePluginRegistryImpl.create(StoragePluginRegistryImpl.java:345)
>         at org.apache.drill.exec.store.StoragePluginRegistryImpl.createOrUpdate(StoragePluginRegistryImpl.java:238)
> {code}
> When drillbit is starting and StoragePluginRegistryImpl creates the HIveStoragePlugin the DrillHiveMetaStoreClient is instantiated even when it is disabled in the plugin template configs and there is no Hive on the machine. 
> The solution is to check status for plugin from the template, when it is disabled there is no need to instantiate the client for the appropriate storage.
> The workaround is to use  "hive.metastore.schema.verification": "false", for this case DrillHiveMetaStoreClient is created successfully (but for proper working it should be performed only when plugin is enabled).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)