Jeremy Schoemaker created HBASE-30403:
-----------------------------------------

             Summary: 
CustomDateTieredCompactionPolicy#getCompactBoundariesForMajor drops the 
cutOffTimestamp boundary when files lack CUSTOM_TIERING_TIME_RANGE
                 Key: HBASE-30403
                 URL: https://issues.apache.org/jira/browse/HBASE-30403
             Project: HBase
          Issue Type: Bug
          Components: Compaction
            Reporter: Jeremy Schoemaker


getCompactBoundariesForMajor derives the major-compaction boundaries from the 
CUSTOM_TIERING_TIME_RANGE file-info tag of every file in filesToCompact. Files 
written before custom tiering was enabled (or by any writer that does not set 
the tag) contribute nothing, so with a mixed or untagged set the min/max 
traversal produces a boundary list that never contains the cutOffTimestamp 
split. The major compaction then writes a single tier instead of separating hot 
and cold cells.

Fix (PR https://github.com/apache/hbase/pull/8573): always return 
[Long.MIN_VALUE, cutOffTimestamp] without traversing filesToCompact. This is 
safe because CustomTieringMultiFileWriter#append already buckets each cell by 
these boundaries and only commits a file for a tier that actually received 
data, so an empty tier never produces an empty HFile. The five tests in 
TestCustomCellTieredCompactionPolicy and TestCustomCellTieredCompactor that 
asserted boundary counts derived from the old tag traversal are updated to the 
new intended behavior in the same PR.

Review thread with wchevreuil on the PR agreed the simplified approach on 
2026-08-26; this ticket is filed at his request so the change can be merged.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to