hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Gray (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HBASE-1790) filters are not working correctly
Date Sat, 29 Aug 2009 14:27:32 GMT

     [ https://issues.apache.org/jira/browse/HBASE-1790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jonathan Gray updated HBASE-1790:
---------------------------------

    Attachment: HBASE-1790-v2.patch

This adds a prefix test to stack's framework and then makes a change inside of HRegion.nextInternal()
to return the current result if there is one (once we hit a filtered row key).

What was happening was we put the second row in the result (List<KV>), iterated to the
third, it said filter it, so we iterated the scanner, cleared the result, and returned.  So
even though the second KV should have been returned, the third KV forced a full clear of the
result.

I added a check that if we just hit a new row (currentRow != row) and there is something still
in the result (!result.isEmpty()), then return w/o clearing.

I also modified prefix filter to be more stateful so that it knows once it has passed it's
prefix.  Once passed the prefix, it returns filterAllRemaining() as true, so this further
cleans up the test case.  Without that, when running this at the Region level, we end up returning
an empty result list on the third call rather than the second call returning false (that we
are done).  Since we actually can determine we are done in this case, because the prefix has
been passed, adding it cleans that up so we return the correct result in the second call,
and that call also returns false letting up know that there will be no more matches.

I had to update one test (I think I actually wrote it) that tested FilterList MUST_PASS_ONE
because it was running against a key passed the prefix, and then reversing back to the prefix.
 That's impossible behavior so I slightly modified the test.

Not sure whether this is totally right but in debugging it made sense.  All tests I've run
pass.

> filters are not working correctly
> ---------------------------------
>
>                 Key: HBASE-1790
>                 URL: https://issues.apache.org/jira/browse/HBASE-1790
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: filters
>    Affects Versions: 0.20.0, 0.21.0
>            Reporter: Matus Zamborsky
>             Fix For: 0.20.0
>
>         Attachments: HBASE-1790-v2.patch, hbase-1790.patch, testfilter.patch
>
>
> Filters used in Scanning the table are not working correctly. For example a table with
three rows:
> 1. rowkey = adminbackslash-nb0, desc:temp = "temp"
> 2. rowkey = adminbackslash-nb1, desc:temp = "temp"
> 3. rowkey = adminkleptoman, desc:temp = "temp"
> If I scan all rows in the table without filter I get all the rows as expected. But applying
a simple prefixfilter with parameter "adminbackslash" will return only first row. I searched
it down to HRegion::nextInternal method, which will not output one passed row before denied
row(by filter). 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message