HBASE-18749 Apply the CF specific TimeRange from Scan to filter the segment scanner
This commit is contained in:
parent
f36fb11eaf
commit
2f14a054f8
|
@ -18,12 +18,12 @@
|
|||
*/
|
||||
package org.apache.hadoop.hbase.regionserver;
|
||||
|
||||
import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.hadoop.hbase.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.hbase.Cell;
|
||||
import org.apache.hadoop.hbase.CellComparator;
|
||||
import org.apache.hadoop.hbase.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.hbase.client.Scan;
|
||||
import org.apache.hadoop.hbase.io.TimeRange;
|
||||
import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
@ -122,7 +122,7 @@ public class CompositeImmutableSegment extends ImmutableSegment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSeek(Scan scan, long oldestUnexpiredTS){
|
||||
public boolean shouldSeek(TimeRange tr, long oldestUnexpiredTS){
|
||||
throw new IllegalStateException("Not supported by CompositeImmutableScanner");
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ package org.apache.hadoop.hbase.regionserver;
|
|||
import org.apache.hadoop.hbase.CellComparator;
|
||||
import org.apache.hadoop.hbase.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.hbase.util.ClassSize;
|
||||
import org.apache.hadoop.hbase.client.Scan;
|
||||
import org.apache.hadoop.hbase.io.TimeRange;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -79,8 +78,8 @@ public abstract class ImmutableSegment extends Segment {
|
|||
|
||||
///////////////////// PUBLIC METHODS /////////////////////
|
||||
@Override
|
||||
public boolean shouldSeek(Scan scan, long oldestUnexpiredTS) {
|
||||
return this.timeRange.includesTimeRange(scan.getTimeRange()) &&
|
||||
public boolean shouldSeek(TimeRange tr, long oldestUnexpiredTS) {
|
||||
return this.timeRange.includesTimeRange(tr) &&
|
||||
this.timeRange.getMax() >= oldestUnexpiredTS;
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ import org.apache.hadoop.hbase.CellUtil;
|
|||
import org.apache.hadoop.hbase.HConstants;
|
||||
import org.apache.hadoop.hbase.KeyValue;
|
||||
import org.apache.hadoop.hbase.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.hbase.client.Scan;
|
||||
import org.apache.hadoop.hbase.io.TimeRange;
|
||||
import org.apache.hadoop.hbase.util.ClassSize;
|
||||
|
||||
import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;
|
||||
|
@ -113,8 +113,8 @@ public class MutableSegment extends Segment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSeek(Scan scan, long oldestUnexpiredTS) {
|
||||
return (this.timeRangeTracker.includesTimeRange(scan.getTimeRange())
|
||||
public boolean shouldSeek(TimeRange tr, long oldestUnexpiredTS) {
|
||||
return (this.timeRangeTracker.includesTimeRange(tr)
|
||||
&& (this.timeRangeTracker.getMax() >= oldestUnexpiredTS));
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ import org.apache.hadoop.hbase.CellUtil;
|
|||
import org.apache.hadoop.hbase.KeyValue;
|
||||
import org.apache.hadoop.hbase.KeyValueUtil;
|
||||
import org.apache.hadoop.hbase.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.hbase.client.Scan;
|
||||
import org.apache.hadoop.hbase.io.TimeRange;
|
||||
import org.apache.hadoop.hbase.util.Bytes;
|
||||
import org.apache.hadoop.hbase.util.ClassSize;
|
||||
|
||||
|
@ -177,7 +177,7 @@ public abstract class Segment {
|
|||
return KeyValueUtil.length(cell);
|
||||
}
|
||||
|
||||
public abstract boolean shouldSeek(Scan scan, long oldestUnexpiredTS);
|
||||
public abstract boolean shouldSeek(TimeRange tr, long oldestUnexpiredTS);
|
||||
|
||||
public abstract long getMinTimestamp();
|
||||
|
||||
|
|
|
@ -280,7 +280,8 @@ public class SegmentScanner implements KeyValueScanner {
|
|||
*/
|
||||
@Override
|
||||
public boolean shouldUseScanner(Scan scan, Store store, long oldestUnexpiredTS) {
|
||||
return getSegment().shouldSeek(scan,oldestUnexpiredTS);
|
||||
return getSegment().shouldSeek(scan.getColumnFamilyTimeRange()
|
||||
.getOrDefault(store.getColumnFamilyDescriptor().getName(), scan.getTimeRange()), oldestUnexpiredTS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue