You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Bryan Beaudreault (Jira)" <ji...@apache.org> on 2021/11/30 22:32:00 UTC

[jira] [Comment Edited] (HBASE-15676) FuzzyRowFilter fails and matches all the rows in the table if the mask consists of all 0s

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

Bryan Beaudreault edited comment on HBASE-15676 at 11/30/21, 10:31 PM:
-----------------------------------------------------------------------

We should probably document this incompatibility somewhere, perhaps in the upgrade docs. This tripped us up in our upgrade from 1.2.0 to 2.x. I'll submit a Jira to accumulate some incompatibilities that we encounter during the upgrade.


was (Author: bbeaudreault):
We should probably document this somewhere, perhaps in the upgrade docs. This tripped us up in our upgrade from 1.2.0 to 2.x. I'll submit a Jira to accumulate some incompatibilities that we encounter during the upgrade.

> FuzzyRowFilter fails and matches all the rows in the table if the mask consists of all 0s
> -----------------------------------------------------------------------------------------
>
>                 Key: HBASE-15676
>                 URL: https://issues.apache.org/jira/browse/HBASE-15676
>             Project: HBase
>          Issue Type: Bug
>          Components: Filters
>    Affects Versions: 0.98.13, 1.0.2, 1.2.0, 1.1.1, 2.0.0
>            Reporter: Rohit Sinha
>            Assignee: Matt Warhaftig
>            Priority: Major
>             Fix For: 1.3.0, 1.1.5, 1.2.2, 0.98.20, 2.0.0
>
>         Attachments: hbase-15287-0.98-v1.patch, hbase-15676-v1.patch, hbase-15676-v2.patch, hbase-15676-v3.patch, hbase-15676-v4.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 higher.
> 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 the 
> 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
(v8.20.1#820001)