You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (JIRA)" <ji...@apache.org> on 2012/05/11 19:00:51 UTC

[jira] [Commented] (HBASE-5974) Scanner retry behavior with RPC timeout on next() seems incorrect

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

Anoop Sam John commented on HBASE-5974:
---------------------------------------


So we might need a proper sequencing of the next() calls from the client to RS... Might be like the RegionScanner maintain the key of the last KV it passed to client and client in the next next() call pass back this key which is the last KV's key it received?

In the scenario which is mentioned above which might cause KVs to be skipped, these 2 keys won't match and we can close the scan at RS side and give exception which in turn can cause a new scanner creation from that point of last KV from the client side... [Some thing like how currently ClientScanner react to NSRE etc]

When the client is not passing any last key(null), there wont be any check in the RegionScanner level and scan will continue as normal like the current way.  One down side is that with every scan() call to the RS, need to pass some extra data.. May be if we can distinguish the 1st attempt of call() in the ScannerCallable and the later attempts, we can avoid passing the key for the 1st RS call. Only for the later trials we pass the key...

These are some thoughts came to me after going through the code..  Your thoughts...
                
> Scanner retry behavior with RPC timeout on next() seems incorrect
> -----------------------------------------------------------------
>
>                 Key: HBASE-5974
>                 URL: https://issues.apache.org/jira/browse/HBASE-5974
>             Project: HBase
>          Issue Type: Bug
>          Components: client, regionserver
>    Affects Versions: 0.90.7, 0.92.1, 0.94.0, 0.96.0
>            Reporter: Todd Lipcon
>            Priority: Critical
>
> I'm seeing the following behavior:
> - set RPC timeout to a short value
> - call next() for some batch of rows, big enough so the client times out before the result is returned
> - the HConnectionManager stuff will retry the next() call to the same server. At this point, one of two things can happen: 1) the previous next() call will still be processing, in which case you get a LeaseException, because it was removed from the map during the processing, or 2) the next() call will succeed but skip the prior batch of rows.

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