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