hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Yang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15484) Correct the semantic of batch and partial
Date Wed, 06 Apr 2016 15:07:25 GMT

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

Phil Yang commented on HBASE-15484:

I find a corner case that if we setAllowPartialResults(true) and use a sparse filter. We may
receive a heartbeat with some cells, and we will load them to cache and the Result.isPartial()
return true. But next rpc may return cells in next row because the rest cells of previous
row are all skipped. So the last Result of a row may still be partial. I think it is acceptable
but we need change the definition of isPartial(). 

New definition may be:
Whether or not this result from scanner is a partial result.
The result will never be partial unless use Scan#setAllowPartialResults(true) while scanning.
If allowing partial results, the result will still not be partial if ClientScanner is sure
that the Result is the last one of this row. Otherwise the result will be partial if the number
of cells in this result is less than expected, which means less than batch size (if setBatch)
or not a complete row (if not setBatch).

> Correct the semantic of batch and partial
> -----------------------------------------
>                 Key: HBASE-15484
>                 URL: https://issues.apache.org/jira/browse/HBASE-15484
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.2.0, 1.1.3
>            Reporter: Phil Yang
>            Assignee: Phil Yang
>         Attachments: HBASE-15484-v1.patch, HBASE-15484-v2.patch, HBASE-15484-v3.patch
> Follow-up to HBASE-15325, as discussed, the meaning of setBatch and setAllowPartialResults
should not be same. We should not regard setBatch as setAllowPartialResults.
> And isPartial should be define accurately.
> (Considering getBatch==MaxInt if we don't setBatch.) If result.rawcells.length<scan.getBatch
&& result is not the last part of this row, isPartial==true, otherwise isPartial ==
false. So if user don't setAllowPartialResults(true), isPartial should always be false.

This message was sent by Atlassian JIRA

View raw message