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)