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