[ 
https://issues.apache.org/jira/browse/HIVE-25261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhihua Deng updated HIVE-25261:
-------------------------------
    Description: 
[RetryingMetaStoreClient|https://github.com/apache/hive/blob/master/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/RetryingMetaStoreClient.java#L267-L276]
 relies on the message of MetaException to make decision on retrying the 
current operation when failed. However the RetryingHMSHandler only wraps the 
message into MetaException, which may cause the client unable to retry with 
other metastore instances.

For example, if we got exception:
{noformat}
Caused by: javax.jdo.JDOFatalUserException: Persistence Manager has been closed
 at 
org.datanucleus.api.jdo.JDOPersistenceManager.assertIsOpen(JDOPersistenceManager.java:2235)
 at 
org.datanucleus.api.jdo.JDOPersistenceManager.evictAll(JDOPersistenceManager.java:481)
 at 
org.apache.hadoop.hive.metastore.ObjectStore.rollbackTransaction(ObjectStore.java:635)
 at org.apache.hadoop.hive.metastore.ObjectStore.getTable(ObjectStore.java:1415)
 at sun.reflect.GeneratedMethodAccessor153.invoke(Unknown Source)
 at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498){noformat}
RetryingHMSHandler will throw MetaException with message 'Persistence Manager 
has been closed', which not in the recoverable pattern defined in client.

  was:
[RetryingMetaStoreClient|https://github.com/apache/hive/blob/master/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/RetryingMetaStoreClient.java#L267-L276]
 relies on the message of MetaException to make decision on retrying the 
current operation when failed. However the RetryingHMSHandler only wraps the 
message into MetaException, which may cause the client unable to retry with 
other metastore instances.

For example, if we got exception:
{code:java}
Caused by: javax.jdo.JDOFatalUserException: Persistence Manager has been closed
 at 
org.datanucleus.api.jdo.JDOPersistenceManager.assertIsOpen(JDOPersistenceManager.java:2235)
 at 
org.datanucleus.api.jdo.JDOPersistenceManager.evictAll(JDOPersistenceManager.java:481)
 at 
org.apache.hadoop.hive.metastore.ObjectStore.rollbackTransaction(ObjectStore.java:635)
 at org.apache.hadoop.hive.metastore.ObjectStore.getTable(ObjectStore.java:1415)
 at sun.reflect.GeneratedMethodAccessor153.invoke(Unknown Source)
 at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498){code}
RetryingHMSHandler will throw MetaException with message 'Persistence Manager 
has been closed', which not in the recoverable pattern defined in client.


> RetryingHMSHandler should wrap the MetaException with short description of 
> the target
> -------------------------------------------------------------------------------------
>
>                 Key: HIVE-25261
>                 URL: https://issues.apache.org/jira/browse/HIVE-25261
>             Project: Hive
>          Issue Type: Bug
>          Components: Standalone Metastore
>            Reporter: Zhihua Deng
>            Assignee: Zhihua Deng
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> [RetryingMetaStoreClient|https://github.com/apache/hive/blob/master/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/RetryingMetaStoreClient.java#L267-L276]
>  relies on the message of MetaException to make decision on retrying the 
> current operation when failed. However the RetryingHMSHandler only wraps the 
> message into MetaException, which may cause the client unable to retry with 
> other metastore instances.
> For example, if we got exception:
> {noformat}
> Caused by: javax.jdo.JDOFatalUserException: Persistence Manager has been 
> closed
>  at 
> org.datanucleus.api.jdo.JDOPersistenceManager.assertIsOpen(JDOPersistenceManager.java:2235)
>  at 
> org.datanucleus.api.jdo.JDOPersistenceManager.evictAll(JDOPersistenceManager.java:481)
>  at 
> org.apache.hadoop.hive.metastore.ObjectStore.rollbackTransaction(ObjectStore.java:635)
>  at 
> org.apache.hadoop.hive.metastore.ObjectStore.getTable(ObjectStore.java:1415)
>  at sun.reflect.GeneratedMethodAccessor153.invoke(Unknown Source)
>  at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498){noformat}
> RetryingHMSHandler will throw MetaException with message 'Persistence Manager 
> has been closed', which not in the recoverable pattern defined in client.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to