[
https://issues.apache.org/jira/browse/HBASE-16172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15365577#comment-15365577
]
Yu Li commented on HBASE-16172:
-------------------------------
Comparing with ScannerCallableWithReplicas, I'm wondering whether we should
also add some timeout for {{f.get()}} and catch {{TimeOutException}} in the
below part:
{code}
- Future<Result> f = cs.take();
+ Future<Result> f = cs.poll(operationTimeout, TimeUnit.MILLISECONDS);
+ if (f == null) {
+ throw new RetriesExhaustedException("timed out after " +
operationTimeout + " ms");
+ }
return f.get();
{code}
Thanks.
> Unify the retry logic in ScannerCallableWithReplicas and
> RpcRetryingCallerWithReadReplicas
> ------------------------------------------------------------------------------------------
>
> Key: HBASE-16172
> URL: https://issues.apache.org/jira/browse/HBASE-16172
> Project: HBase
> Issue Type: Bug
> Reporter: Yu Li
> Assignee: Ted Yu
> Attachments: 16172.v1.txt, 16172.v2.txt, 16172.v2.txt
>
>
> The issue is pointed out by [~devaraj] in HBASE-16132 (Thanks D.D.), that in
> {{RpcRetryingCallerWithReadReplicas#call}} we will call
> {{ResultBoundedCompletionService#take}} instead of {{poll}} to dead-wait on
> the second one if the first replica timed out, while in
> {{ScannerCallableWithReplicas#call}} we still use
> {{ResultBoundedCompletionService#poll}} with some timeout for the 2nd replica.
> This JIRA aims at discussing whether to unify the logic in these two kinds of
> caller with region replica and taking action if necessary.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)