Junegunn Choi created HBASE-29896:
-------------------------------------
Summary: Raw scan incorrectly skips cells expired by cell-level TTL
Key: HBASE-29896
URL: https://issues.apache.org/jira/browse/HBASE-29896
Project: HBase
Issue Type: Bug
Reporter: Junegunn Choi
h2. Problem
Raw scan does not include cells expired by its cell TTL.
{code}
# Cell expired by CF TTL
create 't', { NAME => 'd', TTL => 1 }
put 't', 'row', 'd:foo', 'bar'
scan 't'
# Not visible, as expected
scan 't', RAW => true
# Expired row is visible
# Cell expired by cell TTL
create 't2', 'd'
put 't2', 'row', 'd:foo', 'bar', TTL => 1
scan 't2'
# Not visible, as expected
scan 't2', RAW => true
# Expired row is not visible !!!
{code}
h2. Why do we care?
We ran into a timeout while running the RegionMover.
https://github.com/apache/hbase/blob/470fe193938f8daaed8183ab8175cc7351f2ef36/hbase-server/src/main/java/org/apache/hadoop/hbase/util/MoveWithAck.java#L113-L115
- We had many expired cells with cell-level TTL.
- The raw scanner used in {{MoveWithAck}} failed to return a row within the
timeout because of the current behavior.
h2. Fix
In {{RawScanQueryMatcher.match()}}, exclude {{MatchCode.SKIP}} from the
early-return check.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)