You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/11 04:01:32 UTC

svn commit: r1181356 - in /hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter: BinaryPrefixComparator.java ColumnPrefixFilter.java

Author: nspiegelberg
Date: Tue Oct 11 02:01:31 2011
New Revision: 1181356

URL: http://svn.apache.org/viewvc?rev=1181356&view=rev
Log:
HBASE 2928: Fault in logic in BinaryPrefixComparator leads to ArrayIndexOutOfBoundsException

Summary:
Following statement makes an incorrect assumption that value.length >=
this.value.length.

return Bytes.compareTo(this.value, 0, this.value.length, value, 0,
this.value.length);

(Also, removed a couple of unused imports)

Change is committed to public trunk

Test Plan:
All tests related to PrefixFilter are passing

DiffCamp Revision: 147534
Reviewed By: jgray
CC: jgray, hbase@lists
Tasks:
#318619: Resolving exceptions in BinaryPrefixFilter

Revert Plan:
OK

Modified:
    hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java
    hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java

Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java?rev=1181356&r1=1181355&r2=1181356&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java Tue Oct 11 02:01:31 2011
@@ -42,8 +42,12 @@ public class BinaryPrefixComparator exte
 
   @Override
   public int compareTo(byte [] value) {
-    return Bytes.compareTo(this.value, 0, this.value.length, value, 0,
-      this.value.length);
+    if (this.value.length <= value.length) {
+      return Bytes.compareTo(this.value, 0, this.value.length, value, 0,
+          this.value.length);
+    } else {
+      return Bytes.compareTo(this.value, value);
+    }
   }
 
 }

Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java?rev=1181356&r1=1181355&r2=1181356&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java Tue Oct 11 02:01:31 2011
@@ -20,9 +20,7 @@
 
 package org.apache.hadoop.hbase.filter;
 
-import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.KeyValue.Type;
 import org.apache.hadoop.hbase.util.Bytes;
 
 import java.io.DataOutput;