[ 
https://issues.apache.org/jira/browse/HBASE-5924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13287582#comment-13287582
 ] 

nkeywal commented on HBASE-5924:
--------------------------------

This leads to a complete rewriting of the processBatchCallback function.
3 comments:
1) I don't see how this piece of code can happen, and I ran the complete test 
suite without getting into this part. Do I miss anything?
{noformat}
              for (Pair<Integer, Object> regionResult : regionResults) {
                if (regionResult == null) {
                  // if the first/only record is 'null' the entire region 
failed.
                  LOG.debug("Failures for region: " +
                      Bytes.toStringBinary(regionName) +
                      ", removing from cache");
                } else {
{noformat}

2) The callback is never used internally. Is this something we should keep for 
customer code?

3) Do I move it to HTable? There is a comment saying that it does not belong to 
Connection, and it's true. But it's public, so...


                
> In the client code, don't wait for all the requests to be executed before 
> resubmitting a request in error.
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-5924
>                 URL: https://issues.apache.org/jira/browse/HBASE-5924
>             Project: HBase
>          Issue Type: Improvement
>          Components: client
>    Affects Versions: 0.96.0
>            Reporter: nkeywal
>            Assignee: nkeywal
>            Priority: Minor
>
> The client (in the function HConnectionManager#processBatchCallback) works in 
> two steps:
>  - make the requests
>  - collect the failures and successes and prepare for retry
> It means that when there is an immediate error (region moved, split, dead 
> server, ...) we still wait for all the initial requests to be executed before 
> submitting again the failed request. If we have a scenario with all the 
> requests taking 5 seconds we have a final execution time of: 5 (initial 
> requests) + 1 (wait time) + 5 (final request) = 11s.
> We could improve this by analyzing immediately the results. This would lead 
> us, for the scenario mentioned above, to 6 seconds. 
> So we could have a performance improvement of nearly 50% in many cases, and 
> much more than 50% if the request execution time is different.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to