You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2026/09/19 00:03:42 UTC
(hbase-site) branch asf-site updated: Published site at 1790942bb2d46f41f1b4aed94db85e6f5bd18a1a.
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new de66251f0c5 Published site at 1790942bb2d46f41f1b4aed94db85e6f5bd18a1a.
de66251f0c5 is described below
commit de66251f0c54279b5a2551be8c89e6dfbc1b82e1
Author: HBase <de...@hbase.apache.org>
AuthorDate: Fri Sep 18 23:59:19 2026 +0000
Published site at 1790942bb2d46f41f1b4aed94db85e6f5bd18a1a.
---
books/apache-hbase-reference-guide-dark-mode.pdf | Bin 38775817 -> 38775817 bytes
books/apache-hbase-reference-guide.pdf | Bin 38665189 -> 38665189 bytes
checkstyle-aggregate.html | 6 +-
dependency-convergence.html | 2 +-
dependency-info.html | 2 +-
dependency-management.html | 2 +-
.../CustomDateTieredCompactionPolicy.html | 18 +-
.../CustomDateTieredCompactionPolicy.html | 247 +++++------
hbase-website/dependency-convergence.html | 2 +-
hbase-website/dependency-info.html | 2 +-
hbase-website/dependency-management.html | 2 +-
hbase-website/index.html | 2 +-
hbase-website/issue-management.html | 2 +-
hbase-website/licenses.html | 2 +-
hbase-website/mailing-lists.html | 2 +-
hbase-website/plugin-management.html | 2 +-
hbase-website/plugins.html | 2 +-
hbase-website/project-info.html | 2 +-
hbase-website/scm.html | 2 +-
hbase-website/summary.html | 2 +-
hbase-website/team.html | 2 +-
issue-management.html | 2 +-
licenses.html | 2 +-
mailing-lists.html | 2 +-
plugin-management.html | 2 +-
plugins.html | 2 +-
project-info.html | 2 +-
project-reports.html | 2 +-
scm.html | 2 +-
summary.html | 2 +-
team.html | 2 +-
.../TestCustomCellTieredCompactionPolicy.html | 302 +++++++-------
...CellTieredCompactionPolicy.PolicyValidator.html | 4 +-
.../TestCustomCellTieredCompactionPolicy.html | 26 +-
.../compactions/TestCustomCellTieredCompactor.html | 4 +-
...CellTieredCompactionPolicy.PolicyValidator.html | 302 +++++++-------
.../TestCustomCellTieredCompactionPolicy.html | 302 +++++++-------
.../compactions/TestCustomCellTieredCompactor.html | 461 ++++++++++-----------
38 files changed, 850 insertions(+), 874 deletions(-)
diff --git a/books/apache-hbase-reference-guide-dark-mode.pdf b/books/apache-hbase-reference-guide-dark-mode.pdf
index c6ae6d52d84..27cad9ec4e7 100644
Binary files a/books/apache-hbase-reference-guide-dark-mode.pdf and b/books/apache-hbase-reference-guide-dark-mode.pdf differ
diff --git a/books/apache-hbase-reference-guide.pdf b/books/apache-hbase-reference-guide.pdf
index 04340e47f8d..8fe1c005537 100644
Binary files a/books/apache-hbase-reference-guide.pdf and b/books/apache-hbase-reference-guide.pdf differ
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 0f595d579f6..3d9c8f35fa4 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -15792,8 +15792,8 @@
<td><img src="images/icon_error_sml.gif" /> Error</td>
<td>sizes</td>
<td>MethodLength</td>
-<td>Method testCustomCellTieredCompactorWithRowKeyDateTieringValue length is 169 lines (max allowed is 150).</td>
-<td>155</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2Fhandler.2FOpenRegionHandler.java"></a>
+<td>Method testCustomCellTieredCompactorWithRowKeyDateTieringValue length is 167 lines (max allowed is 150).</td>
+<td>152</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2Fhandler.2FOpenRegionHandler.java"></a>
<h3>org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java</h3>
<table class="table table-striped">
<tr class="a">
diff --git a/dependency-convergence.html b/dependency-convergence.html
index c9fca009a5f..fa1d93ea9fb 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-info.html b/dependency-info.html
index d090124ef6c..7bfd690cc9a 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-management.html b/dependency-management.html
index ef41aeb3878..488c9801582 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html
index 52c4a3e32d5..8ea621e007f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html
@@ -84,7 +84,7 @@ loadScripts(document, 'script');</script>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="annotations">@Private
-</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-46">CustomDateTieredCompactionPolicy</a></span>
+</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-45">CustomDateTieredCompactionPolicy</a></span>
<span class="extends-implements">extends <a href="DateTieredCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">DateTieredCompactionPolicy</a></span></div>
<div class="block">Custom implementation of DateTieredCompactionPolicy that calculates compaction boundaries based
on the <b>hbase.hstore.compaction.date.tiered.custom.age.limit.millis</b> configuration property
@@ -195,7 +195,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="AGE_LIMIT_MILLIS">
<h3>AGE_LIMIT_MILLIS</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-49">AGE_LIMIT_MILLIS</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-48">AGE_LIMIT_MILLIS</a></span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
@@ -209,7 +209,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="DEFAULT_AGE_LIMIT_MILLIS">
<h3>DEFAULT_AGE_LIMIT_MILLIS</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-53">DEFAULT_AGE_LIMIT_MILLIS</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-52">DEFAULT_AGE_LIMIT_MILLIS</a></span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
@@ -223,13 +223,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-56">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-55">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="cutOffTimestamp">
<h3>cutOffTimestamp</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-58">cutOffTimestamp</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-57">cutOffTimestamp</a></span></div>
</section>
</li>
</ul>
@@ -243,7 +243,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.regionserver.StoreConfigInformation)">
<h3>CustomDateTieredCompactionPolicy</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-60">CustomDateTieredCompactionPolicy</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration conf,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-59">CustomDateTieredCompactionPolicy</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration conf,
<a href="../StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a> storeConfigInfo)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -263,7 +263,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getCompactBoundariesForMajor(java.util.Collection,long)">
<h3>getCompactBoundariesForMajor</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>></span> <span class="element-name"><a href="../../../.. [...]
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>></span> <span class="element-name"><a href="../../../.. [...]
long now)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="DateTieredCompactionPolicy.html#getCompactBoundariesForMajor(java.util.Collection,long)">DateTieredCompactionPolicy</a></code></span></div>
<div class="block">Return a list of boundaries for multiple compaction output in ascending order.</div>
@@ -276,7 +276,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="selectMinorCompaction(java.util.ArrayList,boolean,boolean)">
<h3>selectMinorCompaction</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-106">selectMinorCompaction</a></span><wbr><span class="parameters">(<a href="https://docs.oracle. [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-81">selectMinorCompaction</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.c [...]
boolean mayUseOffPeak,
boolean mayBeStuck)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -298,7 +298,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="shouldPerformMajorCompaction(java.util.Collection)">
<h3>shouldPerformMajorCompaction</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-114">shouldPerformMajorCompaction</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class= [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html#line-89">shouldPerformMajorCompaction</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class=" [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Overrides:</dt>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html
index e6c7c0cabcc..cc4743209b0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CustomDateTieredCompactionPolicy.html
@@ -36,142 +36,117 @@
<span class="source-line-no">023</span><span id="line-23">import java.util.ArrayList;</span>
<span class="source-line-no">024</span><span id="line-24">import java.util.Collection;</span>
<span class="source-line-no">025</span><span id="line-25">import java.util.List;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.commons.lang3.mutable.MutableLong;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HDFSBlocksDistribution;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.regionserver.HStoreFile;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.regionserver.StoreConfigInformation;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.regionserver.StoreUtils;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.slf4j.Logger;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">037</span><span id="line-37"></span>
-<span class="source-line-no">038</span><span id="line-38">/**</span>
-<span class="source-line-no">039</span><span id="line-39"> * Custom implementation of DateTieredCompactionPolicy that calculates compaction boundaries based</span>
-<span class="source-line-no">040</span><span id="line-40"> * on the <b>hbase.hstore.compaction.date.tiered.custom.age.limit.millis</b> configuration property</span>
-<span class="source-line-no">041</span><span id="line-41"> * and the TIERING_CELL_MIN/TIERING_CELL_MAX stored on metadata of each store file. This policy</span>
-<span class="source-line-no">042</span><span id="line-42"> * would produce either one or two tiers: - One tier if either all files data age are older than the</span>
-<span class="source-line-no">043</span><span id="line-43"> * configured age limit or all files data age are younger than the configured age limit. - Two tiers</span>
-<span class="source-line-no">044</span><span id="line-44"> * if files have both younger and older data than the configured age limit.</span>
-<span class="source-line-no">045</span><span id="line-45"> */</span>
-<span class="source-line-no">046</span><span id="line-46">@InterfaceAudience.Private</span>
-<span class="source-line-no">047</span><span id="line-47">public class CustomDateTieredCompactionPolicy extends DateTieredCompactionPolicy {</span>
-<span class="source-line-no">048</span><span id="line-48"></span>
-<span class="source-line-no">049</span><span id="line-49"> public static final String AGE_LIMIT_MILLIS =</span>
-<span class="source-line-no">050</span><span id="line-50"> "hbase.hstore.compaction.date.tiered.custom.age.limit.millis";</span>
-<span class="source-line-no">051</span><span id="line-51"></span>
-<span class="source-line-no">052</span><span id="line-52"> // Defaults to 10 years</span>
-<span class="source-line-no">053</span><span id="line-53"> public static final long DEFAULT_AGE_LIMIT_MILLIS =</span>
-<span class="source-line-no">054</span><span id="line-54"> (long) (10L * 365.25 * 24L * 60L * 60L * 1000L);</span>
-<span class="source-line-no">055</span><span id="line-55"></span>
-<span class="source-line-no">056</span><span id="line-56"> private static final Logger LOG = LoggerFactory.getLogger(CustomDateTieredCompactionPolicy.class);</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58"> private long cutOffTimestamp;</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60"> public CustomDateTieredCompactionPolicy(Configuration conf,</span>
-<span class="source-line-no">061</span><span id="line-61"> StoreConfigInformation storeConfigInfo) throws IOException {</span>
-<span class="source-line-no">062</span><span id="line-62"> super(conf, storeConfigInfo);</span>
-<span class="source-line-no">063</span><span id="line-63"> cutOffTimestamp = EnvironmentEdgeManager.currentTime()</span>
-<span class="source-line-no">064</span><span id="line-64"> - conf.getLong(AGE_LIMIT_MILLIS, DEFAULT_AGE_LIMIT_MILLIS);</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66"> }</span>
-<span class="source-line-no">067</span><span id="line-67"></span>
-<span class="source-line-no">068</span><span id="line-68"> @Override</span>
-<span class="source-line-no">069</span><span id="line-69"> protected List<Long> getCompactBoundariesForMajor(Collection<HStoreFile> filesToCompact,</span>
-<span class="source-line-no">070</span><span id="line-70"> long now) {</span>
-<span class="source-line-no">071</span><span id="line-71"> MutableLong min = new MutableLong(Long.MAX_VALUE);</span>
-<span class="source-line-no">072</span><span id="line-72"> MutableLong max = new MutableLong(0);</span>
-<span class="source-line-no">073</span><span id="line-73"> filesToCompact.forEach(f -> {</span>
-<span class="source-line-no">074</span><span id="line-74"> byte[] timeRangeBytes = f.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">075</span><span id="line-75"> long minCurrent = Long.MAX_VALUE;</span>
-<span class="source-line-no">076</span><span id="line-76"> long maxCurrent = 0;</span>
-<span class="source-line-no">077</span><span id="line-77"> if (timeRangeBytes != null) {</span>
-<span class="source-line-no">078</span><span id="line-78"> try {</span>
-<span class="source-line-no">079</span><span id="line-79"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(timeRangeBytes);</span>
-<span class="source-line-no">080</span><span id="line-80"> timeRangeTracker.getMin();</span>
-<span class="source-line-no">081</span><span id="line-81"> minCurrent = timeRangeTracker.getMin();</span>
-<span class="source-line-no">082</span><span id="line-82"> maxCurrent = timeRangeTracker.getMax();</span>
-<span class="source-line-no">083</span><span id="line-83"> } catch (IOException e) {</span>
-<span class="source-line-no">084</span><span id="line-84"> LOG.warn("Got TIERING_CELL_TIME_RANGE info from file, but failed to parse it:", e);</span>
-<span class="source-line-no">085</span><span id="line-85"> }</span>
-<span class="source-line-no">086</span><span id="line-86"> }</span>
-<span class="source-line-no">087</span><span id="line-87"> if (minCurrent < min.getValue()) {</span>
-<span class="source-line-no">088</span><span id="line-88"> min.setValue(minCurrent);</span>
-<span class="source-line-no">089</span><span id="line-89"> }</span>
-<span class="source-line-no">090</span><span id="line-90"> if (maxCurrent > max.getValue()) {</span>
-<span class="source-line-no">091</span><span id="line-91"> max.setValue(maxCurrent);</span>
-<span class="source-line-no">092</span><span id="line-92"> }</span>
-<span class="source-line-no">093</span><span id="line-93"> });</span>
-<span class="source-line-no">094</span><span id="line-94"></span>
-<span class="source-line-no">095</span><span id="line-95"> List<Long> boundaries = new ArrayList<>();</span>
-<span class="source-line-no">096</span><span id="line-96"> boundaries.add(Long.MIN_VALUE);</span>
-<span class="source-line-no">097</span><span id="line-97"> if (min.getValue() < cutOffTimestamp) {</span>
-<span class="source-line-no">098</span><span id="line-98"> boundaries.add(min.getValue());</span>
-<span class="source-line-no">099</span><span id="line-99"> if (max.getValue() > cutOffTimestamp) {</span>
-<span class="source-line-no">100</span><span id="line-100"> boundaries.add(cutOffTimestamp);</span>
-<span class="source-line-no">101</span><span id="line-101"> }</span>
-<span class="source-line-no">102</span><span id="line-102"> }</span>
-<span class="source-line-no">103</span><span id="line-103"> return boundaries;</span>
-<span class="source-line-no">104</span><span id="line-104"> }</span>
-<span class="source-line-no">105</span><span id="line-105"></span>
-<span class="source-line-no">106</span><span id="line-106"> @Override</span>
-<span class="source-line-no">107</span><span id="line-107"> public CompactionRequestImpl selectMinorCompaction(ArrayList<HStoreFile> candidateSelection,</span>
-<span class="source-line-no">108</span><span id="line-108"> boolean mayUseOffPeak, boolean mayBeStuck) throws IOException {</span>
-<span class="source-line-no">109</span><span id="line-109"> ArrayList<HStoreFile> filteredByPolicy = this.compactionPolicyPerWindow</span>
-<span class="source-line-no">110</span><span id="line-110"> .applyCompactionPolicy(candidateSelection, mayUseOffPeak, mayBeStuck);</span>
-<span class="source-line-no">111</span><span id="line-111"> return selectMajorCompaction(filteredByPolicy);</span>
-<span class="source-line-no">112</span><span id="line-112"> }</span>
-<span class="source-line-no">113</span><span id="line-113"></span>
-<span class="source-line-no">114</span><span id="line-114"> @Override</span>
-<span class="source-line-no">115</span><span id="line-115"> public boolean shouldPerformMajorCompaction(Collection<HStoreFile> filesToCompact)</span>
-<span class="source-line-no">116</span><span id="line-116"> throws IOException {</span>
-<span class="source-line-no">117</span><span id="line-117"> long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact);</span>
-<span class="source-line-no">118</span><span id="line-118"> long now = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">119</span><span id="line-119"> if (isMajorCompactionTime(filesToCompact, now, lowTimestamp)) {</span>
-<span class="source-line-no">120</span><span id="line-120"> long cfTTL = this.storeConfigInfo.getStoreFileTtl();</span>
-<span class="source-line-no">121</span><span id="line-121"> int countLower = 0;</span>
-<span class="source-line-no">122</span><span id="line-122"> int countHigher = 0;</span>
-<span class="source-line-no">123</span><span id="line-123"> HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();</span>
-<span class="source-line-no">124</span><span id="line-124"> for (HStoreFile f : filesToCompact) {</span>
-<span class="source-line-no">125</span><span id="line-125"> if (checkForTtl(cfTTL, f)) {</span>
-<span class="source-line-no">126</span><span id="line-126"> return true;</span>
-<span class="source-line-no">127</span><span id="line-127"> }</span>
-<span class="source-line-no">128</span><span id="line-128"> if (isMajorOrBulkloadResult(f, now - lowTimestamp)) {</span>
-<span class="source-line-no">129</span><span id="line-129"> return true;</span>
-<span class="source-line-no">130</span><span id="line-130"> }</span>
-<span class="source-line-no">131</span><span id="line-131"> byte[] timeRangeBytes = f.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">132</span><span id="line-132"> // this means this file has not been major compacted by manually triggered compaction at</span>
-<span class="source-line-no">133</span><span id="line-133"> // the time of enabling Custom Time Based Priority, so it needs compaction to have its rows</span>
-<span class="source-line-no">134</span><span id="line-134"> // separated according to the cutOffTimestamp.</span>
-<span class="source-line-no">135</span><span id="line-135"> if (timeRangeBytes == null) {</span>
-<span class="source-line-no">136</span><span id="line-136"> return true;</span>
-<span class="source-line-no">137</span><span id="line-137"> }</span>
-<span class="source-line-no">138</span><span id="line-138"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(timeRangeBytes);</span>
-<span class="source-line-no">139</span><span id="line-139"> if (timeRangeTracker.getMin() < cutOffTimestamp) {</span>
-<span class="source-line-no">140</span><span id="line-140"> if (timeRangeTracker.getMax() > cutOffTimestamp) {</span>
-<span class="source-line-no">141</span><span id="line-141"> // Found at least one file crossing the cutOffTimestamp</span>
-<span class="source-line-no">142</span><span id="line-142"> return true;</span>
-<span class="source-line-no">143</span><span id="line-143"> } else {</span>
-<span class="source-line-no">144</span><span id="line-144"> countLower++;</span>
-<span class="source-line-no">145</span><span id="line-145"> }</span>
-<span class="source-line-no">146</span><span id="line-146"> } else {</span>
-<span class="source-line-no">147</span><span id="line-147"> countHigher++;</span>
-<span class="source-line-no">148</span><span id="line-148"> }</span>
-<span class="source-line-no">149</span><span id="line-149"> hdfsBlocksDistribution.add(f.getHDFSBlockDistribution());</span>
-<span class="source-line-no">150</span><span id="line-150"> }</span>
-<span class="source-line-no">151</span><span id="line-151"> // If we haven't found any files crossing the cutOffTimestamp, we have to check</span>
-<span class="source-line-no">152</span><span id="line-152"> // if there are at least more than one file on each tier and if so, perform compaction</span>
-<span class="source-line-no">153</span><span id="line-153"> if (countLower > 1 || countHigher > 1) {</span>
-<span class="source-line-no">154</span><span id="line-154"> return true;</span>
-<span class="source-line-no">155</span><span id="line-155"> }</span>
-<span class="source-line-no">156</span><span id="line-156"> return checkBlockLocality(hdfsBlocksDistribution);</span>
-<span class="source-line-no">157</span><span id="line-157"> }</span>
-<span class="source-line-no">158</span><span id="line-158"> return false;</span>
-<span class="source-line-no">159</span><span id="line-159"> }</span>
-<span class="source-line-no">160</span><span id="line-160"></span>
-<span class="source-line-no">161</span><span id="line-161">}</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HDFSBlocksDistribution;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.regionserver.HStoreFile;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.regionserver.StoreConfigInformation;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.regionserver.StoreUtils;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.slf4j.Logger;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">036</span><span id="line-36"></span>
+<span class="source-line-no">037</span><span id="line-37">/**</span>
+<span class="source-line-no">038</span><span id="line-38"> * Custom implementation of DateTieredCompactionPolicy that calculates compaction boundaries based</span>
+<span class="source-line-no">039</span><span id="line-39"> * on the <b>hbase.hstore.compaction.date.tiered.custom.age.limit.millis</b> configuration property</span>
+<span class="source-line-no">040</span><span id="line-40"> * and the TIERING_CELL_MIN/TIERING_CELL_MAX stored on metadata of each store file. This policy</span>
+<span class="source-line-no">041</span><span id="line-41"> * would produce either one or two tiers: - One tier if either all files data age are older than the</span>
+<span class="source-line-no">042</span><span id="line-42"> * configured age limit or all files data age are younger than the configured age limit. - Two tiers</span>
+<span class="source-line-no">043</span><span id="line-43"> * if files have both younger and older data than the configured age limit.</span>
+<span class="source-line-no">044</span><span id="line-44"> */</span>
+<span class="source-line-no">045</span><span id="line-45">@InterfaceAudience.Private</span>
+<span class="source-line-no">046</span><span id="line-46">public class CustomDateTieredCompactionPolicy extends DateTieredCompactionPolicy {</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48"> public static final String AGE_LIMIT_MILLIS =</span>
+<span class="source-line-no">049</span><span id="line-49"> "hbase.hstore.compaction.date.tiered.custom.age.limit.millis";</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51"> // Defaults to 10 years</span>
+<span class="source-line-no">052</span><span id="line-52"> public static final long DEFAULT_AGE_LIMIT_MILLIS =</span>
+<span class="source-line-no">053</span><span id="line-53"> (long) (10L * 365.25 * 24L * 60L * 60L * 1000L);</span>
+<span class="source-line-no">054</span><span id="line-54"></span>
+<span class="source-line-no">055</span><span id="line-55"> private static final Logger LOG = LoggerFactory.getLogger(CustomDateTieredCompactionPolicy.class);</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57"> private long cutOffTimestamp;</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59"> public CustomDateTieredCompactionPolicy(Configuration conf,</span>
+<span class="source-line-no">060</span><span id="line-60"> StoreConfigInformation storeConfigInfo) throws IOException {</span>
+<span class="source-line-no">061</span><span id="line-61"> super(conf, storeConfigInfo);</span>
+<span class="source-line-no">062</span><span id="line-62"> cutOffTimestamp = EnvironmentEdgeManager.currentTime()</span>
+<span class="source-line-no">063</span><span id="line-63"> - conf.getLong(AGE_LIMIT_MILLIS, DEFAULT_AGE_LIMIT_MILLIS);</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65"> }</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67"> @Override</span>
+<span class="source-line-no">068</span><span id="line-68"> protected List<Long> getCompactBoundariesForMajor(Collection<HStoreFile> filesToCompact,</span>
+<span class="source-line-no">069</span><span id="line-69"> long now) {</span>
+<span class="source-line-no">070</span><span id="line-70"> // CustomTieringMultiFileWriter#append buckets each cell into its tier by comparing against</span>
+<span class="source-line-no">071</span><span id="line-71"> // these boundaries directly, and only commits a file for a tier that actually received data.</span>
+<span class="source-line-no">072</span><span id="line-72"> // There is no need to traverse filesToCompact to inspect CUSTOM_TIERING_TIME_RANGE here:</span>
+<span class="source-line-no">073</span><span id="line-73"> // always offering the cutOffTimestamp boundary is sufficient and avoids missing it when a</span>
+<span class="source-line-no">074</span><span id="line-74"> // file lacks that metadata.</span>
+<span class="source-line-no">075</span><span id="line-75"> List<Long> boundaries = new ArrayList<>();</span>
+<span class="source-line-no">076</span><span id="line-76"> boundaries.add(Long.MIN_VALUE);</span>
+<span class="source-line-no">077</span><span id="line-77"> boundaries.add(cutOffTimestamp);</span>
+<span class="source-line-no">078</span><span id="line-78"> return boundaries;</span>
+<span class="source-line-no">079</span><span id="line-79"> }</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81"> @Override</span>
+<span class="source-line-no">082</span><span id="line-82"> public CompactionRequestImpl selectMinorCompaction(ArrayList<HStoreFile> candidateSelection,</span>
+<span class="source-line-no">083</span><span id="line-83"> boolean mayUseOffPeak, boolean mayBeStuck) throws IOException {</span>
+<span class="source-line-no">084</span><span id="line-84"> ArrayList<HStoreFile> filteredByPolicy = this.compactionPolicyPerWindow</span>
+<span class="source-line-no">085</span><span id="line-85"> .applyCompactionPolicy(candidateSelection, mayUseOffPeak, mayBeStuck);</span>
+<span class="source-line-no">086</span><span id="line-86"> return selectMajorCompaction(filteredByPolicy);</span>
+<span class="source-line-no">087</span><span id="line-87"> }</span>
+<span class="source-line-no">088</span><span id="line-88"></span>
+<span class="source-line-no">089</span><span id="line-89"> @Override</span>
+<span class="source-line-no">090</span><span id="line-90"> public boolean shouldPerformMajorCompaction(Collection<HStoreFile> filesToCompact)</span>
+<span class="source-line-no">091</span><span id="line-91"> throws IOException {</span>
+<span class="source-line-no">092</span><span id="line-92"> long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact);</span>
+<span class="source-line-no">093</span><span id="line-93"> long now = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">094</span><span id="line-94"> if (isMajorCompactionTime(filesToCompact, now, lowTimestamp)) {</span>
+<span class="source-line-no">095</span><span id="line-95"> long cfTTL = this.storeConfigInfo.getStoreFileTtl();</span>
+<span class="source-line-no">096</span><span id="line-96"> int countLower = 0;</span>
+<span class="source-line-no">097</span><span id="line-97"> int countHigher = 0;</span>
+<span class="source-line-no">098</span><span id="line-98"> HDFSBlocksDistribution hdfsBlocksDistribution = new HDFSBlocksDistribution();</span>
+<span class="source-line-no">099</span><span id="line-99"> for (HStoreFile f : filesToCompact) {</span>
+<span class="source-line-no">100</span><span id="line-100"> if (checkForTtl(cfTTL, f)) {</span>
+<span class="source-line-no">101</span><span id="line-101"> return true;</span>
+<span class="source-line-no">102</span><span id="line-102"> }</span>
+<span class="source-line-no">103</span><span id="line-103"> if (isMajorOrBulkloadResult(f, now - lowTimestamp)) {</span>
+<span class="source-line-no">104</span><span id="line-104"> return true;</span>
+<span class="source-line-no">105</span><span id="line-105"> }</span>
+<span class="source-line-no">106</span><span id="line-106"> byte[] timeRangeBytes = f.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
+<span class="source-line-no">107</span><span id="line-107"> // this means this file has not been major compacted by manually triggered compaction at</span>
+<span class="source-line-no">108</span><span id="line-108"> // the time of enabling Custom Time Based Priority, so it needs compaction to have its rows</span>
+<span class="source-line-no">109</span><span id="line-109"> // separated according to the cutOffTimestamp.</span>
+<span class="source-line-no">110</span><span id="line-110"> if (timeRangeBytes == null) {</span>
+<span class="source-line-no">111</span><span id="line-111"> return true;</span>
+<span class="source-line-no">112</span><span id="line-112"> }</span>
+<span class="source-line-no">113</span><span id="line-113"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(timeRangeBytes);</span>
+<span class="source-line-no">114</span><span id="line-114"> if (timeRangeTracker.getMin() < cutOffTimestamp) {</span>
+<span class="source-line-no">115</span><span id="line-115"> if (timeRangeTracker.getMax() > cutOffTimestamp) {</span>
+<span class="source-line-no">116</span><span id="line-116"> // Found at least one file crossing the cutOffTimestamp</span>
+<span class="source-line-no">117</span><span id="line-117"> return true;</span>
+<span class="source-line-no">118</span><span id="line-118"> } else {</span>
+<span class="source-line-no">119</span><span id="line-119"> countLower++;</span>
+<span class="source-line-no">120</span><span id="line-120"> }</span>
+<span class="source-line-no">121</span><span id="line-121"> } else {</span>
+<span class="source-line-no">122</span><span id="line-122"> countHigher++;</span>
+<span class="source-line-no">123</span><span id="line-123"> }</span>
+<span class="source-line-no">124</span><span id="line-124"> hdfsBlocksDistribution.add(f.getHDFSBlockDistribution());</span>
+<span class="source-line-no">125</span><span id="line-125"> }</span>
+<span class="source-line-no">126</span><span id="line-126"> // If we haven't found any files crossing the cutOffTimestamp, we have to check</span>
+<span class="source-line-no">127</span><span id="line-127"> // if there are at least more than one file on each tier and if so, perform compaction</span>
+<span class="source-line-no">128</span><span id="line-128"> if (countLower > 1 || countHigher > 1) {</span>
+<span class="source-line-no">129</span><span id="line-129"> return true;</span>
+<span class="source-line-no">130</span><span id="line-130"> }</span>
+<span class="source-line-no">131</span><span id="line-131"> return checkBlockLocality(hdfsBlocksDistribution);</span>
+<span class="source-line-no">132</span><span id="line-132"> }</span>
+<span class="source-line-no">133</span><span id="line-133"> return false;</span>
+<span class="source-line-no">134</span><span id="line-134"> }</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136">}</span>
diff --git a/hbase-website/dependency-convergence.html b/hbase-website/dependency-convergence.html
index 8062d981155..15459f817ba 100644
--- a/hbase-website/dependency-convergence.html
+++ b/hbase-website/dependency-convergence.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-info.html b/hbase-website/dependency-info.html
index 6e1bb8e5b3d..72d9474aeb6 100644
--- a/hbase-website/dependency-info.html
+++ b/hbase-website/dependency-info.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-management.html b/hbase-website/dependency-management.html
index 5ff574be07a..c1cafd82418 100644
--- a/hbase-website/dependency-management.html
+++ b/hbase-website/dependency-management.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/index.html b/hbase-website/index.html
index dbdcce72954..e465a825d73 100644
--- a/hbase-website/index.html
+++ b/hbase-website/index.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/issue-management.html b/hbase-website/issue-management.html
index c69f5cb3ed5..9e157665ce9 100644
--- a/hbase-website/issue-management.html
+++ b/hbase-website/issue-management.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/licenses.html b/hbase-website/licenses.html
index b7cfb4955b5..443bfd9f121 100644
--- a/hbase-website/licenses.html
+++ b/hbase-website/licenses.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/mailing-lists.html b/hbase-website/mailing-lists.html
index 775264437f0..7447bd715f7 100644
--- a/hbase-website/mailing-lists.html
+++ b/hbase-website/mailing-lists.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/plugin-management.html b/hbase-website/plugin-management.html
index 398c7b6d5ab..1bdf2fdb807 100644
--- a/hbase-website/plugin-management.html
+++ b/hbase-website/plugin-management.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/plugins.html b/hbase-website/plugins.html
index a33981118fd..51e2921bd18 100644
--- a/hbase-website/plugins.html
+++ b/hbase-website/plugins.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/project-info.html b/hbase-website/project-info.html
index 306762b7bca..199fbd31980 100644
--- a/hbase-website/project-info.html
+++ b/hbase-website/project-info.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/scm.html b/hbase-website/scm.html
index 8113d19e6ae..f3eafad81ea 100644
--- a/hbase-website/scm.html
+++ b/hbase-website/scm.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/summary.html b/hbase-website/summary.html
index 2863d49bdb2..99624b12883 100644
--- a/hbase-website/summary.html
+++ b/hbase-website/summary.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/team.html b/hbase-website/team.html
index 50692858dae..39a1b41727c 100644
--- a/hbase-website/team.html
+++ b/hbase-website/team.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/issue-management.html b/issue-management.html
index 4c040dbf459..4bcf910b76f 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/licenses.html b/licenses.html
index e777ca1c786..d2dc1f1be6e 100644
--- a/licenses.html
+++ b/licenses.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/mailing-lists.html b/mailing-lists.html
index 76edc5bc040..d9f560c6528 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/plugin-management.html b/plugin-management.html
index c2bdc4e09c2..699f2704f80 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/plugins.html b/plugins.html
index 74837fd21d0..336b6c1710b 100644
--- a/plugins.html
+++ b/plugins.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/project-info.html b/project-info.html
index bddb6badb2d..bf89b7ee7ec 100644
--- a/project-info.html
+++ b/project-info.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/project-reports.html b/project-reports.html
index 35a4ce8ebab..a2d03709ce0 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/scm.html b/scm.html
index 391240db75c..ae6704825d2 100644
--- a/scm.html
+++ b/scm.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/summary.html b/summary.html
index dbc968b3e93..3c6b04dd592 100644
--- a/summary.html
+++ b/summary.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/team.html b/team.html
index 65c59152b75..a612be7ba2b 100644
--- a/team.html
+++ b/team.html
@@ -2,7 +2,7 @@
<!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-09-17
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-09-18
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
index bb925ecf9b0..113866986dc 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
@@ -126,161 +126,163 @@
<span class="source-line-no">113</span><span id="line-113"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
<span class="source-line-no">114</span><span id="line-114"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
<span class="source-line-no">115</span><span id="line-115"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">116</span><span id="line-116"> assertEquals(1,</span>
-<span class="source-line-no">117</span><span id="line-117"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">118</span><span id="line-118"> }</span>
-<span class="source-line-no">119</span><span id="line-119"></span>
-<span class="source-line-no">120</span><span id="line-120"> @Test</span>
-<span class="source-line-no">121</span><span id="line-121"> public void testGetCompactBoundariesForMajorAllOld() throws Exception {</span>
-<span class="source-line-no">122</span><span id="line-122"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">123</span><span id="line-123"> Path file = preparePath();</span>
-<span class="source-line-no">124</span><span id="line-124"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">125</span><span id="line-125"> // The default cut off age is 10 years, so any of the min/max value there should get in the old</span>
-<span class="source-line-no">126</span><span id="line-126"> // tier</span>
-<span class="source-line-no">127</span><span id="line-127"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">128</span><span id="line-128"> files.add(createFile(file, 2, 3, 1024, 1));</span>
-<span class="source-line-no">129</span><span id="line-129"> assertEquals(2,</span>
-<span class="source-line-no">130</span><span id="line-130"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">131</span><span id="line-131"> }</span>
-<span class="source-line-no">132</span><span id="line-132"></span>
-<span class="source-line-no">133</span><span id="line-133"> @Test</span>
-<span class="source-line-no">134</span><span id="line-134"> public void testGetCompactBoundariesForMajorOneOnEachSide() throws Exception {</span>
-<span class="source-line-no">135</span><span id="line-135"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">136</span><span id="line-136"> Path file = preparePath();</span>
-<span class="source-line-no">137</span><span id="line-137"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">138</span><span id="line-138"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">139</span><span id="line-139"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">140</span><span id="line-140"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">141</span><span id="line-141"> assertEquals(3,</span>
-<span class="source-line-no">142</span><span id="line-142"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> @Test</span>
-<span class="source-line-no">146</span><span id="line-146"> public void testGetCompactBoundariesForMajorOneCrossing() throws Exception {</span>
-<span class="source-line-no">147</span><span id="line-147"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">148</span><span id="line-148"> Path file = preparePath();</span>
-<span class="source-line-no">149</span><span id="line-149"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">150</span><span id="line-150"> files.add(createFile(file, 0, EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
-<span class="source-line-no">151</span><span id="line-151"> assertEquals(3,</span>
-<span class="source-line-no">152</span><span id="line-152"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">153</span><span id="line-153"> }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155"> @FunctionalInterface</span>
-<span class="source-line-no">156</span><span id="line-156"> interface PolicyValidator<T, U> {</span>
-<span class="source-line-no">157</span><span id="line-157"> void accept(T t, U u) throws Exception;</span>
-<span class="source-line-no">158</span><span id="line-158"> }</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160"> private void testShouldPerformMajorCompaction(long min, long max, int numFiles,</span>
-<span class="source-line-no">161</span><span id="line-161"> PolicyValidator<CustomDateTieredCompactionPolicy, ArrayList<HStoreFile>> validation)</span>
-<span class="source-line-no">162</span><span id="line-162"> throws Exception {</span>
-<span class="source-line-no">163</span><span id="line-163"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">164</span><span id="line-164"> RegionInfo mockedRegionInfo = mockRegionInfo();</span>
-<span class="source-line-no">165</span><span id="line-165"> Path file = preparePath();</span>
-<span class="source-line-no">166</span><span id="line-166"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">167</span><span id="line-167"> ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();</span>
-<span class="source-line-no">168</span><span id="line-168"> EnvironmentEdgeManager.injectEdge(timeMachine);</span>
-<span class="source-line-no">169</span><span id="line-169"> for (int i = 0; i < numFiles; i++) {</span>
-<span class="source-line-no">170</span><span id="line-170"> MockHStoreFile mockedSFile = (MockHStoreFile) createFile(mockedRegionInfo, file, min, max,</span>
-<span class="source-line-no">171</span><span id="line-171"> 1024, 0, HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD);</span>
-<span class="source-line-no">172</span><span id="line-172"> mockedSFile.setIsMajor(true);</span>
-<span class="source-line-no">173</span><span id="line-173"> files.add(mockedSFile);</span>
-<span class="source-line-no">174</span><span id="line-174"> }</span>
-<span class="source-line-no">175</span><span id="line-175"> EnvironmentEdgeManager.reset();</span>
-<span class="source-line-no">176</span><span id="line-176"> validation.accept(policy, files);</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"></span>
-<span class="source-line-no">179</span><span id="line-179"> @Test</span>
-<span class="source-line-no">180</span><span id="line-180"> public void testShouldPerformMajorCompactionOneFileCrossing() throws Exception {</span>
-<span class="source-line-no">181</span><span id="line-181"> long max = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">182</span><span id="line-182"> testShouldPerformMajorCompaction(0, max, 1,</span>
-<span class="source-line-no">183</span><span id="line-183"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">184</span><span id="line-184"> }</span>
-<span class="source-line-no">185</span><span id="line-185"></span>
-<span class="source-line-no">186</span><span id="line-186"> @Test</span>
-<span class="source-line-no">187</span><span id="line-187"> public void testShouldPerformMajorCompactionOneFileMinMaxLow() throws Exception {</span>
-<span class="source-line-no">188</span><span id="line-188"> testShouldPerformMajorCompaction(0, 1, 1,</span>
-<span class="source-line-no">189</span><span id="line-189"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">190</span><span id="line-190"> }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192"> @Test</span>
-<span class="source-line-no">193</span><span id="line-193"> public void testShouldPerformMajorCompactionOneFileMinMaxHigh() throws Exception {</span>
-<span class="source-line-no">194</span><span id="line-194"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">195</span><span id="line-195"> testShouldPerformMajorCompaction(currentTime, currentTime, 1,</span>
-<span class="source-line-no">196</span><span id="line-196"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"></span>
-<span class="source-line-no">199</span><span id="line-199"> @Test</span>
-<span class="source-line-no">200</span><span id="line-200"> public void testShouldPerformMajorCompactionTwoFilesMinMaxHigh() throws Exception {</span>
-<span class="source-line-no">201</span><span id="line-201"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">202</span><span id="line-202"> testShouldPerformMajorCompaction(currentTime, currentTime, 2,</span>
-<span class="source-line-no">203</span><span id="line-203"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"></span>
-<span class="source-line-no">206</span><span id="line-206"> @Test</span>
-<span class="source-line-no">207</span><span id="line-207"> public void testSelectMinorCompactionTwoFilesNoOld() throws Exception {</span>
-<span class="source-line-no">208</span><span id="line-208"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">209</span><span id="line-209"> Path file = preparePath();</span>
-<span class="source-line-no">210</span><span id="line-210"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">211</span><span id="line-211"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">212</span><span id="line-212"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">116</span><span id="line-116"> // getCompactBoundariesForMajor always offers [MIN_VALUE, cutOffTimestamp] now, regardless of</span>
+<span class="source-line-no">117</span><span id="line-117"> // the files being compacted, so the boundary count is always 2.</span>
+<span class="source-line-no">118</span><span id="line-118"> assertEquals(2,</span>
+<span class="source-line-no">119</span><span id="line-119"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">120</span><span id="line-120"> }</span>
+<span class="source-line-no">121</span><span id="line-121"></span>
+<span class="source-line-no">122</span><span id="line-122"> @Test</span>
+<span class="source-line-no">123</span><span id="line-123"> public void testGetCompactBoundariesForMajorAllOld() throws Exception {</span>
+<span class="source-line-no">124</span><span id="line-124"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">125</span><span id="line-125"> Path file = preparePath();</span>
+<span class="source-line-no">126</span><span id="line-126"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">127</span><span id="line-127"> // The default cut off age is 10 years, so any of the min/max value there should get in the old</span>
+<span class="source-line-no">128</span><span id="line-128"> // tier</span>
+<span class="source-line-no">129</span><span id="line-129"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">130</span><span id="line-130"> files.add(createFile(file, 2, 3, 1024, 1));</span>
+<span class="source-line-no">131</span><span id="line-131"> assertEquals(2,</span>
+<span class="source-line-no">132</span><span id="line-132"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">133</span><span id="line-133"> }</span>
+<span class="source-line-no">134</span><span id="line-134"></span>
+<span class="source-line-no">135</span><span id="line-135"> @Test</span>
+<span class="source-line-no">136</span><span id="line-136"> public void testGetCompactBoundariesForMajorOneOnEachSide() throws Exception {</span>
+<span class="source-line-no">137</span><span id="line-137"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">138</span><span id="line-138"> Path file = preparePath();</span>
+<span class="source-line-no">139</span><span id="line-139"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">140</span><span id="line-140"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">141</span><span id="line-141"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">142</span><span id="line-142"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">143</span><span id="line-143"> assertEquals(2,</span>
+<span class="source-line-no">144</span><span id="line-144"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">145</span><span id="line-145"> }</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147"> @Test</span>
+<span class="source-line-no">148</span><span id="line-148"> public void testGetCompactBoundariesForMajorOneCrossing() throws Exception {</span>
+<span class="source-line-no">149</span><span id="line-149"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">150</span><span id="line-150"> Path file = preparePath();</span>
+<span class="source-line-no">151</span><span id="line-151"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">152</span><span id="line-152"> files.add(createFile(file, 0, EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">153</span><span id="line-153"> assertEquals(2,</span>
+<span class="source-line-no">154</span><span id="line-154"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">155</span><span id="line-155"> }</span>
+<span class="source-line-no">156</span><span id="line-156"></span>
+<span class="source-line-no">157</span><span id="line-157"> @FunctionalInterface</span>
+<span class="source-line-no">158</span><span id="line-158"> interface PolicyValidator<T, U> {</span>
+<span class="source-line-no">159</span><span id="line-159"> void accept(T t, U u) throws Exception;</span>
+<span class="source-line-no">160</span><span id="line-160"> }</span>
+<span class="source-line-no">161</span><span id="line-161"></span>
+<span class="source-line-no">162</span><span id="line-162"> private void testShouldPerformMajorCompaction(long min, long max, int numFiles,</span>
+<span class="source-line-no">163</span><span id="line-163"> PolicyValidator<CustomDateTieredCompactionPolicy, ArrayList<HStoreFile>> validation)</span>
+<span class="source-line-no">164</span><span id="line-164"> throws Exception {</span>
+<span class="source-line-no">165</span><span id="line-165"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">166</span><span id="line-166"> RegionInfo mockedRegionInfo = mockRegionInfo();</span>
+<span class="source-line-no">167</span><span id="line-167"> Path file = preparePath();</span>
+<span class="source-line-no">168</span><span id="line-168"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">169</span><span id="line-169"> ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();</span>
+<span class="source-line-no">170</span><span id="line-170"> EnvironmentEdgeManager.injectEdge(timeMachine);</span>
+<span class="source-line-no">171</span><span id="line-171"> for (int i = 0; i < numFiles; i++) {</span>
+<span class="source-line-no">172</span><span id="line-172"> MockHStoreFile mockedSFile = (MockHStoreFile) createFile(mockedRegionInfo, file, min, max,</span>
+<span class="source-line-no">173</span><span id="line-173"> 1024, 0, HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD);</span>
+<span class="source-line-no">174</span><span id="line-174"> mockedSFile.setIsMajor(true);</span>
+<span class="source-line-no">175</span><span id="line-175"> files.add(mockedSFile);</span>
+<span class="source-line-no">176</span><span id="line-176"> }</span>
+<span class="source-line-no">177</span><span id="line-177"> EnvironmentEdgeManager.reset();</span>
+<span class="source-line-no">178</span><span id="line-178"> validation.accept(policy, files);</span>
+<span class="source-line-no">179</span><span id="line-179"> }</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181"> @Test</span>
+<span class="source-line-no">182</span><span id="line-182"> public void testShouldPerformMajorCompactionOneFileCrossing() throws Exception {</span>
+<span class="source-line-no">183</span><span id="line-183"> long max = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">184</span><span id="line-184"> testShouldPerformMajorCompaction(0, max, 1,</span>
+<span class="source-line-no">185</span><span id="line-185"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> @Test</span>
+<span class="source-line-no">189</span><span id="line-189"> public void testShouldPerformMajorCompactionOneFileMinMaxLow() throws Exception {</span>
+<span class="source-line-no">190</span><span id="line-190"> testShouldPerformMajorCompaction(0, 1, 1,</span>
+<span class="source-line-no">191</span><span id="line-191"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">192</span><span id="line-192"> }</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194"> @Test</span>
+<span class="source-line-no">195</span><span id="line-195"> public void testShouldPerformMajorCompactionOneFileMinMaxHigh() throws Exception {</span>
+<span class="source-line-no">196</span><span id="line-196"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">197</span><span id="line-197"> testShouldPerformMajorCompaction(currentTime, currentTime, 1,</span>
+<span class="source-line-no">198</span><span id="line-198"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">199</span><span id="line-199"> }</span>
+<span class="source-line-no">200</span><span id="line-200"></span>
+<span class="source-line-no">201</span><span id="line-201"> @Test</span>
+<span class="source-line-no">202</span><span id="line-202"> public void testShouldPerformMajorCompactionTwoFilesMinMaxHigh() throws Exception {</span>
+<span class="source-line-no">203</span><span id="line-203"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">204</span><span id="line-204"> testShouldPerformMajorCompaction(currentTime, currentTime, 2,</span>
+<span class="source-line-no">205</span><span id="line-205"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208"> @Test</span>
+<span class="source-line-no">209</span><span id="line-209"> public void testSelectMinorCompactionTwoFilesNoOld() throws Exception {</span>
+<span class="source-line-no">210</span><span id="line-210"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">211</span><span id="line-211"> Path file = preparePath();</span>
+<span class="source-line-no">212</span><span id="line-212"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
<span class="source-line-no">213</span><span id="line-213"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">214</span><span id="line-214"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">215</span><span id="line-215"> // Shouldn't do minor compaction, as minimum number of files</span>
-<span class="source-line-no">216</span><span id="line-216"> // for minor compactions is 3</span>
-<span class="source-line-no">217</span><span id="line-217"> assertEquals(0, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">218</span><span id="line-218"> }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220"> @Test</span>
-<span class="source-line-no">221</span><span id="line-221"> public void testSelectMinorCompactionThreeFilesNoOld() throws Exception {</span>
-<span class="source-line-no">222</span><span id="line-222"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">223</span><span id="line-223"> Path file = preparePath();</span>
-<span class="source-line-no">224</span><span id="line-224"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">225</span><span id="line-225"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">226</span><span id="line-226"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">214</span><span id="line-214"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">215</span><span id="line-215"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">216</span><span id="line-216"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">217</span><span id="line-217"> // Shouldn't do minor compaction, as minimum number of files</span>
+<span class="source-line-no">218</span><span id="line-218"> // for minor compactions is 3</span>
+<span class="source-line-no">219</span><span id="line-219"> assertEquals(0, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">220</span><span id="line-220"> }</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222"> @Test</span>
+<span class="source-line-no">223</span><span id="line-223"> public void testSelectMinorCompactionThreeFilesNoOld() throws Exception {</span>
+<span class="source-line-no">224</span><span id="line-224"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">225</span><span id="line-225"> Path file = preparePath();</span>
+<span class="source-line-no">226</span><span id="line-226"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
<span class="source-line-no">227</span><span id="line-227"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">228</span><span id="line-228"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">228</span><span id="line-228"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
<span class="source-line-no">229</span><span id="line-229"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">230</span><span id="line-230"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">231</span><span id="line-231"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">232</span><span id="line-232"> }</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234"> @Test</span>
-<span class="source-line-no">235</span><span id="line-235"> public void testSelectMinorCompactionThreeFilesAllOld() throws Exception {</span>
-<span class="source-line-no">236</span><span id="line-236"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">237</span><span id="line-237"> Path file = preparePath();</span>
-<span class="source-line-no">238</span><span id="line-238"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">239</span><span id="line-239"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">240</span><span id="line-240"> files.add(createFile(file, 1, 2, 1024, 1));</span>
-<span class="source-line-no">241</span><span id="line-241"> files.add(createFile(file, 3, 4, 1024, 2));</span>
-<span class="source-line-no">242</span><span id="line-242"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">243</span><span id="line-243"> }</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245"> @Test</span>
-<span class="source-line-no">246</span><span id="line-246"> public void testSelectMinorCompactionThreeFilesOneOldTwoNew() throws Exception {</span>
-<span class="source-line-no">247</span><span id="line-247"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">248</span><span id="line-248"> Path file = preparePath();</span>
-<span class="source-line-no">249</span><span id="line-249"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">250</span><span id="line-250"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">251</span><span id="line-251"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">252</span><span id="line-252"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">230</span><span id="line-230"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">231</span><span id="line-231"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">232</span><span id="line-232"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">233</span><span id="line-233"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">234</span><span id="line-234"> }</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236"> @Test</span>
+<span class="source-line-no">237</span><span id="line-237"> public void testSelectMinorCompactionThreeFilesAllOld() throws Exception {</span>
+<span class="source-line-no">238</span><span id="line-238"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">239</span><span id="line-239"> Path file = preparePath();</span>
+<span class="source-line-no">240</span><span id="line-240"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">241</span><span id="line-241"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">242</span><span id="line-242"> files.add(createFile(file, 1, 2, 1024, 1));</span>
+<span class="source-line-no">243</span><span id="line-243"> files.add(createFile(file, 3, 4, 1024, 2));</span>
+<span class="source-line-no">244</span><span id="line-244"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">245</span><span id="line-245"> }</span>
+<span class="source-line-no">246</span><span id="line-246"></span>
+<span class="source-line-no">247</span><span id="line-247"> @Test</span>
+<span class="source-line-no">248</span><span id="line-248"> public void testSelectMinorCompactionThreeFilesOneOldTwoNew() throws Exception {</span>
+<span class="source-line-no">249</span><span id="line-249"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">250</span><span id="line-250"> Path file = preparePath();</span>
+<span class="source-line-no">251</span><span id="line-251"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">252</span><span id="line-252"> files.add(createFile(file, 0, 1, 1024, 0));</span>
<span class="source-line-no">253</span><span id="line-253"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">254</span><span id="line-254"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">255</span><span id="line-255"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Test</span>
-<span class="source-line-no">259</span><span id="line-259"> public void testSelectMinorCompactionThreeFilesTwoOldOneNew() throws Exception {</span>
-<span class="source-line-no">260</span><span id="line-260"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">261</span><span id="line-261"> Path file = preparePath();</span>
-<span class="source-line-no">262</span><span id="line-262"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">263</span><span id="line-263"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">264</span><span id="line-264"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">265</span><span id="line-265"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">254</span><span id="line-254"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">255</span><span id="line-255"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">256</span><span id="line-256"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">257</span><span id="line-257"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">258</span><span id="line-258"> }</span>
+<span class="source-line-no">259</span><span id="line-259"></span>
+<span class="source-line-no">260</span><span id="line-260"> @Test</span>
+<span class="source-line-no">261</span><span id="line-261"> public void testSelectMinorCompactionThreeFilesTwoOldOneNew() throws Exception {</span>
+<span class="source-line-no">262</span><span id="line-262"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">263</span><span id="line-263"> Path file = preparePath();</span>
+<span class="source-line-no">264</span><span id="line-264"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">265</span><span id="line-265"> files.add(createFile(file, 0, 1, 1024, 0));</span>
<span class="source-line-no">266</span><span id="line-266"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">267</span><span id="line-267"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">268</span><span id="line-268"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">269</span><span id="line-269"> }</span>
-<span class="source-line-no">270</span><span id="line-270">}</span>
+<span class="source-line-no">267</span><span id="line-267"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">268</span><span id="line-268"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">269</span><span id="line-269"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">270</span><span id="line-270"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">271</span><span id="line-271"> }</span>
+<span class="source-line-no">272</span><span id="line-272">}</span>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html
index a49347aef96..8b7be18b2b5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html
@@ -83,7 +83,7 @@ loadScripts(document, 'script');</script>
</dl>
<hr>
<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
-</span><span class="modifiers">static interface </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-155">TestCustomCellTieredCompactionPolicy.PolicyValidator</a><T,<wbr>U></span></div>
+</span><span class="modifiers">static interface </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-157">TestCustomCellTieredCompactionPolicy.PolicyValidator</a><T,<wbr>U></span></div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -119,7 +119,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="accept(T,U)">
<h3 id="accept(java.lang.Object,java.lang.Object)">accept</h3>
-<div class="member-signature"><span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html#line-157">accept</a></span><wbr><span class="parameters">(<a href="TestCustomCellTieredCompactionPolicy.PolicyValidator.html" title="type parameter in TestCustomCellTieredCompactionPolicy.PolicyValidator">T</a> t,
+<div class="member-signature"><span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html#line-159">accept</a></span><wbr><span class="parameters">(<a href="TestCustomCellTieredCompactionPolicy.PolicyValidator.html" title="type parameter in TestCustomCellTieredCompactionPolicy.PolicyValidator">T</a> t,
<a href="TestCustomCellTieredCompactionPolicy.PolicyValidator.html" title="type parameter in TestCustomCellTieredCompactionPolicy.PolicyValidator">U</a> u)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
index 027eadad2bd..87d0ec46cab 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
@@ -351,7 +351,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testGetCompactBoundariesForMajorAllOld()">
<h3>testGetCompactBoundariesForMajorAllOld</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-120">testGetCompactBoundariesForMajorAllOld</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-122">testGetCompactBoundariesForMajorAllOld</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -363,7 +363,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testGetCompactBoundariesForMajorOneOnEachSide()">
<h3>testGetCompactBoundariesForMajorOneOnEachSide</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-133">testGetCompactBoundariesForMajorOneOnEachSide</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-135">testGetCompactBoundariesForMajorOneOnEachSide</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -375,7 +375,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testGetCompactBoundariesForMajorOneCrossing()">
<h3>testGetCompactBoundariesForMajorOneCrossing</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-145">testGetCompactBoundariesForMajorOneCrossing</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-147">testGetCompactBoundariesForMajorOneCrossing</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -386,7 +386,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="testShouldPerformMajorCompaction(long,long,int,org.apache.hadoop.hbase.regionserver.TestCustomCellTieredCompactionPolicy.PolicyValidator)">
<h3>testShouldPerformMajorCompaction</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-160">testShouldPerformMajorCompaction</a></span><wbr><span class="parameters">(long min,
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-162">testShouldPerformMajorCompaction</a></span><wbr><span class="parameters">(long min,
long max,
int numFiles,
<a href="TestCustomCellTieredCompactionPolicy.PolicyValidator.html" title="interface in org.apache.hadoop.hbase.regionserver">TestCustomCellTieredCompactionPolicy.PolicyValidator</a><org.apache.hadoop.hbase.regionserver.compactions.CustomDateTieredCompactionPolicy,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.hbase.regionserver.HStore [...]
@@ -401,7 +401,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testShouldPerformMajorCompactionOneFileCrossing()">
<h3>testShouldPerformMajorCompactionOneFileCrossing</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-179">testShouldPerformMajorCompactionOneFileCrossing</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-181">testShouldPerformMajorCompactionOneFileCrossing</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -413,7 +413,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testShouldPerformMajorCompactionOneFileMinMaxLow()">
<h3>testShouldPerformMajorCompactionOneFileMinMaxLow</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-186">testShouldPerformMajorCompactionOneFileMinMaxLow</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-188">testShouldPerformMajorCompactionOneFileMinMaxLow</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -425,7 +425,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testShouldPerformMajorCompactionOneFileMinMaxHigh()">
<h3>testShouldPerformMajorCompactionOneFileMinMaxHigh</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-192">testShouldPerformMajorCompactionOneFileMinMaxHigh</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-194">testShouldPerformMajorCompactionOneFileMinMaxHigh</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -437,7 +437,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testShouldPerformMajorCompactionTwoFilesMinMaxHigh()">
<h3>testShouldPerformMajorCompactionTwoFilesMinMaxHigh</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-199">testShouldPerformMajorCompactionTwoFilesMinMaxHigh</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-201">testShouldPerformMajorCompactionTwoFilesMinMaxHigh</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -449,7 +449,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testSelectMinorCompactionTwoFilesNoOld()">
<h3>testSelectMinorCompactionTwoFilesNoOld</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-206">testSelectMinorCompactionTwoFilesNoOld</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-208">testSelectMinorCompactionTwoFilesNoOld</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -461,7 +461,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testSelectMinorCompactionThreeFilesNoOld()">
<h3>testSelectMinorCompactionThreeFilesNoOld</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-220">testSelectMinorCompactionThreeFilesNoOld</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-222">testSelectMinorCompactionThreeFilesNoOld</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -473,7 +473,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testSelectMinorCompactionThreeFilesAllOld()">
<h3>testSelectMinorCompactionThreeFilesAllOld</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-234">testSelectMinorCompactionThreeFilesAllOld</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-236">testSelectMinorCompactionThreeFilesAllOld</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -485,7 +485,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testSelectMinorCompactionThreeFilesOneOldTwoNew()">
<h3>testSelectMinorCompactionThreeFilesOneOldTwoNew</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-245">testSelectMinorCompactionThreeFilesOneOldTwoNew</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-247">testSelectMinorCompactionThreeFilesOneOldTwoNew</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -497,7 +497,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testSelectMinorCompactionThreeFilesTwoOldOneNew()">
<h3>testSelectMinorCompactionThreeFilesTwoOldOneNew</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-258">testSelectMinorCompactionThreeFilesTwoOldOneNew</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html#line-260">testSelectMinorCompactionThreeFilesTwoOldOneNew</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html
index 3776f7f06e2..bfa837a9a77 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html
@@ -240,7 +240,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testCustomCellTieredCompactorWithRowKeyDateTieringValue()">
<h3>testCustomCellTieredCompactorWithRowKeyDateTieringValue</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html#line-155">testCustomCellTieredCompactorWithRowKeyDateTieringValue</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html#line-152">testCustomCellTieredCompactorWithRowKeyDateTieringValue</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -252,7 +252,7 @@ loadScripts(document, 'script');</script>
<section class="detail" id="testShouldPerformMajorCompactionWhenTimeRangeMetadataIsNull()">
<h3>testShouldPerformMajorCompactionWhenTimeRangeMetadataIsNull</h3>
<div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html#line-326">testShouldPerformMajorCompactionWhenTimeRangeMetadataIsNull</a></span>()
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html#line-321">testShouldPerformMajorCompactionWhenTimeRangeMetadataIsNull</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html
index 3d0dc477024..6dd3aa6205f 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.PolicyValidator.html
@@ -126,161 +126,163 @@
<span class="source-line-no">113</span><span id="line-113"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
<span class="source-line-no">114</span><span id="line-114"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
<span class="source-line-no">115</span><span id="line-115"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">116</span><span id="line-116"> assertEquals(1,</span>
-<span class="source-line-no">117</span><span id="line-117"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">118</span><span id="line-118"> }</span>
-<span class="source-line-no">119</span><span id="line-119"></span>
-<span class="source-line-no">120</span><span id="line-120"> @Test</span>
-<span class="source-line-no">121</span><span id="line-121"> public void testGetCompactBoundariesForMajorAllOld() throws Exception {</span>
-<span class="source-line-no">122</span><span id="line-122"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">123</span><span id="line-123"> Path file = preparePath();</span>
-<span class="source-line-no">124</span><span id="line-124"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">125</span><span id="line-125"> // The default cut off age is 10 years, so any of the min/max value there should get in the old</span>
-<span class="source-line-no">126</span><span id="line-126"> // tier</span>
-<span class="source-line-no">127</span><span id="line-127"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">128</span><span id="line-128"> files.add(createFile(file, 2, 3, 1024, 1));</span>
-<span class="source-line-no">129</span><span id="line-129"> assertEquals(2,</span>
-<span class="source-line-no">130</span><span id="line-130"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">131</span><span id="line-131"> }</span>
-<span class="source-line-no">132</span><span id="line-132"></span>
-<span class="source-line-no">133</span><span id="line-133"> @Test</span>
-<span class="source-line-no">134</span><span id="line-134"> public void testGetCompactBoundariesForMajorOneOnEachSide() throws Exception {</span>
-<span class="source-line-no">135</span><span id="line-135"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">136</span><span id="line-136"> Path file = preparePath();</span>
-<span class="source-line-no">137</span><span id="line-137"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">138</span><span id="line-138"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">139</span><span id="line-139"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">140</span><span id="line-140"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">141</span><span id="line-141"> assertEquals(3,</span>
-<span class="source-line-no">142</span><span id="line-142"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> @Test</span>
-<span class="source-line-no">146</span><span id="line-146"> public void testGetCompactBoundariesForMajorOneCrossing() throws Exception {</span>
-<span class="source-line-no">147</span><span id="line-147"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">148</span><span id="line-148"> Path file = preparePath();</span>
-<span class="source-line-no">149</span><span id="line-149"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">150</span><span id="line-150"> files.add(createFile(file, 0, EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
-<span class="source-line-no">151</span><span id="line-151"> assertEquals(3,</span>
-<span class="source-line-no">152</span><span id="line-152"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">153</span><span id="line-153"> }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155"> @FunctionalInterface</span>
-<span class="source-line-no">156</span><span id="line-156"> interface PolicyValidator<T, U> {</span>
-<span class="source-line-no">157</span><span id="line-157"> void accept(T t, U u) throws Exception;</span>
-<span class="source-line-no">158</span><span id="line-158"> }</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160"> private void testShouldPerformMajorCompaction(long min, long max, int numFiles,</span>
-<span class="source-line-no">161</span><span id="line-161"> PolicyValidator<CustomDateTieredCompactionPolicy, ArrayList<HStoreFile>> validation)</span>
-<span class="source-line-no">162</span><span id="line-162"> throws Exception {</span>
-<span class="source-line-no">163</span><span id="line-163"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">164</span><span id="line-164"> RegionInfo mockedRegionInfo = mockRegionInfo();</span>
-<span class="source-line-no">165</span><span id="line-165"> Path file = preparePath();</span>
-<span class="source-line-no">166</span><span id="line-166"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">167</span><span id="line-167"> ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();</span>
-<span class="source-line-no">168</span><span id="line-168"> EnvironmentEdgeManager.injectEdge(timeMachine);</span>
-<span class="source-line-no">169</span><span id="line-169"> for (int i = 0; i < numFiles; i++) {</span>
-<span class="source-line-no">170</span><span id="line-170"> MockHStoreFile mockedSFile = (MockHStoreFile) createFile(mockedRegionInfo, file, min, max,</span>
-<span class="source-line-no">171</span><span id="line-171"> 1024, 0, HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD);</span>
-<span class="source-line-no">172</span><span id="line-172"> mockedSFile.setIsMajor(true);</span>
-<span class="source-line-no">173</span><span id="line-173"> files.add(mockedSFile);</span>
-<span class="source-line-no">174</span><span id="line-174"> }</span>
-<span class="source-line-no">175</span><span id="line-175"> EnvironmentEdgeManager.reset();</span>
-<span class="source-line-no">176</span><span id="line-176"> validation.accept(policy, files);</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"></span>
-<span class="source-line-no">179</span><span id="line-179"> @Test</span>
-<span class="source-line-no">180</span><span id="line-180"> public void testShouldPerformMajorCompactionOneFileCrossing() throws Exception {</span>
-<span class="source-line-no">181</span><span id="line-181"> long max = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">182</span><span id="line-182"> testShouldPerformMajorCompaction(0, max, 1,</span>
-<span class="source-line-no">183</span><span id="line-183"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">184</span><span id="line-184"> }</span>
-<span class="source-line-no">185</span><span id="line-185"></span>
-<span class="source-line-no">186</span><span id="line-186"> @Test</span>
-<span class="source-line-no">187</span><span id="line-187"> public void testShouldPerformMajorCompactionOneFileMinMaxLow() throws Exception {</span>
-<span class="source-line-no">188</span><span id="line-188"> testShouldPerformMajorCompaction(0, 1, 1,</span>
-<span class="source-line-no">189</span><span id="line-189"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">190</span><span id="line-190"> }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192"> @Test</span>
-<span class="source-line-no">193</span><span id="line-193"> public void testShouldPerformMajorCompactionOneFileMinMaxHigh() throws Exception {</span>
-<span class="source-line-no">194</span><span id="line-194"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">195</span><span id="line-195"> testShouldPerformMajorCompaction(currentTime, currentTime, 1,</span>
-<span class="source-line-no">196</span><span id="line-196"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"></span>
-<span class="source-line-no">199</span><span id="line-199"> @Test</span>
-<span class="source-line-no">200</span><span id="line-200"> public void testShouldPerformMajorCompactionTwoFilesMinMaxHigh() throws Exception {</span>
-<span class="source-line-no">201</span><span id="line-201"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">202</span><span id="line-202"> testShouldPerformMajorCompaction(currentTime, currentTime, 2,</span>
-<span class="source-line-no">203</span><span id="line-203"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"></span>
-<span class="source-line-no">206</span><span id="line-206"> @Test</span>
-<span class="source-line-no">207</span><span id="line-207"> public void testSelectMinorCompactionTwoFilesNoOld() throws Exception {</span>
-<span class="source-line-no">208</span><span id="line-208"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">209</span><span id="line-209"> Path file = preparePath();</span>
-<span class="source-line-no">210</span><span id="line-210"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">211</span><span id="line-211"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">212</span><span id="line-212"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">116</span><span id="line-116"> // getCompactBoundariesForMajor always offers [MIN_VALUE, cutOffTimestamp] now, regardless of</span>
+<span class="source-line-no">117</span><span id="line-117"> // the files being compacted, so the boundary count is always 2.</span>
+<span class="source-line-no">118</span><span id="line-118"> assertEquals(2,</span>
+<span class="source-line-no">119</span><span id="line-119"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">120</span><span id="line-120"> }</span>
+<span class="source-line-no">121</span><span id="line-121"></span>
+<span class="source-line-no">122</span><span id="line-122"> @Test</span>
+<span class="source-line-no">123</span><span id="line-123"> public void testGetCompactBoundariesForMajorAllOld() throws Exception {</span>
+<span class="source-line-no">124</span><span id="line-124"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">125</span><span id="line-125"> Path file = preparePath();</span>
+<span class="source-line-no">126</span><span id="line-126"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">127</span><span id="line-127"> // The default cut off age is 10 years, so any of the min/max value there should get in the old</span>
+<span class="source-line-no">128</span><span id="line-128"> // tier</span>
+<span class="source-line-no">129</span><span id="line-129"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">130</span><span id="line-130"> files.add(createFile(file, 2, 3, 1024, 1));</span>
+<span class="source-line-no">131</span><span id="line-131"> assertEquals(2,</span>
+<span class="source-line-no">132</span><span id="line-132"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">133</span><span id="line-133"> }</span>
+<span class="source-line-no">134</span><span id="line-134"></span>
+<span class="source-line-no">135</span><span id="line-135"> @Test</span>
+<span class="source-line-no">136</span><span id="line-136"> public void testGetCompactBoundariesForMajorOneOnEachSide() throws Exception {</span>
+<span class="source-line-no">137</span><span id="line-137"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">138</span><span id="line-138"> Path file = preparePath();</span>
+<span class="source-line-no">139</span><span id="line-139"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">140</span><span id="line-140"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">141</span><span id="line-141"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">142</span><span id="line-142"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">143</span><span id="line-143"> assertEquals(2,</span>
+<span class="source-line-no">144</span><span id="line-144"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">145</span><span id="line-145"> }</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147"> @Test</span>
+<span class="source-line-no">148</span><span id="line-148"> public void testGetCompactBoundariesForMajorOneCrossing() throws Exception {</span>
+<span class="source-line-no">149</span><span id="line-149"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">150</span><span id="line-150"> Path file = preparePath();</span>
+<span class="source-line-no">151</span><span id="line-151"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">152</span><span id="line-152"> files.add(createFile(file, 0, EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">153</span><span id="line-153"> assertEquals(2,</span>
+<span class="source-line-no">154</span><span id="line-154"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">155</span><span id="line-155"> }</span>
+<span class="source-line-no">156</span><span id="line-156"></span>
+<span class="source-line-no">157</span><span id="line-157"> @FunctionalInterface</span>
+<span class="source-line-no">158</span><span id="line-158"> interface PolicyValidator<T, U> {</span>
+<span class="source-line-no">159</span><span id="line-159"> void accept(T t, U u) throws Exception;</span>
+<span class="source-line-no">160</span><span id="line-160"> }</span>
+<span class="source-line-no">161</span><span id="line-161"></span>
+<span class="source-line-no">162</span><span id="line-162"> private void testShouldPerformMajorCompaction(long min, long max, int numFiles,</span>
+<span class="source-line-no">163</span><span id="line-163"> PolicyValidator<CustomDateTieredCompactionPolicy, ArrayList<HStoreFile>> validation)</span>
+<span class="source-line-no">164</span><span id="line-164"> throws Exception {</span>
+<span class="source-line-no">165</span><span id="line-165"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">166</span><span id="line-166"> RegionInfo mockedRegionInfo = mockRegionInfo();</span>
+<span class="source-line-no">167</span><span id="line-167"> Path file = preparePath();</span>
+<span class="source-line-no">168</span><span id="line-168"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">169</span><span id="line-169"> ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();</span>
+<span class="source-line-no">170</span><span id="line-170"> EnvironmentEdgeManager.injectEdge(timeMachine);</span>
+<span class="source-line-no">171</span><span id="line-171"> for (int i = 0; i < numFiles; i++) {</span>
+<span class="source-line-no">172</span><span id="line-172"> MockHStoreFile mockedSFile = (MockHStoreFile) createFile(mockedRegionInfo, file, min, max,</span>
+<span class="source-line-no">173</span><span id="line-173"> 1024, 0, HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD);</span>
+<span class="source-line-no">174</span><span id="line-174"> mockedSFile.setIsMajor(true);</span>
+<span class="source-line-no">175</span><span id="line-175"> files.add(mockedSFile);</span>
+<span class="source-line-no">176</span><span id="line-176"> }</span>
+<span class="source-line-no">177</span><span id="line-177"> EnvironmentEdgeManager.reset();</span>
+<span class="source-line-no">178</span><span id="line-178"> validation.accept(policy, files);</span>
+<span class="source-line-no">179</span><span id="line-179"> }</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181"> @Test</span>
+<span class="source-line-no">182</span><span id="line-182"> public void testShouldPerformMajorCompactionOneFileCrossing() throws Exception {</span>
+<span class="source-line-no">183</span><span id="line-183"> long max = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">184</span><span id="line-184"> testShouldPerformMajorCompaction(0, max, 1,</span>
+<span class="source-line-no">185</span><span id="line-185"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> @Test</span>
+<span class="source-line-no">189</span><span id="line-189"> public void testShouldPerformMajorCompactionOneFileMinMaxLow() throws Exception {</span>
+<span class="source-line-no">190</span><span id="line-190"> testShouldPerformMajorCompaction(0, 1, 1,</span>
+<span class="source-line-no">191</span><span id="line-191"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">192</span><span id="line-192"> }</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194"> @Test</span>
+<span class="source-line-no">195</span><span id="line-195"> public void testShouldPerformMajorCompactionOneFileMinMaxHigh() throws Exception {</span>
+<span class="source-line-no">196</span><span id="line-196"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">197</span><span id="line-197"> testShouldPerformMajorCompaction(currentTime, currentTime, 1,</span>
+<span class="source-line-no">198</span><span id="line-198"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">199</span><span id="line-199"> }</span>
+<span class="source-line-no">200</span><span id="line-200"></span>
+<span class="source-line-no">201</span><span id="line-201"> @Test</span>
+<span class="source-line-no">202</span><span id="line-202"> public void testShouldPerformMajorCompactionTwoFilesMinMaxHigh() throws Exception {</span>
+<span class="source-line-no">203</span><span id="line-203"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">204</span><span id="line-204"> testShouldPerformMajorCompaction(currentTime, currentTime, 2,</span>
+<span class="source-line-no">205</span><span id="line-205"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208"> @Test</span>
+<span class="source-line-no">209</span><span id="line-209"> public void testSelectMinorCompactionTwoFilesNoOld() throws Exception {</span>
+<span class="source-line-no">210</span><span id="line-210"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">211</span><span id="line-211"> Path file = preparePath();</span>
+<span class="source-line-no">212</span><span id="line-212"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
<span class="source-line-no">213</span><span id="line-213"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">214</span><span id="line-214"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">215</span><span id="line-215"> // Shouldn't do minor compaction, as minimum number of files</span>
-<span class="source-line-no">216</span><span id="line-216"> // for minor compactions is 3</span>
-<span class="source-line-no">217</span><span id="line-217"> assertEquals(0, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">218</span><span id="line-218"> }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220"> @Test</span>
-<span class="source-line-no">221</span><span id="line-221"> public void testSelectMinorCompactionThreeFilesNoOld() throws Exception {</span>
-<span class="source-line-no">222</span><span id="line-222"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">223</span><span id="line-223"> Path file = preparePath();</span>
-<span class="source-line-no">224</span><span id="line-224"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">225</span><span id="line-225"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">226</span><span id="line-226"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">214</span><span id="line-214"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">215</span><span id="line-215"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">216</span><span id="line-216"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">217</span><span id="line-217"> // Shouldn't do minor compaction, as minimum number of files</span>
+<span class="source-line-no">218</span><span id="line-218"> // for minor compactions is 3</span>
+<span class="source-line-no">219</span><span id="line-219"> assertEquals(0, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">220</span><span id="line-220"> }</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222"> @Test</span>
+<span class="source-line-no">223</span><span id="line-223"> public void testSelectMinorCompactionThreeFilesNoOld() throws Exception {</span>
+<span class="source-line-no">224</span><span id="line-224"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">225</span><span id="line-225"> Path file = preparePath();</span>
+<span class="source-line-no">226</span><span id="line-226"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
<span class="source-line-no">227</span><span id="line-227"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">228</span><span id="line-228"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">228</span><span id="line-228"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
<span class="source-line-no">229</span><span id="line-229"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">230</span><span id="line-230"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">231</span><span id="line-231"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">232</span><span id="line-232"> }</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234"> @Test</span>
-<span class="source-line-no">235</span><span id="line-235"> public void testSelectMinorCompactionThreeFilesAllOld() throws Exception {</span>
-<span class="source-line-no">236</span><span id="line-236"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">237</span><span id="line-237"> Path file = preparePath();</span>
-<span class="source-line-no">238</span><span id="line-238"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">239</span><span id="line-239"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">240</span><span id="line-240"> files.add(createFile(file, 1, 2, 1024, 1));</span>
-<span class="source-line-no">241</span><span id="line-241"> files.add(createFile(file, 3, 4, 1024, 2));</span>
-<span class="source-line-no">242</span><span id="line-242"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">243</span><span id="line-243"> }</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245"> @Test</span>
-<span class="source-line-no">246</span><span id="line-246"> public void testSelectMinorCompactionThreeFilesOneOldTwoNew() throws Exception {</span>
-<span class="source-line-no">247</span><span id="line-247"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">248</span><span id="line-248"> Path file = preparePath();</span>
-<span class="source-line-no">249</span><span id="line-249"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">250</span><span id="line-250"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">251</span><span id="line-251"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">252</span><span id="line-252"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">230</span><span id="line-230"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">231</span><span id="line-231"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">232</span><span id="line-232"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">233</span><span id="line-233"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">234</span><span id="line-234"> }</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236"> @Test</span>
+<span class="source-line-no">237</span><span id="line-237"> public void testSelectMinorCompactionThreeFilesAllOld() throws Exception {</span>
+<span class="source-line-no">238</span><span id="line-238"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">239</span><span id="line-239"> Path file = preparePath();</span>
+<span class="source-line-no">240</span><span id="line-240"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">241</span><span id="line-241"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">242</span><span id="line-242"> files.add(createFile(file, 1, 2, 1024, 1));</span>
+<span class="source-line-no">243</span><span id="line-243"> files.add(createFile(file, 3, 4, 1024, 2));</span>
+<span class="source-line-no">244</span><span id="line-244"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">245</span><span id="line-245"> }</span>
+<span class="source-line-no">246</span><span id="line-246"></span>
+<span class="source-line-no">247</span><span id="line-247"> @Test</span>
+<span class="source-line-no">248</span><span id="line-248"> public void testSelectMinorCompactionThreeFilesOneOldTwoNew() throws Exception {</span>
+<span class="source-line-no">249</span><span id="line-249"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">250</span><span id="line-250"> Path file = preparePath();</span>
+<span class="source-line-no">251</span><span id="line-251"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">252</span><span id="line-252"> files.add(createFile(file, 0, 1, 1024, 0));</span>
<span class="source-line-no">253</span><span id="line-253"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">254</span><span id="line-254"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">255</span><span id="line-255"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Test</span>
-<span class="source-line-no">259</span><span id="line-259"> public void testSelectMinorCompactionThreeFilesTwoOldOneNew() throws Exception {</span>
-<span class="source-line-no">260</span><span id="line-260"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">261</span><span id="line-261"> Path file = preparePath();</span>
-<span class="source-line-no">262</span><span id="line-262"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">263</span><span id="line-263"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">264</span><span id="line-264"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">265</span><span id="line-265"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">254</span><span id="line-254"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">255</span><span id="line-255"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">256</span><span id="line-256"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">257</span><span id="line-257"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">258</span><span id="line-258"> }</span>
+<span class="source-line-no">259</span><span id="line-259"></span>
+<span class="source-line-no">260</span><span id="line-260"> @Test</span>
+<span class="source-line-no">261</span><span id="line-261"> public void testSelectMinorCompactionThreeFilesTwoOldOneNew() throws Exception {</span>
+<span class="source-line-no">262</span><span id="line-262"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">263</span><span id="line-263"> Path file = preparePath();</span>
+<span class="source-line-no">264</span><span id="line-264"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">265</span><span id="line-265"> files.add(createFile(file, 0, 1, 1024, 0));</span>
<span class="source-line-no">266</span><span id="line-266"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">267</span><span id="line-267"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">268</span><span id="line-268"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">269</span><span id="line-269"> }</span>
-<span class="source-line-no">270</span><span id="line-270">}</span>
+<span class="source-line-no">267</span><span id="line-267"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">268</span><span id="line-268"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">269</span><span id="line-269"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">270</span><span id="line-270"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">271</span><span id="line-271"> }</span>
+<span class="source-line-no">272</span><span id="line-272">}</span>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
index bb925ecf9b0..113866986dc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.html
@@ -126,161 +126,163 @@
<span class="source-line-no">113</span><span id="line-113"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
<span class="source-line-no">114</span><span id="line-114"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
<span class="source-line-no">115</span><span id="line-115"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">116</span><span id="line-116"> assertEquals(1,</span>
-<span class="source-line-no">117</span><span id="line-117"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">118</span><span id="line-118"> }</span>
-<span class="source-line-no">119</span><span id="line-119"></span>
-<span class="source-line-no">120</span><span id="line-120"> @Test</span>
-<span class="source-line-no">121</span><span id="line-121"> public void testGetCompactBoundariesForMajorAllOld() throws Exception {</span>
-<span class="source-line-no">122</span><span id="line-122"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">123</span><span id="line-123"> Path file = preparePath();</span>
-<span class="source-line-no">124</span><span id="line-124"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">125</span><span id="line-125"> // The default cut off age is 10 years, so any of the min/max value there should get in the old</span>
-<span class="source-line-no">126</span><span id="line-126"> // tier</span>
-<span class="source-line-no">127</span><span id="line-127"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">128</span><span id="line-128"> files.add(createFile(file, 2, 3, 1024, 1));</span>
-<span class="source-line-no">129</span><span id="line-129"> assertEquals(2,</span>
-<span class="source-line-no">130</span><span id="line-130"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">131</span><span id="line-131"> }</span>
-<span class="source-line-no">132</span><span id="line-132"></span>
-<span class="source-line-no">133</span><span id="line-133"> @Test</span>
-<span class="source-line-no">134</span><span id="line-134"> public void testGetCompactBoundariesForMajorOneOnEachSide() throws Exception {</span>
-<span class="source-line-no">135</span><span id="line-135"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">136</span><span id="line-136"> Path file = preparePath();</span>
-<span class="source-line-no">137</span><span id="line-137"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">138</span><span id="line-138"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">139</span><span id="line-139"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">140</span><span id="line-140"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">141</span><span id="line-141"> assertEquals(3,</span>
-<span class="source-line-no">142</span><span id="line-142"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> @Test</span>
-<span class="source-line-no">146</span><span id="line-146"> public void testGetCompactBoundariesForMajorOneCrossing() throws Exception {</span>
-<span class="source-line-no">147</span><span id="line-147"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">148</span><span id="line-148"> Path file = preparePath();</span>
-<span class="source-line-no">149</span><span id="line-149"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">150</span><span id="line-150"> files.add(createFile(file, 0, EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
-<span class="source-line-no">151</span><span id="line-151"> assertEquals(3,</span>
-<span class="source-line-no">152</span><span id="line-152"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
-<span class="source-line-no">153</span><span id="line-153"> }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155"> @FunctionalInterface</span>
-<span class="source-line-no">156</span><span id="line-156"> interface PolicyValidator<T, U> {</span>
-<span class="source-line-no">157</span><span id="line-157"> void accept(T t, U u) throws Exception;</span>
-<span class="source-line-no">158</span><span id="line-158"> }</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160"> private void testShouldPerformMajorCompaction(long min, long max, int numFiles,</span>
-<span class="source-line-no">161</span><span id="line-161"> PolicyValidator<CustomDateTieredCompactionPolicy, ArrayList<HStoreFile>> validation)</span>
-<span class="source-line-no">162</span><span id="line-162"> throws Exception {</span>
-<span class="source-line-no">163</span><span id="line-163"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">164</span><span id="line-164"> RegionInfo mockedRegionInfo = mockRegionInfo();</span>
-<span class="source-line-no">165</span><span id="line-165"> Path file = preparePath();</span>
-<span class="source-line-no">166</span><span id="line-166"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">167</span><span id="line-167"> ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();</span>
-<span class="source-line-no">168</span><span id="line-168"> EnvironmentEdgeManager.injectEdge(timeMachine);</span>
-<span class="source-line-no">169</span><span id="line-169"> for (int i = 0; i < numFiles; i++) {</span>
-<span class="source-line-no">170</span><span id="line-170"> MockHStoreFile mockedSFile = (MockHStoreFile) createFile(mockedRegionInfo, file, min, max,</span>
-<span class="source-line-no">171</span><span id="line-171"> 1024, 0, HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD);</span>
-<span class="source-line-no">172</span><span id="line-172"> mockedSFile.setIsMajor(true);</span>
-<span class="source-line-no">173</span><span id="line-173"> files.add(mockedSFile);</span>
-<span class="source-line-no">174</span><span id="line-174"> }</span>
-<span class="source-line-no">175</span><span id="line-175"> EnvironmentEdgeManager.reset();</span>
-<span class="source-line-no">176</span><span id="line-176"> validation.accept(policy, files);</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"></span>
-<span class="source-line-no">179</span><span id="line-179"> @Test</span>
-<span class="source-line-no">180</span><span id="line-180"> public void testShouldPerformMajorCompactionOneFileCrossing() throws Exception {</span>
-<span class="source-line-no">181</span><span id="line-181"> long max = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">182</span><span id="line-182"> testShouldPerformMajorCompaction(0, max, 1,</span>
-<span class="source-line-no">183</span><span id="line-183"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">184</span><span id="line-184"> }</span>
-<span class="source-line-no">185</span><span id="line-185"></span>
-<span class="source-line-no">186</span><span id="line-186"> @Test</span>
-<span class="source-line-no">187</span><span id="line-187"> public void testShouldPerformMajorCompactionOneFileMinMaxLow() throws Exception {</span>
-<span class="source-line-no">188</span><span id="line-188"> testShouldPerformMajorCompaction(0, 1, 1,</span>
-<span class="source-line-no">189</span><span id="line-189"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">190</span><span id="line-190"> }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192"> @Test</span>
-<span class="source-line-no">193</span><span id="line-193"> public void testShouldPerformMajorCompactionOneFileMinMaxHigh() throws Exception {</span>
-<span class="source-line-no">194</span><span id="line-194"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">195</span><span id="line-195"> testShouldPerformMajorCompaction(currentTime, currentTime, 1,</span>
-<span class="source-line-no">196</span><span id="line-196"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"></span>
-<span class="source-line-no">199</span><span id="line-199"> @Test</span>
-<span class="source-line-no">200</span><span id="line-200"> public void testShouldPerformMajorCompactionTwoFilesMinMaxHigh() throws Exception {</span>
-<span class="source-line-no">201</span><span id="line-201"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">202</span><span id="line-202"> testShouldPerformMajorCompaction(currentTime, currentTime, 2,</span>
-<span class="source-line-no">203</span><span id="line-203"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"></span>
-<span class="source-line-no">206</span><span id="line-206"> @Test</span>
-<span class="source-line-no">207</span><span id="line-207"> public void testSelectMinorCompactionTwoFilesNoOld() throws Exception {</span>
-<span class="source-line-no">208</span><span id="line-208"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">209</span><span id="line-209"> Path file = preparePath();</span>
-<span class="source-line-no">210</span><span id="line-210"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">211</span><span id="line-211"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">212</span><span id="line-212"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">116</span><span id="line-116"> // getCompactBoundariesForMajor always offers [MIN_VALUE, cutOffTimestamp] now, regardless of</span>
+<span class="source-line-no">117</span><span id="line-117"> // the files being compacted, so the boundary count is always 2.</span>
+<span class="source-line-no">118</span><span id="line-118"> assertEquals(2,</span>
+<span class="source-line-no">119</span><span id="line-119"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">120</span><span id="line-120"> }</span>
+<span class="source-line-no">121</span><span id="line-121"></span>
+<span class="source-line-no">122</span><span id="line-122"> @Test</span>
+<span class="source-line-no">123</span><span id="line-123"> public void testGetCompactBoundariesForMajorAllOld() throws Exception {</span>
+<span class="source-line-no">124</span><span id="line-124"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">125</span><span id="line-125"> Path file = preparePath();</span>
+<span class="source-line-no">126</span><span id="line-126"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">127</span><span id="line-127"> // The default cut off age is 10 years, so any of the min/max value there should get in the old</span>
+<span class="source-line-no">128</span><span id="line-128"> // tier</span>
+<span class="source-line-no">129</span><span id="line-129"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">130</span><span id="line-130"> files.add(createFile(file, 2, 3, 1024, 1));</span>
+<span class="source-line-no">131</span><span id="line-131"> assertEquals(2,</span>
+<span class="source-line-no">132</span><span id="line-132"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">133</span><span id="line-133"> }</span>
+<span class="source-line-no">134</span><span id="line-134"></span>
+<span class="source-line-no">135</span><span id="line-135"> @Test</span>
+<span class="source-line-no">136</span><span id="line-136"> public void testGetCompactBoundariesForMajorOneOnEachSide() throws Exception {</span>
+<span class="source-line-no">137</span><span id="line-137"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">138</span><span id="line-138"> Path file = preparePath();</span>
+<span class="source-line-no">139</span><span id="line-139"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">140</span><span id="line-140"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">141</span><span id="line-141"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">142</span><span id="line-142"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">143</span><span id="line-143"> assertEquals(2,</span>
+<span class="source-line-no">144</span><span id="line-144"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">145</span><span id="line-145"> }</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147"> @Test</span>
+<span class="source-line-no">148</span><span id="line-148"> public void testGetCompactBoundariesForMajorOneCrossing() throws Exception {</span>
+<span class="source-line-no">149</span><span id="line-149"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">150</span><span id="line-150"> Path file = preparePath();</span>
+<span class="source-line-no">151</span><span id="line-151"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">152</span><span id="line-152"> files.add(createFile(file, 0, EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">153</span><span id="line-153"> assertEquals(2,</span>
+<span class="source-line-no">154</span><span id="line-154"> ((DateTieredCompactionRequest) policy.selectMajorCompaction(files)).getBoundaries().size());</span>
+<span class="source-line-no">155</span><span id="line-155"> }</span>
+<span class="source-line-no">156</span><span id="line-156"></span>
+<span class="source-line-no">157</span><span id="line-157"> @FunctionalInterface</span>
+<span class="source-line-no">158</span><span id="line-158"> interface PolicyValidator<T, U> {</span>
+<span class="source-line-no">159</span><span id="line-159"> void accept(T t, U u) throws Exception;</span>
+<span class="source-line-no">160</span><span id="line-160"> }</span>
+<span class="source-line-no">161</span><span id="line-161"></span>
+<span class="source-line-no">162</span><span id="line-162"> private void testShouldPerformMajorCompaction(long min, long max, int numFiles,</span>
+<span class="source-line-no">163</span><span id="line-163"> PolicyValidator<CustomDateTieredCompactionPolicy, ArrayList<HStoreFile>> validation)</span>
+<span class="source-line-no">164</span><span id="line-164"> throws Exception {</span>
+<span class="source-line-no">165</span><span id="line-165"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">166</span><span id="line-166"> RegionInfo mockedRegionInfo = mockRegionInfo();</span>
+<span class="source-line-no">167</span><span id="line-167"> Path file = preparePath();</span>
+<span class="source-line-no">168</span><span id="line-168"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">169</span><span id="line-169"> ManualEnvironmentEdge timeMachine = new ManualEnvironmentEdge();</span>
+<span class="source-line-no">170</span><span id="line-170"> EnvironmentEdgeManager.injectEdge(timeMachine);</span>
+<span class="source-line-no">171</span><span id="line-171"> for (int i = 0; i < numFiles; i++) {</span>
+<span class="source-line-no">172</span><span id="line-172"> MockHStoreFile mockedSFile = (MockHStoreFile) createFile(mockedRegionInfo, file, min, max,</span>
+<span class="source-line-no">173</span><span id="line-173"> 1024, 0, HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD);</span>
+<span class="source-line-no">174</span><span id="line-174"> mockedSFile.setIsMajor(true);</span>
+<span class="source-line-no">175</span><span id="line-175"> files.add(mockedSFile);</span>
+<span class="source-line-no">176</span><span id="line-176"> }</span>
+<span class="source-line-no">177</span><span id="line-177"> EnvironmentEdgeManager.reset();</span>
+<span class="source-line-no">178</span><span id="line-178"> validation.accept(policy, files);</span>
+<span class="source-line-no">179</span><span id="line-179"> }</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181"> @Test</span>
+<span class="source-line-no">182</span><span id="line-182"> public void testShouldPerformMajorCompactionOneFileCrossing() throws Exception {</span>
+<span class="source-line-no">183</span><span id="line-183"> long max = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">184</span><span id="line-184"> testShouldPerformMajorCompaction(0, max, 1,</span>
+<span class="source-line-no">185</span><span id="line-185"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> @Test</span>
+<span class="source-line-no">189</span><span id="line-189"> public void testShouldPerformMajorCompactionOneFileMinMaxLow() throws Exception {</span>
+<span class="source-line-no">190</span><span id="line-190"> testShouldPerformMajorCompaction(0, 1, 1,</span>
+<span class="source-line-no">191</span><span id="line-191"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">192</span><span id="line-192"> }</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194"> @Test</span>
+<span class="source-line-no">195</span><span id="line-195"> public void testShouldPerformMajorCompactionOneFileMinMaxHigh() throws Exception {</span>
+<span class="source-line-no">196</span><span id="line-196"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">197</span><span id="line-197"> testShouldPerformMajorCompaction(currentTime, currentTime, 1,</span>
+<span class="source-line-no">198</span><span id="line-198"> (p, f) -> assertFalse(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">199</span><span id="line-199"> }</span>
+<span class="source-line-no">200</span><span id="line-200"></span>
+<span class="source-line-no">201</span><span id="line-201"> @Test</span>
+<span class="source-line-no">202</span><span id="line-202"> public void testShouldPerformMajorCompactionTwoFilesMinMaxHigh() throws Exception {</span>
+<span class="source-line-no">203</span><span id="line-203"> long currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">204</span><span id="line-204"> testShouldPerformMajorCompaction(currentTime, currentTime, 2,</span>
+<span class="source-line-no">205</span><span id="line-205"> (p, f) -> assertTrue(p.shouldPerformMajorCompaction(f)));</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208"> @Test</span>
+<span class="source-line-no">209</span><span id="line-209"> public void testSelectMinorCompactionTwoFilesNoOld() throws Exception {</span>
+<span class="source-line-no">210</span><span id="line-210"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">211</span><span id="line-211"> Path file = preparePath();</span>
+<span class="source-line-no">212</span><span id="line-212"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
<span class="source-line-no">213</span><span id="line-213"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">214</span><span id="line-214"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
-<span class="source-line-no">215</span><span id="line-215"> // Shouldn't do minor compaction, as minimum number of files</span>
-<span class="source-line-no">216</span><span id="line-216"> // for minor compactions is 3</span>
-<span class="source-line-no">217</span><span id="line-217"> assertEquals(0, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">218</span><span id="line-218"> }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220"> @Test</span>
-<span class="source-line-no">221</span><span id="line-221"> public void testSelectMinorCompactionThreeFilesNoOld() throws Exception {</span>
-<span class="source-line-no">222</span><span id="line-222"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">223</span><span id="line-223"> Path file = preparePath();</span>
-<span class="source-line-no">224</span><span id="line-224"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">225</span><span id="line-225"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">226</span><span id="line-226"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">214</span><span id="line-214"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
+<span class="source-line-no">215</span><span id="line-215"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">216</span><span id="line-216"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">217</span><span id="line-217"> // Shouldn't do minor compaction, as minimum number of files</span>
+<span class="source-line-no">218</span><span id="line-218"> // for minor compactions is 3</span>
+<span class="source-line-no">219</span><span id="line-219"> assertEquals(0, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">220</span><span id="line-220"> }</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222"> @Test</span>
+<span class="source-line-no">223</span><span id="line-223"> public void testSelectMinorCompactionThreeFilesNoOld() throws Exception {</span>
+<span class="source-line-no">224</span><span id="line-224"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">225</span><span id="line-225"> Path file = preparePath();</span>
+<span class="source-line-no">226</span><span id="line-226"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
<span class="source-line-no">227</span><span id="line-227"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">228</span><span id="line-228"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">228</span><span id="line-228"> EnvironmentEdgeManager.currentTime(), 1024, 0));</span>
<span class="source-line-no">229</span><span id="line-229"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">230</span><span id="line-230"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">231</span><span id="line-231"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">232</span><span id="line-232"> }</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234"> @Test</span>
-<span class="source-line-no">235</span><span id="line-235"> public void testSelectMinorCompactionThreeFilesAllOld() throws Exception {</span>
-<span class="source-line-no">236</span><span id="line-236"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">237</span><span id="line-237"> Path file = preparePath();</span>
-<span class="source-line-no">238</span><span id="line-238"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">239</span><span id="line-239"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">240</span><span id="line-240"> files.add(createFile(file, 1, 2, 1024, 1));</span>
-<span class="source-line-no">241</span><span id="line-241"> files.add(createFile(file, 3, 4, 1024, 2));</span>
-<span class="source-line-no">242</span><span id="line-242"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">243</span><span id="line-243"> }</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245"> @Test</span>
-<span class="source-line-no">246</span><span id="line-246"> public void testSelectMinorCompactionThreeFilesOneOldTwoNew() throws Exception {</span>
-<span class="source-line-no">247</span><span id="line-247"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">248</span><span id="line-248"> Path file = preparePath();</span>
-<span class="source-line-no">249</span><span id="line-249"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">250</span><span id="line-250"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">251</span><span id="line-251"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">252</span><span id="line-252"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">230</span><span id="line-230"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">231</span><span id="line-231"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">232</span><span id="line-232"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">233</span><span id="line-233"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">234</span><span id="line-234"> }</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236"> @Test</span>
+<span class="source-line-no">237</span><span id="line-237"> public void testSelectMinorCompactionThreeFilesAllOld() throws Exception {</span>
+<span class="source-line-no">238</span><span id="line-238"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">239</span><span id="line-239"> Path file = preparePath();</span>
+<span class="source-line-no">240</span><span id="line-240"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">241</span><span id="line-241"> files.add(createFile(file, 0, 1, 1024, 0));</span>
+<span class="source-line-no">242</span><span id="line-242"> files.add(createFile(file, 1, 2, 1024, 1));</span>
+<span class="source-line-no">243</span><span id="line-243"> files.add(createFile(file, 3, 4, 1024, 2));</span>
+<span class="source-line-no">244</span><span id="line-244"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">245</span><span id="line-245"> }</span>
+<span class="source-line-no">246</span><span id="line-246"></span>
+<span class="source-line-no">247</span><span id="line-247"> @Test</span>
+<span class="source-line-no">248</span><span id="line-248"> public void testSelectMinorCompactionThreeFilesOneOldTwoNew() throws Exception {</span>
+<span class="source-line-no">249</span><span id="line-249"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">250</span><span id="line-250"> Path file = preparePath();</span>
+<span class="source-line-no">251</span><span id="line-251"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">252</span><span id="line-252"> files.add(createFile(file, 0, 1, 1024, 0));</span>
<span class="source-line-no">253</span><span id="line-253"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">254</span><span id="line-254"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">255</span><span id="line-255"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Test</span>
-<span class="source-line-no">259</span><span id="line-259"> public void testSelectMinorCompactionThreeFilesTwoOldOneNew() throws Exception {</span>
-<span class="source-line-no">260</span><span id="line-260"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
-<span class="source-line-no">261</span><span id="line-261"> Path file = preparePath();</span>
-<span class="source-line-no">262</span><span id="line-262"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
-<span class="source-line-no">263</span><span id="line-263"> files.add(createFile(file, 0, 1, 1024, 0));</span>
-<span class="source-line-no">264</span><span id="line-264"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">265</span><span id="line-265"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">254</span><span id="line-254"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">255</span><span id="line-255"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">256</span><span id="line-256"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">257</span><span id="line-257"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">258</span><span id="line-258"> }</span>
+<span class="source-line-no">259</span><span id="line-259"></span>
+<span class="source-line-no">260</span><span id="line-260"> @Test</span>
+<span class="source-line-no">261</span><span id="line-261"> public void testSelectMinorCompactionThreeFilesTwoOldOneNew() throws Exception {</span>
+<span class="source-line-no">262</span><span id="line-262"> CustomDateTieredCompactionPolicy policy = mockAndCreatePolicy();</span>
+<span class="source-line-no">263</span><span id="line-263"> Path file = preparePath();</span>
+<span class="source-line-no">264</span><span id="line-264"> ArrayList<HStoreFile> files = new ArrayList<>();</span>
+<span class="source-line-no">265</span><span id="line-265"> files.add(createFile(file, 0, 1, 1024, 0));</span>
<span class="source-line-no">266</span><span id="line-266"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
-<span class="source-line-no">267</span><span id="line-267"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
-<span class="source-line-no">268</span><span id="line-268"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
-<span class="source-line-no">269</span><span id="line-269"> }</span>
-<span class="source-line-no">270</span><span id="line-270">}</span>
+<span class="source-line-no">267</span><span id="line-267"> EnvironmentEdgeManager.currentTime(), 1024, 1));</span>
+<span class="source-line-no">268</span><span id="line-268"> files.add(createFile(file, EnvironmentEdgeManager.currentTime(),</span>
+<span class="source-line-no">269</span><span id="line-269"> EnvironmentEdgeManager.currentTime(), 1024, 2));</span>
+<span class="source-line-no">270</span><span id="line-270"> assertEquals(3, policy.selectMinorCompaction(files, true, true).getFiles().size());</span>
+<span class="source-line-no">271</span><span id="line-271"> }</span>
+<span class="source-line-no">272</span><span id="line-272">}</span>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html
index e7e01c40755..0425cced890 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.html
@@ -126,176 +126,176 @@
<span class="source-line-no">113</span><span id="line-113"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(tableName)</span>
<span class="source-line-no">114</span><span id="line-114"> > firstCompactionTime);</span>
<span class="source-line-no">115</span><span id="line-115"> long numHFiles = utility.getNumHFiles(tableName, FAMILY);</span>
-<span class="source-line-no">116</span><span id="line-116"> // The first major compaction would have no means to detect more than one tier,</span>
-<span class="source-line-no">117</span><span id="line-117"> // because without the min/max values available in the file info portion of the selected files</span>
-<span class="source-line-no">118</span><span id="line-118"> // for compaction, CustomCellDateTieredCompactionPolicy has no means</span>
-<span class="source-line-no">119</span><span id="line-119"> // to calculate the proper boundaries.</span>
-<span class="source-line-no">120</span><span id="line-120"> assertEquals(1, numHFiles);</span>
-<span class="source-line-no">121</span><span id="line-121"> utility.getMiniHBaseCluster().getRegions(tableName).get(0).getStore(FAMILY).getStorefiles()</span>
-<span class="source-line-no">122</span><span id="line-122"> .forEach(file -> {</span>
-<span class="source-line-no">123</span><span id="line-123"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">124</span><span id="line-124"> assertNotNull(rangeBytes);</span>
-<span class="source-line-no">125</span><span id="line-125"> try {</span>
-<span class="source-line-no">126</span><span id="line-126"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
-<span class="source-line-no">127</span><span id="line-127"> assertEquals((recordTime - (11L * 366L * 24L * 60L * 60L * 1000L)),</span>
-<span class="source-line-no">128</span><span id="line-128"> timeRangeTracker.getMin());</span>
-<span class="source-line-no">129</span><span id="line-129"> assertEquals(recordTime, timeRangeTracker.getMax());</span>
-<span class="source-line-no">130</span><span id="line-130"> } catch (IOException e) {</span>
-<span class="source-line-no">131</span><span id="line-131"> fail(e.getMessage());</span>
-<span class="source-line-no">132</span><span id="line-132"> }</span>
-<span class="source-line-no">133</span><span id="line-133"> });</span>
-<span class="source-line-no">134</span><span id="line-134"> // now do major compaction again, to make sure we write two separate files</span>
-<span class="source-line-no">135</span><span id="line-135"> long secondCompactionTime = System.currentTimeMillis();</span>
-<span class="source-line-no">136</span><span id="line-136"> utility.getAdmin().majorCompact(tableName);</span>
-<span class="source-line-no">137</span><span id="line-137"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
-<span class="source-line-no">138</span><span id="line-138"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(tableName)</span>
-<span class="source-line-no">139</span><span id="line-139"> > secondCompactionTime);</span>
-<span class="source-line-no">140</span><span id="line-140"> numHFiles = utility.getNumHFiles(tableName, FAMILY);</span>
-<span class="source-line-no">141</span><span id="line-141"> assertEquals(2, numHFiles);</span>
-<span class="source-line-no">142</span><span id="line-142"> utility.getMiniHBaseCluster().getRegions(tableName).get(0).getStore(FAMILY).getStorefiles()</span>
-<span class="source-line-no">143</span><span id="line-143"> .forEach(file -> {</span>
-<span class="source-line-no">144</span><span id="line-144"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">145</span><span id="line-145"> assertNotNull(rangeBytes);</span>
-<span class="source-line-no">146</span><span id="line-146"> try {</span>
-<span class="source-line-no">147</span><span id="line-147"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
-<span class="source-line-no">148</span><span id="line-148"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
-<span class="source-line-no">149</span><span id="line-149"> } catch (IOException e) {</span>
-<span class="source-line-no">150</span><span id="line-150"> fail(e.getMessage());</span>
-<span class="source-line-no">151</span><span id="line-151"> }</span>
-<span class="source-line-no">152</span><span id="line-152"> });</span>
-<span class="source-line-no">153</span><span id="line-153"> }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155"> @Test</span>
-<span class="source-line-no">156</span><span id="line-156"> public void testCustomCellTieredCompactorWithRowKeyDateTieringValue() throws Exception {</span>
-<span class="source-line-no">157</span><span id="line-157"> // Restart mini cluster with RowKeyDateTieringValueProvider</span>
-<span class="source-line-no">158</span><span id="line-158"> utility.shutdownMiniCluster();</span>
-<span class="source-line-no">159</span><span id="line-159"> utility.getConfiguration().set(TIERING_VALUE_PROVIDER,</span>
-<span class="source-line-no">160</span><span id="line-160"> RowKeyDateTieringValueProvider.class.getName());</span>
-<span class="source-line-no">161</span><span id="line-161"> utility.startMiniCluster();</span>
+<span class="source-line-no">116</span><span id="line-116"> // getCompactBoundariesForMajor always offers the cutOffTimestamp boundary now, so the first</span>
+<span class="source-line-no">117</span><span id="line-117"> // major compaction already splits the old and recent cells into separate tiers without</span>
+<span class="source-line-no">118</span><span id="line-118"> // relying on CUSTOM_TIERING_TIME_RANGE file metadata.</span>
+<span class="source-line-no">119</span><span id="line-119"> assertEquals(2, numHFiles);</span>
+<span class="source-line-no">120</span><span id="line-120"> utility.getMiniHBaseCluster().getRegions(tableName).get(0).getStore(FAMILY).getStorefiles()</span>
+<span class="source-line-no">121</span><span id="line-121"> .forEach(file -> {</span>
+<span class="source-line-no">122</span><span id="line-122"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
+<span class="source-line-no">123</span><span id="line-123"> assertNotNull(rangeBytes);</span>
+<span class="source-line-no">124</span><span id="line-124"> try {</span>
+<span class="source-line-no">125</span><span id="line-125"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
+<span class="source-line-no">126</span><span id="line-126"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
+<span class="source-line-no">127</span><span id="line-127"> } catch (IOException e) {</span>
+<span class="source-line-no">128</span><span id="line-128"> fail(e.getMessage());</span>
+<span class="source-line-no">129</span><span id="line-129"> }</span>
+<span class="source-line-no">130</span><span id="line-130"> });</span>
+<span class="source-line-no">131</span><span id="line-131"> // now do major compaction again, to make sure the two tiers stay separate</span>
+<span class="source-line-no">132</span><span id="line-132"> long secondCompactionTime = System.currentTimeMillis();</span>
+<span class="source-line-no">133</span><span id="line-133"> utility.getAdmin().majorCompact(tableName);</span>
+<span class="source-line-no">134</span><span id="line-134"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
+<span class="source-line-no">135</span><span id="line-135"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(tableName)</span>
+<span class="source-line-no">136</span><span id="line-136"> > secondCompactionTime);</span>
+<span class="source-line-no">137</span><span id="line-137"> numHFiles = utility.getNumHFiles(tableName, FAMILY);</span>
+<span class="source-line-no">138</span><span id="line-138"> assertEquals(2, numHFiles);</span>
+<span class="source-line-no">139</span><span id="line-139"> utility.getMiniHBaseCluster().getRegions(tableName).get(0).getStore(FAMILY).getStorefiles()</span>
+<span class="source-line-no">140</span><span id="line-140"> .forEach(file -> {</span>
+<span class="source-line-no">141</span><span id="line-141"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
+<span class="source-line-no">142</span><span id="line-142"> assertNotNull(rangeBytes);</span>
+<span class="source-line-no">143</span><span id="line-143"> try {</span>
+<span class="source-line-no">144</span><span id="line-144"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
+<span class="source-line-no">145</span><span id="line-145"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
+<span class="source-line-no">146</span><span id="line-146"> } catch (IOException e) {</span>
+<span class="source-line-no">147</span><span id="line-147"> fail(e.getMessage());</span>
+<span class="source-line-no">148</span><span id="line-148"> }</span>
+<span class="source-line-no">149</span><span id="line-149"> });</span>
+<span class="source-line-no">150</span><span id="line-150"> }</span>
+<span class="source-line-no">151</span><span id="line-151"></span>
+<span class="source-line-no">152</span><span id="line-152"> @Test</span>
+<span class="source-line-no">153</span><span id="line-153"> public void testCustomCellTieredCompactorWithRowKeyDateTieringValue() throws Exception {</span>
+<span class="source-line-no">154</span><span id="line-154"> // Restart mini cluster with RowKeyDateTieringValueProvider</span>
+<span class="source-line-no">155</span><span id="line-155"> utility.shutdownMiniCluster();</span>
+<span class="source-line-no">156</span><span id="line-156"> utility.getConfiguration().set(TIERING_VALUE_PROVIDER,</span>
+<span class="source-line-no">157</span><span id="line-157"> RowKeyDateTieringValueProvider.class.getName());</span>
+<span class="source-line-no">158</span><span id="line-158"> utility.startMiniCluster();</span>
+<span class="source-line-no">159</span><span id="line-159"></span>
+<span class="source-line-no">160</span><span id="line-160"> ColumnFamilyDescriptorBuilder clmBuilder = ColumnFamilyDescriptorBuilder.newBuilder(FAMILY);</span>
+<span class="source-line-no">161</span><span id="line-161"> clmBuilder.setValue("hbase.hstore.engine.class", CustomTieredStoreEngine.class.getName());</span>
<span class="source-line-no">162</span><span id="line-162"></span>
-<span class="source-line-no">163</span><span id="line-163"> ColumnFamilyDescriptorBuilder clmBuilder = ColumnFamilyDescriptorBuilder.newBuilder(FAMILY);</span>
-<span class="source-line-no">164</span><span id="line-164"> clmBuilder.setValue("hbase.hstore.engine.class", CustomTieredStoreEngine.class.getName());</span>
-<span class="source-line-no">165</span><span id="line-165"></span>
-<span class="source-line-no">166</span><span id="line-166"> // Table 1: Date at end with format yyyyMMddHHmmssSSS</span>
-<span class="source-line-no">167</span><span id="line-167"> TableName table1Name = TableName.valueOf("testTable1");</span>
-<span class="source-line-no">168</span><span id="line-168"> TableDescriptorBuilder tbl1Builder = TableDescriptorBuilder.newBuilder(table1Name);</span>
-<span class="source-line-no">169</span><span id="line-169"> tbl1Builder.setColumnFamily(clmBuilder.build());</span>
-<span class="source-line-no">170</span><span id="line-170"> tbl1Builder.setValue(TIERING_KEY_DATE_PATTERN, "(\\d{17})$");</span>
-<span class="source-line-no">171</span><span id="line-171"> tbl1Builder.setValue(TIERING_KEY_DATE_FORMAT, "yyyyMMddHHmmssSSS");</span>
-<span class="source-line-no">172</span><span id="line-172"> utility.getAdmin().createTable(tbl1Builder.build());</span>
-<span class="source-line-no">173</span><span id="line-173"> utility.waitTableAvailable(table1Name);</span>
-<span class="source-line-no">174</span><span id="line-174"></span>
-<span class="source-line-no">175</span><span id="line-175"> // Table 2: Date at beginning with format yyyy-MM-dd HH:mm:ss</span>
-<span class="source-line-no">176</span><span id="line-176"> TableName table2Name = TableName.valueOf("testTable2");</span>
-<span class="source-line-no">177</span><span id="line-177"> TableDescriptorBuilder tbl2Builder = TableDescriptorBuilder.newBuilder(table2Name);</span>
-<span class="source-line-no">178</span><span id="line-178"> tbl2Builder.setColumnFamily(clmBuilder.build());</span>
-<span class="source-line-no">179</span><span id="line-179"> tbl2Builder.setValue(TIERING_KEY_DATE_PATTERN, "^(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})");</span>
-<span class="source-line-no">180</span><span id="line-180"> tbl2Builder.setValue(TIERING_KEY_DATE_FORMAT, "yyyy-MM-dd HH:mm:ss");</span>
-<span class="source-line-no">181</span><span id="line-181"> utility.getAdmin().createTable(tbl2Builder.build());</span>
-<span class="source-line-no">182</span><span id="line-182"> utility.waitTableAvailable(table2Name);</span>
-<span class="source-line-no">183</span><span id="line-183"></span>
-<span class="source-line-no">184</span><span id="line-184"> Connection connection = utility.getConnection();</span>
-<span class="source-line-no">185</span><span id="line-185"> long recordTime = System.currentTimeMillis();</span>
-<span class="source-line-no">186</span><span id="line-186"> long oldTime = recordTime - (11L * 366L * 24L * 60L * 60L * 1000L);</span>
+<span class="source-line-no">163</span><span id="line-163"> // Table 1: Date at end with format yyyyMMddHHmmssSSS</span>
+<span class="source-line-no">164</span><span id="line-164"> TableName table1Name = TableName.valueOf("testTable1");</span>
+<span class="source-line-no">165</span><span id="line-165"> TableDescriptorBuilder tbl1Builder = TableDescriptorBuilder.newBuilder(table1Name);</span>
+<span class="source-line-no">166</span><span id="line-166"> tbl1Builder.setColumnFamily(clmBuilder.build());</span>
+<span class="source-line-no">167</span><span id="line-167"> tbl1Builder.setValue(TIERING_KEY_DATE_PATTERN, "(\\d{17})$");</span>
+<span class="source-line-no">168</span><span id="line-168"> tbl1Builder.setValue(TIERING_KEY_DATE_FORMAT, "yyyyMMddHHmmssSSS");</span>
+<span class="source-line-no">169</span><span id="line-169"> utility.getAdmin().createTable(tbl1Builder.build());</span>
+<span class="source-line-no">170</span><span id="line-170"> utility.waitTableAvailable(table1Name);</span>
+<span class="source-line-no">171</span><span id="line-171"></span>
+<span class="source-line-no">172</span><span id="line-172"> // Table 2: Date at beginning with format yyyy-MM-dd HH:mm:ss</span>
+<span class="source-line-no">173</span><span id="line-173"> TableName table2Name = TableName.valueOf("testTable2");</span>
+<span class="source-line-no">174</span><span id="line-174"> TableDescriptorBuilder tbl2Builder = TableDescriptorBuilder.newBuilder(table2Name);</span>
+<span class="source-line-no">175</span><span id="line-175"> tbl2Builder.setColumnFamily(clmBuilder.build());</span>
+<span class="source-line-no">176</span><span id="line-176"> tbl2Builder.setValue(TIERING_KEY_DATE_PATTERN, "^(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})");</span>
+<span class="source-line-no">177</span><span id="line-177"> tbl2Builder.setValue(TIERING_KEY_DATE_FORMAT, "yyyy-MM-dd HH:mm:ss");</span>
+<span class="source-line-no">178</span><span id="line-178"> utility.getAdmin().createTable(tbl2Builder.build());</span>
+<span class="source-line-no">179</span><span id="line-179"> utility.waitTableAvailable(table2Name);</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181"> Connection connection = utility.getConnection();</span>
+<span class="source-line-no">182</span><span id="line-182"> long recordTime = System.currentTimeMillis();</span>
+<span class="source-line-no">183</span><span id="line-183"> long oldTime = recordTime - (11L * 366L * 24L * 60L * 60L * 1000L);</span>
+<span class="source-line-no">184</span><span id="line-184"></span>
+<span class="source-line-no">185</span><span id="line-185"> SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmssSSS");</span>
+<span class="source-line-no">186</span><span id="line-186"> SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");</span>
<span class="source-line-no">187</span><span id="line-187"></span>
-<span class="source-line-no">188</span><span id="line-188"> SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmssSSS");</span>
-<span class="source-line-no">189</span><span id="line-189"> SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");</span>
-<span class="source-line-no">190</span><span id="line-190"></span>
-<span class="source-line-no">191</span><span id="line-191"> // Write to Table 1 with date at end</span>
-<span class="source-line-no">192</span><span id="line-192"> Table table1 = connection.getTable(table1Name);</span>
-<span class="source-line-no">193</span><span id="line-193"> for (int i = 0; i < 6; i++) {</span>
-<span class="source-line-no">194</span><span id="line-194"> List<Put> puts = new ArrayList<>(2);</span>
-<span class="source-line-no">195</span><span id="line-195"></span>
-<span class="source-line-no">196</span><span id="line-196"> // Old data</span>
-<span class="source-line-no">197</span><span id="line-197"> String oldDate = sdf1.format(new Date(oldTime));</span>
-<span class="source-line-no">198</span><span id="line-198"> Put put = new Put(Bytes.toBytes("row_" + i + "_" + oldDate));</span>
-<span class="source-line-no">199</span><span id="line-199"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + i));</span>
-<span class="source-line-no">200</span><span id="line-200"> puts.add(put);</span>
-<span class="source-line-no">201</span><span id="line-201"></span>
-<span class="source-line-no">202</span><span id="line-202"> // Recent data</span>
-<span class="source-line-no">203</span><span id="line-203"> String recentDate = sdf1.format(new Date(recordTime));</span>
-<span class="source-line-no">204</span><span id="line-204"> put = new Put(Bytes.toBytes("row_" + (i + 1000) + "_" + recentDate));</span>
-<span class="source-line-no">205</span><span id="line-205"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + (i + 1000)));</span>
-<span class="source-line-no">206</span><span id="line-206"> puts.add(put);</span>
-<span class="source-line-no">207</span><span id="line-207"></span>
-<span class="source-line-no">208</span><span id="line-208"> table1.put(puts);</span>
-<span class="source-line-no">209</span><span id="line-209"> utility.flush(table1Name);</span>
-<span class="source-line-no">210</span><span id="line-210"> }</span>
-<span class="source-line-no">211</span><span id="line-211"> table1.close();</span>
-<span class="source-line-no">212</span><span id="line-212"></span>
-<span class="source-line-no">213</span><span id="line-213"> // Write to Table 2 with date at beginning</span>
-<span class="source-line-no">214</span><span id="line-214"> Table table2 = connection.getTable(table2Name);</span>
-<span class="source-line-no">215</span><span id="line-215"> for (int i = 0; i < 6; i++) {</span>
-<span class="source-line-no">216</span><span id="line-216"> List<Put> puts = new ArrayList<>(2);</span>
-<span class="source-line-no">217</span><span id="line-217"></span>
-<span class="source-line-no">218</span><span id="line-218"> // Old data</span>
-<span class="source-line-no">219</span><span id="line-219"> String oldDate = sdf2.format(new Date(oldTime));</span>
-<span class="source-line-no">220</span><span id="line-220"> Put put = new Put(Bytes.toBytes(oldDate + "_row_" + i));</span>
-<span class="source-line-no">221</span><span id="line-221"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + i));</span>
-<span class="source-line-no">222</span><span id="line-222"> puts.add(put);</span>
-<span class="source-line-no">223</span><span id="line-223"></span>
-<span class="source-line-no">224</span><span id="line-224"> // Recent data</span>
-<span class="source-line-no">225</span><span id="line-225"> String recentDate = sdf2.format(new Date(recordTime));</span>
-<span class="source-line-no">226</span><span id="line-226"> put = new Put(Bytes.toBytes(recentDate + "_row_" + (i + 1000)));</span>
-<span class="source-line-no">227</span><span id="line-227"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + (i + 1000)));</span>
-<span class="source-line-no">228</span><span id="line-228"> puts.add(put);</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230"> table2.put(puts);</span>
-<span class="source-line-no">231</span><span id="line-231"> utility.flush(table2Name);</span>
-<span class="source-line-no">232</span><span id="line-232"> }</span>
-<span class="source-line-no">233</span><span id="line-233"> table2.close();</span>
-<span class="source-line-no">234</span><span id="line-234"></span>
-<span class="source-line-no">235</span><span id="line-235"> // First compaction for Table 1</span>
-<span class="source-line-no">236</span><span id="line-236"> long compactionTime1 = System.currentTimeMillis();</span>
-<span class="source-line-no">237</span><span id="line-237"> utility.getAdmin().majorCompact(table1Name);</span>
-<span class="source-line-no">238</span><span id="line-238"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
-<span class="source-line-no">239</span><span id="line-239"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table1Name)</span>
-<span class="source-line-no">240</span><span id="line-240"> > compactionTime1);</span>
-<span class="source-line-no">241</span><span id="line-241"></span>
-<span class="source-line-no">242</span><span id="line-242"> assertEquals(1, utility.getNumHFiles(table1Name, FAMILY));</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> utility.getMiniHBaseCluster().getRegions(table1Name).get(0).getStore(FAMILY).getStorefiles()</span>
-<span class="source-line-no">245</span><span id="line-245"> .forEach(file -> {</span>
-<span class="source-line-no">246</span><span id="line-246"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">247</span><span id="line-247"> assertNotNull(rangeBytes);</span>
-<span class="source-line-no">248</span><span id="line-248"> try {</span>
-<span class="source-line-no">249</span><span id="line-249"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
-<span class="source-line-no">250</span><span id="line-250"> assertEquals(oldTime, timeRangeTracker.getMin());</span>
-<span class="source-line-no">251</span><span id="line-251"> assertEquals(recordTime, timeRangeTracker.getMax());</span>
-<span class="source-line-no">252</span><span id="line-252"> } catch (IOException e) {</span>
-<span class="source-line-no">253</span><span id="line-253"> fail(e.getMessage());</span>
-<span class="source-line-no">254</span><span id="line-254"> }</span>
-<span class="source-line-no">255</span><span id="line-255"> });</span>
-<span class="source-line-no">256</span><span id="line-256"></span>
-<span class="source-line-no">257</span><span id="line-257"> // Second compaction for Table 1</span>
-<span class="source-line-no">258</span><span id="line-258"> long secondCompactionTime1 = System.currentTimeMillis();</span>
-<span class="source-line-no">259</span><span id="line-259"> utility.getAdmin().majorCompact(table1Name);</span>
-<span class="source-line-no">260</span><span id="line-260"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
-<span class="source-line-no">261</span><span id="line-261"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table1Name)</span>
-<span class="source-line-no">262</span><span id="line-262"> > secondCompactionTime1);</span>
+<span class="source-line-no">188</span><span id="line-188"> // Write to Table 1 with date at end</span>
+<span class="source-line-no">189</span><span id="line-189"> Table table1 = connection.getTable(table1Name);</span>
+<span class="source-line-no">190</span><span id="line-190"> for (int i = 0; i < 6; i++) {</span>
+<span class="source-line-no">191</span><span id="line-191"> List<Put> puts = new ArrayList<>(2);</span>
+<span class="source-line-no">192</span><span id="line-192"></span>
+<span class="source-line-no">193</span><span id="line-193"> // Old data</span>
+<span class="source-line-no">194</span><span id="line-194"> String oldDate = sdf1.format(new Date(oldTime));</span>
+<span class="source-line-no">195</span><span id="line-195"> Put put = new Put(Bytes.toBytes("row_" + i + "_" + oldDate));</span>
+<span class="source-line-no">196</span><span id="line-196"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + i));</span>
+<span class="source-line-no">197</span><span id="line-197"> puts.add(put);</span>
+<span class="source-line-no">198</span><span id="line-198"></span>
+<span class="source-line-no">199</span><span id="line-199"> // Recent data</span>
+<span class="source-line-no">200</span><span id="line-200"> String recentDate = sdf1.format(new Date(recordTime));</span>
+<span class="source-line-no">201</span><span id="line-201"> put = new Put(Bytes.toBytes("row_" + (i + 1000) + "_" + recentDate));</span>
+<span class="source-line-no">202</span><span id="line-202"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + (i + 1000)));</span>
+<span class="source-line-no">203</span><span id="line-203"> puts.add(put);</span>
+<span class="source-line-no">204</span><span id="line-204"></span>
+<span class="source-line-no">205</span><span id="line-205"> table1.put(puts);</span>
+<span class="source-line-no">206</span><span id="line-206"> utility.flush(table1Name);</span>
+<span class="source-line-no">207</span><span id="line-207"> }</span>
+<span class="source-line-no">208</span><span id="line-208"> table1.close();</span>
+<span class="source-line-no">209</span><span id="line-209"></span>
+<span class="source-line-no">210</span><span id="line-210"> // Write to Table 2 with date at beginning</span>
+<span class="source-line-no">211</span><span id="line-211"> Table table2 = connection.getTable(table2Name);</span>
+<span class="source-line-no">212</span><span id="line-212"> for (int i = 0; i < 6; i++) {</span>
+<span class="source-line-no">213</span><span id="line-213"> List<Put> puts = new ArrayList<>(2);</span>
+<span class="source-line-no">214</span><span id="line-214"></span>
+<span class="source-line-no">215</span><span id="line-215"> // Old data</span>
+<span class="source-line-no">216</span><span id="line-216"> String oldDate = sdf2.format(new Date(oldTime));</span>
+<span class="source-line-no">217</span><span id="line-217"> Put put = new Put(Bytes.toBytes(oldDate + "_row_" + i));</span>
+<span class="source-line-no">218</span><span id="line-218"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + i));</span>
+<span class="source-line-no">219</span><span id="line-219"> puts.add(put);</span>
+<span class="source-line-no">220</span><span id="line-220"></span>
+<span class="source-line-no">221</span><span id="line-221"> // Recent data</span>
+<span class="source-line-no">222</span><span id="line-222"> String recentDate = sdf2.format(new Date(recordTime));</span>
+<span class="source-line-no">223</span><span id="line-223"> put = new Put(Bytes.toBytes(recentDate + "_row_" + (i + 1000)));</span>
+<span class="source-line-no">224</span><span id="line-224"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + (i + 1000)));</span>
+<span class="source-line-no">225</span><span id="line-225"> puts.add(put);</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227"> table2.put(puts);</span>
+<span class="source-line-no">228</span><span id="line-228"> utility.flush(table2Name);</span>
+<span class="source-line-no">229</span><span id="line-229"> }</span>
+<span class="source-line-no">230</span><span id="line-230"> table2.close();</span>
+<span class="source-line-no">231</span><span id="line-231"></span>
+<span class="source-line-no">232</span><span id="line-232"> // First compaction for Table 1</span>
+<span class="source-line-no">233</span><span id="line-233"> long compactionTime1 = System.currentTimeMillis();</span>
+<span class="source-line-no">234</span><span id="line-234"> utility.getAdmin().majorCompact(table1Name);</span>
+<span class="source-line-no">235</span><span id="line-235"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
+<span class="source-line-no">236</span><span id="line-236"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table1Name)</span>
+<span class="source-line-no">237</span><span id="line-237"> > compactionTime1);</span>
+<span class="source-line-no">238</span><span id="line-238"></span>
+<span class="source-line-no">239</span><span id="line-239"> // getCompactBoundariesForMajor always offers the cutOffTimestamp boundary now, so the first</span>
+<span class="source-line-no">240</span><span id="line-240"> // major compaction already splits the old and recent cells into separate tiers.</span>
+<span class="source-line-no">241</span><span id="line-241"> assertEquals(2, utility.getNumHFiles(table1Name, FAMILY));</span>
+<span class="source-line-no">242</span><span id="line-242"></span>
+<span class="source-line-no">243</span><span id="line-243"> utility.getMiniHBaseCluster().getRegions(table1Name).get(0).getStore(FAMILY).getStorefiles()</span>
+<span class="source-line-no">244</span><span id="line-244"> .forEach(file -> {</span>
+<span class="source-line-no">245</span><span id="line-245"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
+<span class="source-line-no">246</span><span id="line-246"> assertNotNull(rangeBytes);</span>
+<span class="source-line-no">247</span><span id="line-247"> try {</span>
+<span class="source-line-no">248</span><span id="line-248"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
+<span class="source-line-no">249</span><span id="line-249"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
+<span class="source-line-no">250</span><span id="line-250"> } catch (IOException e) {</span>
+<span class="source-line-no">251</span><span id="line-251"> fail(e.getMessage());</span>
+<span class="source-line-no">252</span><span id="line-252"> }</span>
+<span class="source-line-no">253</span><span id="line-253"> });</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> // Second compaction for Table 1</span>
+<span class="source-line-no">256</span><span id="line-256"> long secondCompactionTime1 = System.currentTimeMillis();</span>
+<span class="source-line-no">257</span><span id="line-257"> utility.getAdmin().majorCompact(table1Name);</span>
+<span class="source-line-no">258</span><span id="line-258"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
+<span class="source-line-no">259</span><span id="line-259"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table1Name)</span>
+<span class="source-line-no">260</span><span id="line-260"> > secondCompactionTime1);</span>
+<span class="source-line-no">261</span><span id="line-261"></span>
+<span class="source-line-no">262</span><span id="line-262"> assertEquals(2, utility.getNumHFiles(table1Name, FAMILY));</span>
<span class="source-line-no">263</span><span id="line-263"></span>
-<span class="source-line-no">264</span><span id="line-264"> assertEquals(2, utility.getNumHFiles(table1Name, FAMILY));</span>
-<span class="source-line-no">265</span><span id="line-265"></span>
-<span class="source-line-no">266</span><span id="line-266"> utility.getMiniHBaseCluster().getRegions(table1Name).get(0).getStore(FAMILY).getStorefiles()</span>
-<span class="source-line-no">267</span><span id="line-267"> .forEach(file -> {</span>
-<span class="source-line-no">268</span><span id="line-268"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">269</span><span id="line-269"> assertNotNull(rangeBytes);</span>
-<span class="source-line-no">270</span><span id="line-270"> try {</span>
-<span class="source-line-no">271</span><span id="line-271"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
-<span class="source-line-no">272</span><span id="line-272"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
-<span class="source-line-no">273</span><span id="line-273"> } catch (IOException e) {</span>
-<span class="source-line-no">274</span><span id="line-274"> fail(e.getMessage());</span>
-<span class="source-line-no">275</span><span id="line-275"> }</span>
-<span class="source-line-no">276</span><span id="line-276"> });</span>
-<span class="source-line-no">277</span><span id="line-277"></span>
-<span class="source-line-no">278</span><span id="line-278"> // First compaction for Table 2</span>
-<span class="source-line-no">279</span><span id="line-279"> long compactionTime2 = System.currentTimeMillis();</span>
-<span class="source-line-no">280</span><span id="line-280"> utility.getAdmin().majorCompact(table2Name);</span>
-<span class="source-line-no">281</span><span id="line-281"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
-<span class="source-line-no">282</span><span id="line-282"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table2Name)</span>
-<span class="source-line-no">283</span><span id="line-283"> > compactionTime2);</span>
-<span class="source-line-no">284</span><span id="line-284"></span>
-<span class="source-line-no">285</span><span id="line-285"> assertEquals(1, utility.getNumHFiles(table2Name, FAMILY));</span>
+<span class="source-line-no">264</span><span id="line-264"> utility.getMiniHBaseCluster().getRegions(table1Name).get(0).getStore(FAMILY).getStorefiles()</span>
+<span class="source-line-no">265</span><span id="line-265"> .forEach(file -> {</span>
+<span class="source-line-no">266</span><span id="line-266"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
+<span class="source-line-no">267</span><span id="line-267"> assertNotNull(rangeBytes);</span>
+<span class="source-line-no">268</span><span id="line-268"> try {</span>
+<span class="source-line-no">269</span><span id="line-269"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
+<span class="source-line-no">270</span><span id="line-270"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
+<span class="source-line-no">271</span><span id="line-271"> } catch (IOException e) {</span>
+<span class="source-line-no">272</span><span id="line-272"> fail(e.getMessage());</span>
+<span class="source-line-no">273</span><span id="line-273"> }</span>
+<span class="source-line-no">274</span><span id="line-274"> });</span>
+<span class="source-line-no">275</span><span id="line-275"></span>
+<span class="source-line-no">276</span><span id="line-276"> // First compaction for Table 2</span>
+<span class="source-line-no">277</span><span id="line-277"> long compactionTime2 = System.currentTimeMillis();</span>
+<span class="source-line-no">278</span><span id="line-278"> utility.getAdmin().majorCompact(table2Name);</span>
+<span class="source-line-no">279</span><span id="line-279"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
+<span class="source-line-no">280</span><span id="line-280"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table2Name)</span>
+<span class="source-line-no">281</span><span id="line-281"> > compactionTime2);</span>
+<span class="source-line-no">282</span><span id="line-282"></span>
+<span class="source-line-no">283</span><span id="line-283"> // getCompactBoundariesForMajor always offers the cutOffTimestamp boundary now, so the first</span>
+<span class="source-line-no">284</span><span id="line-284"> // major compaction already splits the old and recent cells into separate tiers.</span>
+<span class="source-line-no">285</span><span id="line-285"> assertEquals(2, utility.getNumHFiles(table2Name, FAMILY));</span>
<span class="source-line-no">286</span><span id="line-286"></span>
<span class="source-line-no">287</span><span id="line-287"> utility.getMiniHBaseCluster().getRegions(table2Name).get(0).getStore(FAMILY).getStorefiles()</span>
<span class="source-line-no">288</span><span id="line-288"> .forEach(file -> {</span>
@@ -303,72 +303,67 @@
<span class="source-line-no">290</span><span id="line-290"> assertNotNull(rangeBytes);</span>
<span class="source-line-no">291</span><span id="line-291"> try {</span>
<span class="source-line-no">292</span><span id="line-292"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
-<span class="source-line-no">293</span><span id="line-293"> // Table 2 uses yyyy-MM-dd HH:mm:ss format, so we need to account for second precision</span>
-<span class="source-line-no">294</span><span id="line-294"> // The parsed time will be truncated to second precision (no milliseconds)</span>
-<span class="source-line-no">295</span><span id="line-295"> long expectedOldTime = (oldTime / 1000) * 1000;</span>
-<span class="source-line-no">296</span><span id="line-296"> long expectedRecentTime = (recordTime / 1000) * 1000;</span>
-<span class="source-line-no">297</span><span id="line-297"> assertEquals(expectedOldTime, timeRangeTracker.getMin());</span>
-<span class="source-line-no">298</span><span id="line-298"> assertEquals(expectedRecentTime, timeRangeTracker.getMax());</span>
-<span class="source-line-no">299</span><span id="line-299"> } catch (IOException e) {</span>
-<span class="source-line-no">300</span><span id="line-300"> fail(e.getMessage());</span>
-<span class="source-line-no">301</span><span id="line-301"> }</span>
-<span class="source-line-no">302</span><span id="line-302"> });</span>
-<span class="source-line-no">303</span><span id="line-303"></span>
-<span class="source-line-no">304</span><span id="line-304"> // Second compaction for Table 2</span>
-<span class="source-line-no">305</span><span id="line-305"> long secondCompactionTime2 = System.currentTimeMillis();</span>
-<span class="source-line-no">306</span><span id="line-306"> utility.getAdmin().majorCompact(table2Name);</span>
-<span class="source-line-no">307</span><span id="line-307"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
-<span class="source-line-no">308</span><span id="line-308"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table2Name)</span>
-<span class="source-line-no">309</span><span id="line-309"> > secondCompactionTime2);</span>
-<span class="source-line-no">310</span><span id="line-310"></span>
-<span class="source-line-no">311</span><span id="line-311"> assertEquals(2, utility.getNumHFiles(table2Name, FAMILY));</span>
-<span class="source-line-no">312</span><span id="line-312"></span>
-<span class="source-line-no">313</span><span id="line-313"> utility.getMiniHBaseCluster().getRegions(table2Name).get(0).getStore(FAMILY).getStorefiles()</span>
-<span class="source-line-no">314</span><span id="line-314"> .forEach(file -> {</span>
-<span class="source-line-no">315</span><span id="line-315"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
-<span class="source-line-no">316</span><span id="line-316"> assertNotNull(rangeBytes);</span>
-<span class="source-line-no">317</span><span id="line-317"> try {</span>
-<span class="source-line-no">318</span><span id="line-318"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
-<span class="source-line-no">319</span><span id="line-319"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
-<span class="source-line-no">320</span><span id="line-320"> } catch (IOException e) {</span>
-<span class="source-line-no">321</span><span id="line-321"> fail(e.getMessage());</span>
-<span class="source-line-no">322</span><span id="line-322"> }</span>
-<span class="source-line-no">323</span><span id="line-323"> });</span>
-<span class="source-line-no">324</span><span id="line-324"> }</span>
-<span class="source-line-no">325</span><span id="line-325"></span>
-<span class="source-line-no">326</span><span id="line-326"> @Test</span>
-<span class="source-line-no">327</span><span id="line-327"> public void testShouldPerformMajorCompactionWhenTimeRangeMetadataIsNull() throws Exception {</span>
-<span class="source-line-no">328</span><span id="line-328"> ColumnFamilyDescriptorBuilder clmBuilder = ColumnFamilyDescriptorBuilder.newBuilder(FAMILY);</span>
-<span class="source-line-no">329</span><span id="line-329"> clmBuilder.setValue("hbase.hstore.engine.class", CustomTieredStoreEngine.class.getName());</span>
-<span class="source-line-no">330</span><span id="line-330"> clmBuilder.setValue(TIERING_CELL_QUALIFIER, "date");</span>
-<span class="source-line-no">331</span><span id="line-331"> TableName tableName = TableName.valueOf("testShouldCompactWhenNoTimeRangeMetadata");</span>
-<span class="source-line-no">332</span><span id="line-332"> TableDescriptorBuilder tblBuilder = TableDescriptorBuilder.newBuilder(tableName);</span>
-<span class="source-line-no">333</span><span id="line-333"> tblBuilder.setColumnFamily(clmBuilder.build());</span>
-<span class="source-line-no">334</span><span id="line-334"> utility.getAdmin().createTable(tblBuilder.build());</span>
-<span class="source-line-no">335</span><span id="line-335"> utility.waitTableAvailable(tableName);</span>
-<span class="source-line-no">336</span><span id="line-336"> Connection connection = utility.getConnection();</span>
-<span class="source-line-no">337</span><span id="line-337"> Table table = connection.getTable(tableName);</span>
-<span class="source-line-no">338</span><span id="line-338"> long recordTime = System.currentTimeMillis();</span>
-<span class="source-line-no">339</span><span id="line-339"> // Write data and flush to create store files without CUSTOM_TIERING_TIME_RANGE metadata</span>
-<span class="source-line-no">340</span><span id="line-340"> for (int i = 0; i < 2; i++) {</span>
-<span class="source-line-no">341</span><span id="line-341"> Put put = new Put(Bytes.toBytes(i));</span>
-<span class="source-line-no">342</span><span id="line-342"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + i));</span>
-<span class="source-line-no">343</span><span id="line-343"> put.addColumn(FAMILY, Bytes.toBytes("date"), Bytes.toBytes(recordTime));</span>
-<span class="source-line-no">344</span><span id="line-344"> table.put(put);</span>
-<span class="source-line-no">345</span><span id="line-345"> utility.flush(tableName);</span>
-<span class="source-line-no">346</span><span id="line-346"> }</span>
-<span class="source-line-no">347</span><span id="line-347"> table.close();</span>
-<span class="source-line-no">348</span><span id="line-348"></span>
-<span class="source-line-no">349</span><span id="line-349"> HStore store =</span>
-<span class="source-line-no">350</span><span id="line-350"> (HStore) utility.getMiniHBaseCluster().getRegions(tableName).get(0).getStore(FAMILY);</span>
-<span class="source-line-no">351</span><span id="line-351"> // Verify that flushed files do not have CUSTOM_TIERING_TIME_RANGE metadata</span>
-<span class="source-line-no">352</span><span id="line-352"> for (HStoreFile sf : store.getStorefiles()) {</span>
-<span class="source-line-no">353</span><span id="line-353"> assertNull(sf.getMetadataValue(CUSTOM_TIERING_TIME_RANGE));</span>
-<span class="source-line-no">354</span><span id="line-354"> }</span>
-<span class="source-line-no">355</span><span id="line-355"> // shouldPerformMajorCompaction must return true due to null timeRangeBytes</span>
-<span class="source-line-no">356</span><span id="line-356"> assertTrue(store.shouldPerformMajorCompaction());</span>
-<span class="source-line-no">357</span><span id="line-357"> }</span>
-<span class="source-line-no">358</span><span id="line-358">}</span>
+<span class="source-line-no">293</span><span id="line-293"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
+<span class="source-line-no">294</span><span id="line-294"> } catch (IOException e) {</span>
+<span class="source-line-no">295</span><span id="line-295"> fail(e.getMessage());</span>
+<span class="source-line-no">296</span><span id="line-296"> }</span>
+<span class="source-line-no">297</span><span id="line-297"> });</span>
+<span class="source-line-no">298</span><span id="line-298"></span>
+<span class="source-line-no">299</span><span id="line-299"> // Second compaction for Table 2</span>
+<span class="source-line-no">300</span><span id="line-300"> long secondCompactionTime2 = System.currentTimeMillis();</span>
+<span class="source-line-no">301</span><span id="line-301"> utility.getAdmin().majorCompact(table2Name);</span>
+<span class="source-line-no">302</span><span id="line-302"> Waiter.waitFor(utility.getConfiguration(), 5000,</span>
+<span class="source-line-no">303</span><span id="line-303"> () -> utility.getMiniHBaseCluster().getMaster().getLastMajorCompactionTimestamp(table2Name)</span>
+<span class="source-line-no">304</span><span id="line-304"> > secondCompactionTime2);</span>
+<span class="source-line-no">305</span><span id="line-305"></span>
+<span class="source-line-no">306</span><span id="line-306"> assertEquals(2, utility.getNumHFiles(table2Name, FAMILY));</span>
+<span class="source-line-no">307</span><span id="line-307"></span>
+<span class="source-line-no">308</span><span id="line-308"> utility.getMiniHBaseCluster().getRegions(table2Name).get(0).getStore(FAMILY).getStorefiles()</span>
+<span class="source-line-no">309</span><span id="line-309"> .forEach(file -> {</span>
+<span class="source-line-no">310</span><span id="line-310"> byte[] rangeBytes = file.getMetadataValue(CUSTOM_TIERING_TIME_RANGE);</span>
+<span class="source-line-no">311</span><span id="line-311"> assertNotNull(rangeBytes);</span>
+<span class="source-line-no">312</span><span id="line-312"> try {</span>
+<span class="source-line-no">313</span><span id="line-313"> TimeRangeTracker timeRangeTracker = TimeRangeTracker.parseFrom(rangeBytes);</span>
+<span class="source-line-no">314</span><span id="line-314"> assertEquals(timeRangeTracker.getMin(), timeRangeTracker.getMax());</span>
+<span class="source-line-no">315</span><span id="line-315"> } catch (IOException e) {</span>
+<span class="source-line-no">316</span><span id="line-316"> fail(e.getMessage());</span>
+<span class="source-line-no">317</span><span id="line-317"> }</span>
+<span class="source-line-no">318</span><span id="line-318"> });</span>
+<span class="source-line-no">319</span><span id="line-319"> }</span>
+<span class="source-line-no">320</span><span id="line-320"></span>
+<span class="source-line-no">321</span><span id="line-321"> @Test</span>
+<span class="source-line-no">322</span><span id="line-322"> public void testShouldPerformMajorCompactionWhenTimeRangeMetadataIsNull() throws Exception {</span>
+<span class="source-line-no">323</span><span id="line-323"> ColumnFamilyDescriptorBuilder clmBuilder = ColumnFamilyDescriptorBuilder.newBuilder(FAMILY);</span>
+<span class="source-line-no">324</span><span id="line-324"> clmBuilder.setValue("hbase.hstore.engine.class", CustomTieredStoreEngine.class.getName());</span>
+<span class="source-line-no">325</span><span id="line-325"> clmBuilder.setValue(TIERING_CELL_QUALIFIER, "date");</span>
+<span class="source-line-no">326</span><span id="line-326"> TableName tableName = TableName.valueOf("testShouldCompactWhenNoTimeRangeMetadata");</span>
+<span class="source-line-no">327</span><span id="line-327"> TableDescriptorBuilder tblBuilder = TableDescriptorBuilder.newBuilder(tableName);</span>
+<span class="source-line-no">328</span><span id="line-328"> tblBuilder.setColumnFamily(clmBuilder.build());</span>
+<span class="source-line-no">329</span><span id="line-329"> utility.getAdmin().createTable(tblBuilder.build());</span>
+<span class="source-line-no">330</span><span id="line-330"> utility.waitTableAvailable(tableName);</span>
+<span class="source-line-no">331</span><span id="line-331"> Connection connection = utility.getConnection();</span>
+<span class="source-line-no">332</span><span id="line-332"> Table table = connection.getTable(tableName);</span>
+<span class="source-line-no">333</span><span id="line-333"> long recordTime = System.currentTimeMillis();</span>
+<span class="source-line-no">334</span><span id="line-334"> // Write data and flush to create store files without CUSTOM_TIERING_TIME_RANGE metadata</span>
+<span class="source-line-no">335</span><span id="line-335"> for (int i = 0; i < 2; i++) {</span>
+<span class="source-line-no">336</span><span id="line-336"> Put put = new Put(Bytes.toBytes(i));</span>
+<span class="source-line-no">337</span><span id="line-337"> put.addColumn(FAMILY, Bytes.toBytes("val"), Bytes.toBytes("v" + i));</span>
+<span class="source-line-no">338</span><span id="line-338"> put.addColumn(FAMILY, Bytes.toBytes("date"), Bytes.toBytes(recordTime));</span>
+<span class="source-line-no">339</span><span id="line-339"> table.put(put);</span>
+<span class="source-line-no">340</span><span id="line-340"> utility.flush(tableName);</span>
+<span class="source-line-no">341</span><span id="line-341"> }</span>
+<span class="source-line-no">342</span><span id="line-342"> table.close();</span>
+<span class="source-line-no">343</span><span id="line-343"></span>
+<span class="source-line-no">344</span><span id="line-344"> HStore store =</span>
+<span class="source-line-no">345</span><span id="line-345"> (HStore) utility.getMiniHBaseCluster().getRegions(tableName).get(0).getStore(FAMILY);</span>
+<span class="source-line-no">346</span><span id="line-346"> // Verify that flushed files do not have CUSTOM_TIERING_TIME_RANGE metadata</span>
+<span class="source-line-no">347</span><span id="line-347"> for (HStoreFile sf : store.getStorefiles()) {</span>
+<span class="source-line-no">348</span><span id="line-348"> assertNull(sf.getMetadataValue(CUSTOM_TIERING_TIME_RANGE));</span>
+<span class="source-line-no">349</span><span id="line-349"> }</span>
+<span class="source-line-no">350</span><span id="line-350"> // shouldPerformMajorCompaction must return true due to null timeRangeBytes</span>
+<span class="source-line-no">351</span><span id="line-351"> assertTrue(store.shouldPerformMajorCompaction());</span>
+<span class="source-line-no">352</span><span id="line-352"> }</span>
+<span class="source-line-no">353</span><span id="line-353">}</span>