You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Alex Newman (JIRA)" <ji...@apache.org> on 2012/10/02 01:01:09 UTC
[jira] [Commented] (HBASE-6562) Fake KVs are sometimes passed to
filters
[ https://issues.apache.org/jira/browse/HBASE-6562?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13467286#comment-13467286 ]
Alex Newman commented on HBASE-6562:
------------------------------------
Sorry, I haven't had a lot of time to look at this. Still trying to figure out what exactly is going on, it looks like the when the first KeyValue of a scan in the column from the point of view of the code
HRegion.java
} else if (kv != null && !kv.isInternal() && filterRowKey(currentRow)) {
Is generated by
public static KeyValue createLastOnRow(final byte [] row,
final int roffset, final int rlength, final byte [] family,
final int foffset, final int flength, final byte [] qualifier,
final int qoffset, final int qlength) {
return new KeyValue(row, roffset, rlength, family,
foffset, flength, qualifier, qoffset, qlength,
HConstants.OLDEST_TIMESTAMP, Type.Minimum, null, 0, 0);
}
So it is always internal from that point of the code.
Only later from within
StoreScanner.java
public synchronized boolean next(List<KeyValue> outResult, int limit, String metric) throws IOException {
....
LOOP: while((kv = this.heap.peek()) != null) {
( The second time through)
Do we get the actual kv, with a proper type and timestamp. This seems to mess with filtering.
> Fake KVs are sometimes passed to filters
> ----------------------------------------
>
> Key: HBASE-6562
> URL: https://issues.apache.org/jira/browse/HBASE-6562
> Project: HBase
> Issue Type: Bug
> Reporter: Lars Hofhansl
> Assignee: Lars Hofhansl
> Priority: Minor
> Fix For: 0.94.2, 0.96.0
>
> Attachments: 6562.txt, 6562-v2.txt, 6562-v3.txt
>
>
> In internal tests at Salesforce we found that fake row keys sometimes are passed to filters (Filter.filterRowKey(...) specifically).
> The KVs are eventually filtered by the StoreScanner/ScanQueryMatcher, but the row key is passed to filterRowKey in RegionScannImpl *before* that happens.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira