hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Newman (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-6562) Fake KVs are sometimes passed to filters
Date Mon, 01 Oct 2012 23:01:09 GMT

    [ 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

 } 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
  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

View raw message