You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2015/08/11 18:40:19 UTC

hbase git commit: HBASE-14206 MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges (Anton Nazaruk)

Repository: hbase
Updated Branches:
  refs/heads/master d49b1f60f -> a2dbe31b2


HBASE-14206 MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges (Anton Nazaruk)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a2dbe31b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a2dbe31b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a2dbe31b

Branch: refs/heads/master
Commit: a2dbe31b269a9813971ffa76af400d303cb85d63
Parents: d49b1f6
Author: tedyu <yu...@gmail.com>
Authored: Tue Aug 11 09:40:13 2015 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Tue Aug 11 09:40:13 2015 -0700

----------------------------------------------------------------------
 .../hbase/filter/MultiRowRangeFilter.java       |  3 +++
 .../hbase/filter/TestMultiRowRangeFilter.java   | 23 ++++++++++++++++++++
 2 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/a2dbe31b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
index e7d8c38..e5ce27c 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java
@@ -237,6 +237,9 @@ public class MultiRowRangeFilter extends FilterBase {
       if (insertionPosition == 0 && !rangeList.get(insertionPosition).contains(rowKey)) {
         return ROW_BEFORE_FIRST_RANGE;
       }
+      if (!initialized) {
+        initialized = true;
+      }
       return insertionPosition;
     }
     // the row key equals one of the start keys, and the the range exclude the start key

http://git-wip-us.apache.org/repos/asf/hbase/blob/a2dbe31b/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
index a8b8b1d..3c5fe27 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java
@@ -72,6 +72,29 @@ public class TestMultiRowRangeFilter {
   }
 
   @Test
+  public void testRanges() throws IOException {
+    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};
+
+    MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList(
+      new MultiRowRangeFilter.RowRange(key1Start, true, key1End, false),
+      new MultiRowRangeFilter.RowRange(key2Start, true, key2End, false)
+        ));
+    filter.filterRowKey(KeyValueUtil.createFirstOnRow(badKey));
+    /*
+     * FAILS -- includes BAD key!
+     * Expected :SEEK_NEXT_USING_HINT
+     * Actual   :INCLUDE
+     * */
+    assertEquals(Filter.ReturnCode.SEEK_NEXT_USING_HINT, filter.filterKeyValue(null));
+  }
+
+  @Test
   public void testOutOfOrderScannerNextException() throws Exception {
     MultiRowRangeFilter filter = new MultiRowRangeFilter(Arrays.asList(
             new MultiRowRangeFilter.RowRange(Bytes.toBytes("b"), true, Bytes.toBytes("c"), true),