You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jx...@apache.org on 2014/04/13 20:35:08 UTC

svn commit: r1587070 - /hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java

Author: jxiang
Date: Sun Apr 13 18:35:07 2014
New Revision: 1587070

URL: http://svn.apache.org/r1587070
Log:
HBASE-10949 Reversed scan could hang

Modified:
    hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java

Modified: hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java?rev=1587070&r1=1587069&r2=1587070&view=diff
==============================================================================
--- hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java (original)
+++ hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java Sun Apr 13 18:35:07 2014
@@ -34,7 +34,6 @@ import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.io.hfile.HFileScanner;
 import org.apache.hadoop.hbase.regionserver.StoreFile.Reader;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * KeyValueScanner adaptor over the Reader.  It also provides hooks into
@@ -197,7 +196,7 @@ public class StoreFileScanner implements
       hfs.next();
       cur = hfs.getKeyValue();
       if (this.stopSkippingKVsIfNextRow
-          && Bytes.compareTo(cur.getBuffer(), cur.getRowOffset(),
+          && getComparator().compareRows(cur.getBuffer(), cur.getRowOffset(),
               cur.getRowLength(), startKV.getBuffer(), startKV.getRowOffset(),
               startKV.getRowLength()) > 0) {
         return false;
@@ -360,6 +359,10 @@ public class StoreFileScanner implements
     return reader;
   }
 
+  KeyValue.KVComparator getComparator() {
+    return reader.getComparator();
+  }
+
   @Override
   public boolean realSeekDone() {
     return realSeekDone;
@@ -430,7 +433,7 @@ public class StoreFileScanner implements
           this.stopSkippingKVsIfNextRow = false;
         }
         if (!resultOfSkipKVs
-            || Bytes.compareTo(cur.getBuffer(), cur.getRowOffset(),
+            || getComparator().compareRows(cur.getBuffer(), cur.getRowOffset(),
                 cur.getRowLength(), firstKeyOfPreviousRow.getBuffer(),
                 firstKeyOfPreviousRow.getRowOffset(),
                 firstKeyOfPreviousRow.getRowLength()) > 0) {
@@ -465,7 +468,7 @@ public class StoreFileScanner implements
   public boolean backwardSeek(KeyValue key) throws IOException {
     seek(key);
     if (cur == null
-        || Bytes.compareTo(cur.getBuffer(), cur.getRowOffset(),
+        || getComparator().compareRows(cur.getBuffer(), cur.getRowOffset(),
             cur.getRowLength(), key.getBuffer(), key.getRowOffset(),
             key.getRowLength()) > 0) {
       return seekToPreviousRow(key);