diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java index d610523..50de0cc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java @@ -402,6 +402,8 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner // Otherwise, we might have to return KVs that have technically expired. long expiredTimestampCutoff = minVersions == 0 ? oldestUnexpiredTS : Long.MIN_VALUE; + + long maxSequenceId = store.getMaxSequenceId(); // include only those scan files which pass all filters for (KeyValueScanner kvs : allScanners) { @@ -410,6 +412,12 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner continue; } + // exclude memstore scanners, + // if all cells that have sequence id greater than or equal to read point in memstore were already flushed. + if (!isFile && readPt <= maxSequenceId) { + continue; + } + if (kvs.shouldUseScanner(scan, columns, expiredTimestampCutoff)) { scanners.add(kvs); }