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 19:56:01 UTC

svn commit: r1587061 - /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java

Author: jxiang
Date: Sun Apr 13 17:56:01 2014
New Revision: 1587061

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

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

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java?rev=1587061&r1=1587060&r2=1587061&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java Sun Apr 13 17:56:01 2014
@@ -37,7 +37,6 @@ import org.apache.hadoop.hbase.KeyValueU
 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
@@ -200,7 +199,7 @@ public class StoreFileScanner implements
       hfs.next();
       cur = hfs.getKeyValue();
       if (this.stopSkippingKVsIfNextRow
-          && Bytes.compareTo(cur.getRowArray(), cur.getRowOffset(),
+          && getComparator().compareRows(cur.getRowArray(), cur.getRowOffset(),
               cur.getRowLength(), startKV.getRowArray(), startKV.getRowOffset(),
               startKV.getRowLength()) > 0) {
         return false;
@@ -363,6 +362,10 @@ public class StoreFileScanner implements
     return reader;
   }
 
+  KeyValue.KVComparator getComparator() {
+    return reader.getComparator();
+  }
+
   @Override
   public boolean realSeekDone() {
     return realSeekDone;
@@ -405,6 +408,7 @@ public class StoreFileScanner implements
   }
 
   @Override
+  @SuppressWarnings("deprecation")
   public boolean seekToPreviousRow(Cell key) throws IOException {
     try {
       try {
@@ -434,7 +438,7 @@ public class StoreFileScanner implements
           this.stopSkippingKVsIfNextRow = false;
         }
         if (!resultOfSkipKVs
-            || KeyValue.COMPARATOR.compareRows(cur, firstKeyOfPreviousRow) > 0) {
+            || getComparator().compareRows(cur, firstKeyOfPreviousRow) > 0) {
           return seekToPreviousRow(firstKeyOfPreviousRow);
         }
 
@@ -466,7 +470,7 @@ public class StoreFileScanner implements
   public boolean backwardSeek(Cell key) throws IOException {
     seek(key);
     if (cur == null
-        || Bytes.compareTo(cur.getRowArray(), cur.getRowOffset(),
+        || getComparator().compareRows(cur.getRowArray(), cur.getRowOffset(),
             cur.getRowLength(), key.getRowArray(), key.getRowOffset(),
             key.getRowLength()) > 0) {
       return seekToPreviousRow(key);