hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Warhaftig (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15676) FuzzyRowFilter fails and matches all the rows in the table if the mask consists of all 0s
Date Wed, 27 Apr 2016 11:59:12 GMT

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

Matt Warhaftig commented on HBASE-15676:

Hi [~chenheng], the first code snippet you list shifts the new mask encoding values of -1
& 2 back to -1 & 0 respectively which FuzzyRowFilter uses for its bitwise scan operations.

As for your second code snippet, yes, good catch that comment should be updated.  I'll update
the line once I get feedback on the patch from [~tedyu].

> FuzzyRowFilter fails and matches all the rows in the table if the mask consists of all
> -----------------------------------------------------------------------------------------
>                 Key: HBASE-15676
>                 URL: https://issues.apache.org/jira/browse/HBASE-15676
>             Project: HBase
>          Issue Type: Bug
>          Components: Filters
>    Affects Versions: 2.0.0, 0.98.13, 1.0.2, 1.2.0, 1.1.1
>            Reporter: Rohit Sinha
>         Attachments: hbase-15676-v1.patch, hbase-15676-v2.patch
> While using FuzzyRowFilter we noticed that if the mask array consists of all 0s (fixed)
the FuzzyRowFilter matches all the rows in the table. We noticed this on HBase 1.1, 1.2 and
> After some digging we suspect that this is because of isPreprocessedMask() check which
is used in preprocessMask() which was added here: https://issues.apache.org/jira/browse/HBASE-13761
> If the mask consists of all 0s then the isPreprocessedMask() returns true and the preprocessing
which responsible for changing 0s to -1 doesn't happen and hence all rows are matched in scan.
> This scenario can be tested in TestFuzzyRowFilterEndToEnd#testHBASE14782() If we change
> byte[] fuzzyKey = Bytes.toBytesBinary("\\x00\\x00\\x044");
> byte[] mask = new byte[] {1,0,0,0};
> to 
> byte[] fuzzyKey = Bytes.toBytesBinary("\\x9B\\x00\\x044e");
> byte[] mask = new byte[] {0,0,0,0,0};
> We expect one match but this will match all the rows in the table. 

This message was sent by Atlassian JIRA

View raw message