[ https://issues.apache.org/jira/browse/HIVE-27097?focusedWorklogId=846699&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-846699 ]
ASF GitHub Bot logged work on HIVE-27097: ----------------------------------------- Author: ASF GitHub Bot Created on: 21/Feb/23 17:40 Start Date: 21/Feb/23 17:40 Worklog Time Spent: 10m Work Description: wecharyu opened a new pull request, #4076: URL: https://github.com/apache/hive/pull/4076 ### What changes were proposed in this pull request? 1. `RetryingMetaStoreClient` retry for only `TTransportException`. 2. `RetryingHMSHandler` skip some exceptions which always turn to fail even with retry. ### Why are the changes needed? To avoid some unnecessary retry in client and server sides. 1. As a RPC client, `RetryingMetaStoreClient` should only retry for communication errors like transport and connection error. 2. When querying from DBS, `RetryingHMSHandler` do not need retry for some unrecoverable exceptions like `SQLIntegrityConstraintViolationException`. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Add unit tests. Issue Time Tracking ------------------- Worklog Id: (was: 846699) Remaining Estimate: 0h Time Spent: 10m > Improve the retry strategy for Metastore client and server > ---------------------------------------------------------- > > Key: HIVE-27097 > URL: https://issues.apache.org/jira/browse/HIVE-27097 > Project: Hive > Issue Type: Improvement > Components: Hive > Affects Versions: 4.0.0-alpha-2 > Reporter: Wechar > Assignee: Wechar > Priority: Major > Time Spent: 10m > Remaining Estimate: 0h > > *Background* > Hive provides *{{RetryingMetaStoreClient}}* and *{{RetryingHMSHandler}}* to > do retry when thrift request failed: > * RetryingMetaStoreClient will retry for *thrift related exception* and some > *MetaException* > * RetryingHMSHandler will retry for all {*}JDOException{*} or > *NucleusException*. > *Motivation* > Current retry mechanism will lead to many unnecessary retries in both client > and server. To simplify the process, we introduce following retry mechanism: > * Client side only concerns the error of communication, i.e., > {*}TTransportException{*}. > * Server side can skip some exceptions which always turn to fail even with > retry, like {*}SQLIntegrityConstraintViolationException{*}. -- This message was sent by Atlassian Jira (v8.20.10#820010)