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

Lars Hofhansl commented on HBASE-11667:
---------------------------------------

That's exactly the kind of discussion I wanted to have.

In your example [~zjushch], each request to a region server involves a key (the 
Scan's start key). So after your #3 there would be a new RPC. With a new key 
('bbb' if scanner caching is 1 or 'ccc' if scanner caching is 2, etc). In each 
case the scanner would correctly reset itself to retry only the part needed for 
the last startkey used for the RPC that failed with NSRE.
As for the test, it running/interleaving scans and splits in a loop (20 
iteratoions) and test for the scenario you mention.

I still think the change is correct.


> Simplify ClientScanner logic for NSREs.
> ---------------------------------------
>
>                 Key: HBASE-11667
>                 URL: https://issues.apache.org/jira/browse/HBASE-11667
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Lars Hofhansl
>            Assignee: Lars Hofhansl
>             Fix For: 0.99.0, 2.0.0, 0.94.23, 0.98.6
>
>         Attachments: 11667-0.94.txt, 11667-trunk.txt, HBASE-11667-0.98.patch
>
>
> We ran into an issue with Phoenix where a RegionObserver coprocessor 
> intercepts a scan and returns an aggregate (in this case a count) with a fake 
> row key. It turns out this does not work when the {{ClientScanner}} 
> encounters NSREs, as it uses the last key it saw to reset the scanner to try 
> again (which in this case would be the fake key).
> While this is arguably a rare case and one could also argue that a region 
> observer just shouldn't do this... While looking at {{ClientScanner}}'s code 
> I found this logic not necessary.
> A NSRE occurred because we contacted a region server with a key that it no 
> longer hosts. This is the start key, so it is always correct to retry with 
> this same key. That simplifies the ClientScanner logic and also make this 
> sort of coprocessors possible,



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to