[ 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)