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

Reply via email to