[ https://issues.apache.org/jira/browse/HBASE-14269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14705204#comment-14705204 ]
Hadoop QA commented on HBASE-14269: ----------------------------------- {color:red}-1 overall{color}. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12751499/HBASE-14269-v1.patch against master branch at commit dc9c2efcc9a7d0f00d738b1b7dbd59a208c5a7a9. ATTACHMENT ID: 12751499 {color:green}+1 @author{color}. The patch does not contain any @author tags. {color:green}+1 tests included{color}. The patch appears to include 4 new or modified tests. {color:green}+1 hadoop versions{color}. The patch compiles with all supported hadoop versions (2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.6.0 2.7.0) {color:green}+1 javac{color}. The applied patch does not increase the total number of javac compiler warnings. {color:green}+1 protoc{color}. The applied patch does not increase the total number of protoc compiler warnings. {color:green}+1 javadoc{color}. The javadoc tool did not generate any warning messages. {color:red}-1 checkstyle{color}. The applied patch generated 1854 checkstyle errors (more than the master's current 1853 errors). {color:green}+1 findbugs{color}. The patch does not introduce any new Findbugs (version 2.0.3) warnings. {color:green}+1 release audit{color}. The applied patch does not increase the total number of release audit warnings. {color:green}+1 lineLengths{color}. The patch does not introduce lines longer than 100 {color:green}+1 site{color}. The mvn post-site goal succeeds with this patch. {color:red}-1 core tests{color}. The patch failed these unit tests: org.apache.hadoop.hbase.io.hfile.bucket.TestBucketCache {color:red}-1 core zombie tests{color}. There are 6 zombie test(s): at org.apache.hadoop.hbase.mapreduce.TestTableMapReduceBase.testCombiner(TestTableMapReduceBase.java:106) at org.apache.hadoop.hbase.mapreduce.TestTableSnapshotInputFormat.testWithMapReduceImpl(TestTableSnapshotInputFormat.java:241) at org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormatTestBase.testWithMapReduce(TableSnapshotInputFormatTestBase.java:111) at org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormatTestBase.testWithMapReduceMultiRegion(TableSnapshotInputFormatTestBase.java:95) at org.apache.hadoop.hbase.mapreduce.TestTableInputFormat.testInputFormat(TestTableInputFormat.java:373) at org.apache.hadoop.hbase.mapreduce.TestTableInputFormat.testJobConfigurableExtensionOfTableInputFormatBase(TestTableInputFormat.java:351) at org.apache.hadoop.hbase.mapreduce.TestImportTSVWithVisibilityLabels.testMROnTable(TestImportTSVWithVisibilityLabels.java:165) Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/15192//testReport/ Release Findbugs (version 2.0.3) warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/15192//artifact/patchprocess/newFindbugsWarnings.html Checkstyle Errors: https://builds.apache.org/job/PreCommit-HBASE-Build/15192//artifact/patchprocess/checkstyle-aggregate.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/15192//console This message is automatically generated. > FuzzyRowFilter omits certain rows when multiple fuzzy key exist > --------------------------------------------------------------- > > Key: HBASE-14269 > URL: https://issues.apache.org/jira/browse/HBASE-14269 > Project: HBase > Issue Type: Bug > Components: Filters > Reporter: hongbin ma > Assignee: hongbin ma > Attachments: HBASE-14269-v1.patch, HBASE-14269.patch > > > https://issues.apache.org/jira/browse/HBASE-13761 introduced a RowTracker in > FuzzyRowFilter to avoid performing getNextForFuzzyRule() for each fuzzy key > on each getNextCellHint() by maintaining a list of possible row matches for > each fuzzy key. The implementation assumes that the prepared rows will be > matched one by one, so it removes the first row in the list as soon as it is > used. However, this approach may lead to omitting rows in some cases: > Consider a case where we have two fuzzy keys: > 1?1 > 2?2 > and the data is like: > 000 > 111 > 112 > 121 > 122 > 211 > 212 > when the first row 000 fails to match, RowTracker will update possible row > matches with cell 000 and fuzzy keys 1?1,2?2. This will populate RowTracker > with 101 and 202. Then 101 is popped out of RowTracker, hint the scanner to > go to row 101. The scanner will get 111 and find it is a match, and continued > to find that 112 is not a match, getNextCellHint will be called again. Then > comes the bug: Row 101 has been removed out of RowTracker, so RowTracker will > jump to 202. As you see row 121 will be omitted, but it is actually a match > for fuzzy key 1?1. > I will illustrate the bug by adding a new test case in > TestFuzzyRowFilterEndToEnd. Also I will provide the bug fix in my patch. The > idea of the new solution is to maintain a priority queue for all the possible > match rows for each fuzzy key, and whenever getNextCellHint is called, the > elements in the queue that are smaller than the parameter currentCell will be > updated(and re-insert into the queue). The head of queue will always be the > "Next cell hint". -- This message was sent by Atlassian JIRA (v6.3.4#6332)