[ 
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

        

Reply via email to