[ https://issues.apache.org/jira/browse/HBASE-15658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15259627#comment-15259627 ]
Gary Helmling commented on HBASE-15658: --------------------------------------- Committed to branch-1.3+. [~busbey] any objections to including this in branch-1.2? It's a change in the prior behavior, but CallQueueTooBigException, which was introduced in 1.2, can make retries more likely in loaded scenarios, and exacerbate the old meta cache clearing behavior. > RegionServerCallable / RpcRetryingCaller clear meta cache on retries > -------------------------------------------------------------------- > > Key: HBASE-15658 > URL: https://issues.apache.org/jira/browse/HBASE-15658 > Project: HBase > Issue Type: Sub-task > Components: Client > Affects Versions: 1.2.1 > Reporter: Gary Helmling > Assignee: Gary Helmling > Priority: Critical > Fix For: 2.0.0, 1.3.0, 1.4.0 > > Attachments: hbase-15658.001.patch, hbase-15658.002.patch, > hbase-15658.branch-1.3.001.patch > > > When RpcRetryingCaller.callWithRetries() attempts a retry, it calls > RetryingCallable.prepare(tries != 0). For RegionServerCallable (and probably > others), this will wind up calling > RegionLocator.getRegionLocation(reload=true), which will drop the meta cache > for the given region and always go back to meta. > This is kind of silly, since in the case of exceptions, we already call > RetryingCallable.throwable(), which goes to great pains to only refresh the > meta cache when necessary. Since we are already doing this on failure, I > don't really understand why we are doing duplicate work to refresh the meta > cache on prepare() at all. -- This message was sent by Atlassian JIRA (v6.3.4#6332)