This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-3 by this push:
new 47798dd449d HBASE-29907 ROWCOL bloom filter +
StoreScanner.trySkipToNextColumn can surface out-of-order cells, causing read
failure “isDelete failed” (#7764)
47798dd449d is described below
commit 47798dd449d286ad3b626a0b12ef82ee5d995b55
Author: ningjize <[email protected]>
AuthorDate: Wed Feb 25 09:39:02 2026 -0500
HBASE-29907 ROWCOL bloom filter + StoreScanner.trySkipToNextColumn can
surface out-of-order cells, causing read failure “isDelete failed” (#7764)
Signed-off-by: Duo Zhang <[email protected]>
(cherry picked from commit 01f93dbf6add6223851a0482842f4253e53b966f)
---
.../java/org/apache/hadoop/hbase/regionserver/StoreScanner.java | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
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 76f3e15c90c..634b6fffcf5 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
@@ -964,10 +964,8 @@ public class StoreScanner extends
NonReversedNonLazyKeyValueScanner
} while ((nextCell = this.heap.peek()) != null &&
CellUtil.matchingRowColumn(cell, nextCell));
// We need this check because it may happen that the new scanner that we
get
// during heap.next() is requiring reseek due of fake KV previously
generated for
- // ROWCOL bloom filter optimization. See HBASE-19863 for more details
- if (
- useRowColBloom && nextCell != null && cell.getTimestamp() ==
PrivateConstants.OLDEST_TIMESTAMP
- ) {
+ // ROWCOL bloom filter optimization. See HBASE-19863 and HBASE-29907 for
more details
+ if (useRowColBloom && nextCell != null &&
matcher.compareKeyForNextColumn(nextCell, cell) < 0) {
return false;
}
return true;