[jira] [Updated] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anton Nazaruk updated HBASE-14206: -- Priority: Critical (was: Major) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Ted Yu Priority: Critical Labels: filter I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anton Nazaruk updated HBASE-14206: -- Description: I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. was: I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start =new byte[] {-3}; byte[] key1End =new byte[] {-2}; byte[] key2Start =new byte[] {5}; byte[] key2End =new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Ted Yu Labels: filter I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return
[jira] [Updated] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anton Nazaruk updated HBASE-14206: -- Description: I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start =new byte[] {-3}; byte[] key1End =new byte[] {-2}; byte[] key2Start =new byte[] {5}; byte[] key2End =new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. was: I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start =new byte[] {-3}; byte[] key1End =new byte[] {-2}; byte[] key2Start =new byte[] {5}; byte[] key2End =new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Ted Yu Labels: filter I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start =new byte[] {-3}; byte[] key1End =new byte[] {-2}; byte[] key2Start =new byte[] {5}; byte[] key2End =new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) {
[jira] [Created] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
Anton Nazaruk created HBASE-14206: - Summary: MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Ted Yu I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start =new byte[] {-3}; byte[] key1End =new byte[] {-2}; byte[] key2Start =new byte[] {5}; byte[] key2End =new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14681558#comment-14681558 ] Anton Nazaruk commented on HBASE-14206: --- what branch do you use? I've taken code from branch-1.1.0, fixed and test has passed... weird MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Ted Yu Priority: Critical Labels: filter Attachments: 14206-test.patch I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14681632#comment-14681632 ] Anton Nazaruk commented on HBASE-14206: --- just ran TestMultiRowRangeFilter with applied changes (new test method + applied mentioned fix) from newest origin/master (2.0.0-SNAPSHOT) -- all tests are green MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Ted Yu Priority: Critical Labels: filter Attachments: 14206-test.patch I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14681846#comment-14681846 ] Anton Nazaruk commented on HBASE-14206: --- yeah, I've used the same approach as [~jiajia] in order to make it compatible with 2.0.0-SNAPSHOT API, sorry didn't mention it in previous comment ( MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Anton Nazaruk Priority: Critical Labels: filter Attachments: 14206-test.patch, 14206-v1.txt I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges
[ https://issues.apache.org/jira/browse/HBASE-14206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14681882#comment-14681882 ] Anton Nazaruk commented on HBASE-14206: --- [~tedyu], what do I have to do with this issue (you've assigned it to me)? I am not hbase committer. If there is a reference of your jira process and issues states - please, share it with me. MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges --- Key: HBASE-14206 URL: https://issues.apache.org/jira/browse/HBASE-14206 Project: HBase Issue Type: Bug Affects Versions: 1.1.0 Environment: linux, java7 Reporter: Anton Nazaruk Assignee: Anton Nazaruk Priority: Critical Labels: filter Attachments: 14206-test.patch, 14206-v1.txt I haven't found a way to attach test program to JIRA issue, so put it below : {code} public class MultiRowRangeFilterTest { byte[] key1Start = new byte[] {-3}; byte[] key1End = new byte[] {-2}; byte[] key2Start = new byte[] {5}; byte[] key2End = new byte[] {6}; byte[] badKey = new byte[] {-10}; @Test public void testRanges() throws IOException { MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList( new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false), new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false) )); filter.filterRowKey(badKey, 0, 1); /* * FAILS -- includes BAD key! * Expected :SEEK_NEXT_USING_HINT * Actual :INCLUDE * */ assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null)); } } {code} It seems to happen on 2.0.0-SNAPSHOT too, but I wasn't able to link one with included class. I have played some time with algorithm, and found that quick fix may be applied to getNextRangeIndex(byte[] rowKey) method (hbase-client:1.1.0) : {code} if (insertionPosition == 0 !rangeList.get(insertionPosition).contains(rowKey)) { return ROW_BEFORE_FIRST_RANGE; } // FIX START if(!this.initialized) { this.initialized = true; } // FIX END return insertionPosition; {code} Thanks, hope it will help. -- This message was sent by Atlassian JIRA (v6.3.4#6332)