[
https://issues.apache.org/jira/browse/HBASE-15325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15179731#comment-15179731
]
Anoop Sam John commented on HBASE-15325:
----------------------------------------
One Q.
User created a Scan with batch size of 10. So the expectation is each next()
call with give a result with 10 cells in a row. So if a row contain 20 cells,
expectation is user will get 2 Results back.
Now at server side when this read in progress, before a batch size (ie. 10)
reached, a time limit or size limit reached. So it will return the Result then
with marking as partial. So consider 5 cells came in one result and then 10 in
another and last 5 in another. How we should return results to app? 3 results?
He has not set allow partial on Scan. I think as per current code, it will be
3 results (?)
Said that, if we need to fix also, marking a batch size reached partial row
result as partial will make it such that we really dont know how it is partial.
So IMHO we think many time before changing the meaning of partial result
(Result which RS return).. As of now partial means it is not full as requested
by the client because of size limit or time limit reached. Batch limit reached
case is not a partial for RS because client asked it to return result in that
way. Yes it is a partial row. But not just part of result what client actually
wanted. It is full Result what the client wanted.
And again it is exposed in result public class. So more careful..
> 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)