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