[jira] [Updated] (HBASE-14206) MultiRowRangeFilter returns records whose rowKeys are out of allowed ranges

2015-08-11 Thread Anton Nazaruk (JIRA)

 [ 
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

2015-08-11 Thread Anton Nazaruk (JIRA)

 [ 
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

2015-08-11 Thread Anton Nazaruk (JIRA)

 [ 
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

2015-08-11 Thread Anton Nazaruk (JIRA)
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

2015-08-11 Thread Anton Nazaruk (JIRA)

[ 
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

2015-08-11 Thread Anton Nazaruk (JIRA)

[ 
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

2015-08-11 Thread Anton Nazaruk (JIRA)

[ 
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

2015-08-11 Thread Anton Nazaruk (JIRA)

[ 
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)