Duo Zhang commented on HBASE-18489:

OK, the problem comes with multiple stores.

For example, storeScannerA has already moved to row2/cfA/cqB, and prevCell is 
row2/cfA/cqA, so we send a row2 cursor back.

Next time, we get row2/cfA/cqB, and then comes to storeScannerB and the time 
limit is reached, then we will just return the prevCell of storeScannerB, it 
will be row1 since we haven't peeked any row2 cells for storeScannerB yet.

And also, it is not safe to just store prevCell to ScannerContext as its 
content maybe changed after shipped is called. For now it is OK, we will use it 
before calling shipped but I'm afraid people will use it later in a wrong way. 
Need to add some docs about the behavior.

Will fix these problems in this issue directly as it could be reproduced by the 
UT introduced by this issue.


> Expose scan cursor in RawScanResultConsumer
> -------------------------------------------
>                 Key: HBASE-18489
>                 URL: https://issues.apache.org/jira/browse/HBASE-18489
>             Project: HBase
>          Issue Type: Sub-task
>          Components: asyncclient, Client, scan
>    Affects Versions: 2.0.0-alpha-1
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>             Fix For: 2.0.0-alpha-2
>         Attachments: HBASE-18489.patch
> The first step of supporting scan cursor for async client.

This message was sent by Atlassian JIRA

Reply via email to