[
https://issues.apache.org/jira/browse/HIVE-9436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14288800#comment-14288800
]
Thejas M Nair commented on HIVE-9436:
-------------------------------------
[~hsubramaniyan] that is a good point regarding the two places where exception
checks and retries are happening. IMO, the metastore client should ideally only
retry any issue related to communication with metastore server. HMSHandler is
the one that should retry on any temporary errors such as JDOException. As
[~sushanth] said we have the real cause available there and we can do an
instanceof check over there. It seems like a simple and cleaner change to do
the check there. [~sushanth] What do you think ?
> RetryingMetaStoreClient does not retry JDOExceptions
> ----------------------------------------------------
>
> Key: HIVE-9436
> URL: https://issues.apache.org/jira/browse/HIVE-9436
> Project: Hive
> Issue Type: Bug
> Affects Versions: 0.14.0, 0.13.1
> Reporter: Sushanth Sowmyan
> Assignee: Sushanth Sowmyan
> Attachments: HIVE-9436.2.patch, HIVE-9436.patch
>
>
> RetryingMetaStoreClient has a bug in the following bit of code:
> {code}
> } else if ((e.getCause() instanceof MetaException) &&
> e.getCause().getMessage().matches("JDO[a-zA-Z]*Exception")) {
> caughtException = (MetaException) e.getCause();
> } else {
> throw e.getCause();
> }
> {code}
> The bug here is that java String.matches matches the entire string to the
> regex, and thus, that match will fail if the message contains anything before
> or after JDO[a-zA-Z]\*Exception. The solution, however, is very simple, we
> should match .\*JDO[a-zA-Z]\*Exception.\*
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)