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

Phil Yang commented on HBASE-15325:
-----------------------------------

{quote}
Set batch limit and say allowed partial result is not same IMO.
{quote}
I agree with you, especially setBatch is not a new API. When user upgrade from 
0.9x/1.0 to 1.1/higher, the behavior may change, this is not good. No matter 
how we use isPartial flag internal, we may need to make sure the public API is 
clear and correct. If a user doesn't setAllowPartial, isPartial should always 
be false, even if the last part of batches doesn't have enough cells, just like 
0.98. And I think we need merge a batch result with correct size if client only 
get partial batch. eg. if client receives 3+5+3 cells in three rpc requests, we 
should return 5+5+1 cells per batch to user, all of them is not partial, right?

What we should guarantee when user setAllowPartial and setBatch? If user get 
three results 3+5+3, is the second result partial? Is the last one partial? And 
what we should guarantee in the last partial result when user setAllowPartial 
only? Now the last one is true if I am not wrong.


> ResultScanner allowing partial result will miss the rest of the row if the 
> region is moved between two rpc requests
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-15325
>                 URL: https://issues.apache.org/jira/browse/HBASE-15325
>             Project: HBase
>          Issue Type: Bug
>          Components: dataloss, Scanners
>    Affects Versions: 1.2.0, 1.1.3
>            Reporter: Phil Yang
>            Assignee: Phil Yang
>            Priority: Critical
>         Attachments: 15325-test.txt, HBASE-15325-v1.txt, HBASE-15325-v2.txt, 
> HBASE-15325-v3.txt, HBASE-15325-v5.txt, HBASE-15325-v6.1.txt, 
> HBASE-15325-v6.2.txt, HBASE-15325-v6.3.txt, HBASE-15325-v6.4.txt, 
> HBASE-15325-v6.5.txt, HBASE-15325-v6.txt
>
>
> HBASE-11544 allow scan rpc return partial of a row to reduce memory usage for 
> one rpc request. And client can setAllowPartial or setBatch to get several 
> cells in a row instead of the whole row.
> However, the status of the scanner is saved on server and we need this to get 
> the next part if there is a partial result before. If we move the region to 
> another RS, client will get a NotServingRegionException and open a new 
> scanner to the new RS which will be regarded as a new scan from the end of 
> this row. So the rest cells of the row of last result will be missing.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to