Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision 1399005) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (working copy) @@ -3519,7 +3519,7 @@ // there're no left overs. // the reasons for calling this method are: // 1. reset the filters. - // 2. provide a hook to fast forward the row (used by subclasses) + // 2. fast forward the row nextRow(currentRow); // This row was totally filtered out, if this is NOT the last row, @@ -3532,17 +3532,21 @@ } } - private boolean filterRow() { - return filter != null - && filter.filterRow(); - } private boolean filterRowKey(byte[] row) { return filter != null && filter.filterRowKey(row, 0, row.length); } protected void nextRow(byte [] currentRow) throws IOException { + + int i = 0; while (Bytes.equals(currentRow, peekRow())) { + if (++i == 100) { + // tried 100 next()s, seek to the right KV + KeyValue kv = KeyValue.createLastOnRow(currentRow); + this.storeHeap.requestSeek(kv, true, true); + continue; + } this.storeHeap.next(MOCKED_LIST); } results.clear();