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