This is an automated email from the ASF dual-hosted git repository.

git-site-role 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 6ee71b3e37a Published site at aa89337fc7357e58fbc487ecc8f7425e9ef41566.
6ee71b3e37a is described below

commit 6ee71b3e37a8a0e7ff5ef7973fd5414f0215c3f5
Author: jenkins <[email protected]>
AuthorDate: Tue Mar 18 14:48:23 2025 +0000

    Published site at aa89337fc7357e58fbc487ecc8f7425e9ef41566.
---
 acid-semantics.html                                |   2 +-
 apache_hbase_reference_guide.pdf                   |   4 +-
 book.html                                          |   2 +-
 bulk-loads.html                                    |   2 +-
 checkstyle-aggregate.html                          |   2 +-
 coc.html                                           |   2 +-
 dependencies.html                                  |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/index-all.html                          |   2 +
 devapidocs/member-search-index.js                  |   2 +-
 .../hadoop/hbase/client/class-use/RegionInfo.html  |  72 +++----
 .../RegionPlanConditional.ValidationLevel.html     |  14 +-
 .../master/balancer/RegionPlanConditional.html     |  67 ++++---
 .../RegionPlanConditional.ValidationLevel.html     | 214 +++++++++++----------
 .../master/balancer/RegionPlanConditional.html     | 214 +++++++++++----------
 downloads.html                                     |   2 +-
 export_control.html                                |   2 +-
 index.html                                         |   2 +-
 issue-management.html                              |   2 +-
 licenses.html                                      |   2 +-
 mailing-lists.html                                 |   2 +-
 metrics.html                                       |   2 +-
 old_news.html                                      |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 poweredbyhbase.html                                |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 pseudo-distributed.html                            |   2 +-
 replication.html                                   |   2 +-
 resources.html                                     |   2 +-
 scm.html                                           |   2 +-
 sponsors.html                                      |   2 +-
 summary.html                                       |   2 +-
 supportingprojects.html                            |   2 +-
 team.html                                          |   2 +-
 38 files changed, 341 insertions(+), 308 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 3703c3f2c2f..67937427058 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -469,7 +469,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 88c089a17a0..e0361b0d527 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 2.0.6, based on Prawn 2.4.0)
 /Producer (Apache HBase Team)
-/ModDate (D:20250317143039+00'00')
-/CreationDate (D:20250317144433+00'00')
+/ModDate (D:20250318143039+00'00')
+/CreationDate (D:20250318144507+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index 14991644362..c3991a58041 100644
--- a/book.html
+++ b/book.html
@@ -49812,7 +49812,7 @@ 
org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 4.0.0-alpha-1-SNAPSHOT<br>
-Last updated 2025-03-17 14:30:39 UTC
+Last updated 2025-03-18 14:30:39 UTC
 </div>
 </div>
 <script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 2d83957fb50..52ed2bc3a03 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -185,7 +185,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 3045526be72..240acaf523f 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -18522,7 +18522,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/coc.html b/coc.html
index 72079a74405..3b3c7ee6bbb 100644
--- a/coc.html
+++ b/coc.html
@@ -253,7 +253,7 @@ email to <a class="externalLink" 
href="mailto:[email protected]";>the priv
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/dependencies.html b/dependencies.html
index f05613fcd8c..7cde6365099 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -318,7 +318,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 0669be7f826..a478f187d56 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1111,7 +1111,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/dependency-info.html b/dependency-info.html
index 022f5aa5c88..b66a00a028b 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -200,7 +200,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/dependency-management.html b/dependency-management.html
index 97de1995f1f..29c1edd8b16 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1748,7 +1748,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 1459ba4dc9d..b701ccddf8f 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -59816,6 +59816,8 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Returns store services for this region, to access services 
required by store level needs</div>
 </dd>
+<dt><a 
href="org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#getRegionsFromIndex(int,int%5B%5D%5B%5D)"
 class="member-name-link">getRegionsFromIndex(int, int[][])</a> - Method in 
class org.apache.hadoop.hbase.master.balancer.<a 
href="org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html" 
title="class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional</a></dt>
+<dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/util/HbckTableInfo.html#getRegionsFromMeta(java.util.TreeMap)"
 class="member-name-link">getRegionsFromMeta(TreeMap&lt;String, 
HbckRegionInfo&gt;)</a> - Method in class org.apache.hadoop.hbase.util.<a 
href="org/apache/hadoop/hbase/util/HbckTableInfo.html" title="class in 
org.apache.hadoop.hbase.util">HbckTableInfo</a></dt>
 <dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/client/RegionStatesCount.html#getRegionsInTransition()"
 class="member-name-link">getRegionsInTransition()</a> - Method in class 
org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/RegionStatesCount.html" title="class in 
org.apache.hadoop.hbase.client">RegionStatesCount</a></dt>
diff --git a/devapidocs/member-search-index.js 
b/devapidocs/member-search-index.js
index e5ea6a19a7f..7d367a93940 100644
--- a/devapidocs/member-search-index.js
+++ b/devapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = 
[{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache.
 [...]
\ No newline at end of file
+memberSearchIndex = 
[{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache.
 [...]
\ No newline at end of file
diff --git 
a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html 
b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index e1f2e962f10..865e3915196 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -3255,69 +3255,73 @@ R&gt;&nbsp;void</code></div>
 <div class="col-first even-row-color"><code>private <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionI [...]
 <div class="col-second even-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#getRegionAssignmentsByServer(java.util.Collection)"
 class="member-name-link">getRegionAssignmentsByServer</a><wbr>(<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="external-link">Collection</a>&lt;<a href="../RegionInfo.html" 
title="interface in [...]
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>(package private) <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/NavigableMap.html";
 title="class or interface in java.util" 
class="external-link">NavigableMap</a>&lt;<a 
href="../../master/balancer/ServerAndLoad.html" title="class in 
org.apache.hadoop.hbase.master.balancer">ServerAndLoad</a>,<wbr><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html";
 title="class or interface in [...]
-<div class="col-second odd-row-color"><span 
class="type-name-label">ClusterLoadState.</span><code><a 
href="../../master/balancer/ClusterLoadState.html#getServersByLoad()" 
class="member-name-link">getServersByLoad</a>()</code></div>
+<div class="col-first odd-row-color"><code>private <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></div>
+<div class="col-second odd-row-color"><span 
class="type-name-label">RegionPlanConditional.</span><code><a 
href="../../master/balancer/RegionPlanConditional.html#getRegionsFromIndex(int,int%5B%5D%5B%5D)"
 class="member-name-link">getRegionsFromIndex</a><wbr>(int&nbsp;index,
+ int[][]&nbsp;regionsPerIndex)</code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
-<div class="col-second even-row-color"><span 
class="type-name-label">ClusterInfoProvider.</span><code><a 
href="../../master/balancer/ClusterInfoProvider.html#getSnapShotOfAssignment(java.util.Collection)"
 class="member-name-link">getSnapShotOfAssignment</a><wbr>(<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="external-link">Collection</a>&lt;<a href="../RegionInfo.html" 
title="interface in org [...]
-<div class="col-last even-row-color">
+<div class="col-first even-row-color"><code>(package private) <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/NavigableMap.html";
 title="class or interface in java.util" 
class="external-link">NavigableMap</a>&lt;<a 
href="../../master/balancer/ServerAndLoad.html" title="class in 
org.apache.hadoop.hbase.master.balancer">ServerAndLoad</a>,<wbr><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html";
 title="class or interface i [...]
+<div class="col-second even-row-color"><span 
class="type-name-label">ClusterLoadState.</span><code><a 
href="../../master/balancer/ClusterLoadState.html#getServersByLoad()" 
class="member-name-link">getServersByLoad</a>()</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
+<div class="col-second odd-row-color"><span 
class="type-name-label">ClusterInfoProvider.</span><code><a 
href="../../master/balancer/ClusterInfoProvider.html#getSnapShotOfAssignment(java.util.Collection)"
 class="member-name-link">getSnapShotOfAssignment</a><wbr>(<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="external-link">Collection</a>&lt;<a href="../RegionInfo.html" 
title="interface in org. [...]
+<div class="col-last odd-row-color">
 <div class="block">Get a snapshot of the current assignment status.</div>
 </div>
-<div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
-<div class="col-second odd-row-color"><span 
class="type-name-label">MasterClusterInfoProvider.</span><code><a 
href="../../master/balancer/MasterClusterInfoProvider.html#getSnapShotOfAssignment(java.util.Collection)"
 class="member-name-link">getSnapShotOfAssignment</a><wbr>(<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="external-link">Collection</a>&lt;<a href="../RegionInfo.html" 
title="inter [...]
-<div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
-<div class="col-second even-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#retainAssignment(java.util.Map,java.util.List)"
 class="member-name-link">retainAssignment</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.hadoop.hbase.clien 
[...]
+<div class="col-second even-row-color"><span 
class="type-name-label">MasterClusterInfoProvider.</span><code><a 
href="../../master/balancer/MasterClusterInfoProvider.html#getSnapShotOfAssignment(java.util.Collection)"
 class="member-name-link">getSnapShotOfAssignment</a><wbr>(<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="external-link">Collection</a>&lt;<a href="../RegionInfo.html" 
title="inte [...]
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
+<div class="col-second odd-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#retainAssignment(java.util.Map,java.util.List)"
 class="member-name-link">retainAssignment</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.hadoop.hbase.client 
[...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
-<div class="col-last even-row-color">
+<div class="col-last odd-row-color">
 <div class="block">Generates a bulk assignment startup plan, attempting to 
reuse the existing assignment
  information from META, but adjusting for the specified list of 
available/online servers
  available for assignment.</div>
 </div>
-<div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
-<div class="col-second odd-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#retainAssignment(java.util.Map,java.util.List)"
 class="member-name-link">retainAssignment</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.h [...]
+<div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
+<div class="col-second even-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#retainAssignment(java.util.Map,java.util.List)"
 class="member-name-link">retainAssignment</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache. [...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
-<div class="col-last odd-row-color">
+<div class="col-last even-row-color">
 <div class="block">Reuse BaseLoadBalancer's retainAssignment, but generate 
favored nodes when its missing.</div>
 </div>
-<div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
-<div class="col-second even-row-color"><span 
class="type-name-label">MaintenanceLoadBalancer.</span><code><a 
href="../../master/balancer/MaintenanceLoadBalancer.html#retainAssignment(java.util.Map,java.util.List)"
 class="member-name-link">retainAssignment</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.hado [...]
- <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
-<div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
-<div class="col-second odd-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#roundRobinAssignment(java.util.List,java.util.List)"
 class="member-name-link">roundRobinAssignment</a><wbr>(<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>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.hadoop.h [...]
+<div class="col-second odd-row-color"><span 
class="type-name-label">MaintenanceLoadBalancer.</span><code><a 
href="../../master/balancer/MaintenanceLoadBalancer.html#retainAssignment(java.util.Map,java.util.List)"
 class="member-name-link">retainAssignment</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.hadoo [...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
-<div class="col-last odd-row-color">
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
+<div class="col-second even-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#roundRobinAssignment(java.util.List,java.util.List)"
 class="member-name-link">roundRobinAssignment</a><wbr>(<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>&lt;<a 
href="../RegionInfo.html" title="interface in org.apache.hadoop. [...]
+ <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
+<div class="col-last even-row-color">
 <div class="block">Generates a bulk assignment plan to be used on cluster 
startup using a simple round-robin
  assignment.</div>
 </div>
-<div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
-<div class="col-second even-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#roundRobinAssignment(java.util.List,java.util.List)"
 class="member-name-link">roundRobinAssignment</a><wbr>(<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>&lt;<a 
href="../RegionInfo.html" title="interface in  [...]
+<div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
+<div class="col-second odd-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#roundRobinAssignment(java.util.List,java.util.List)"
 class="member-name-link">roundRobinAssignment</a><wbr>(<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>&lt;<a 
href="../RegionInfo.html" title="interface in o [...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
-<div class="col-last even-row-color">
+<div class="col-last odd-row-color">
 <div class="block">Round robin assignment: Segregate the regions into two 
types: 1.</div>
 </div>
-<div class="col-first odd-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html" [...]
-<div class="col-second odd-row-color"><span 
class="type-name-label">MaintenanceLoadBalancer.</span><code><a 
href="../../master/balancer/MaintenanceLoadBalancer.html#roundRobinAssignment(java.util.List,java.util.List)"
 class="member-name-link">roundRobinAssignment</a><wbr>(<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>&lt;<a 
href="../RegionInfo.html" title="interface in org.a [...]
+<div class="col-first even-row-color"><code><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../RegionInfo.html [...]
+<div class="col-second even-row-color"><span 
class="type-name-label">MaintenanceLoadBalancer.</span><code><a 
href="../../master/balancer/MaintenanceLoadBalancer.html#roundRobinAssignment(java.util.List,java.util.List)"
 class="member-name-link">roundRobinAssignment</a><wbr>(<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>&lt;<a 
href="../RegionInfo.html" title="interface in org. [...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>private <a 
href="../../util/Pair.html" title="class in 
org.apache.hadoop.hbase.util">Pair</a>&lt;<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html";
 titl [...]
-<div class="col-second even-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#segregateRegionsAndAssignRegionsWithFavoredNodes(java.util.Collection,java.util.List)"
 
class="member-name-link">segregateRegionsAndAssignRegionsWithFavoredNodes</a><wbr>(<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="external [...]
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>private <a 
href="../../util/Pair.html" title="class in 
org.apache.hadoop.hbase.util">Pair</a>&lt;<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html";
 title [...]
+<div class="col-second odd-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#segregateRegionsAndAssignRegionsWithFavoredNodes(java.util.Collection,java.util.List)"
 
class="member-name-link">segregateRegionsAndAssignRegionsWithFavoredNodes</a><wbr>(<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="external- [...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;onlineServers)</code></div>
-<div class="col-last even-row-color">
+<div class="col-last odd-row-color">
 <div class="block">Return a pair - one with assignments when favored nodes are 
present and another with regions
  without favored nodes.</div>
 </div>
-<div class="col-first odd-row-color"><code>private <a 
href="../../util/Pair.html" title="class in 
org.apache.hadoop.hbase.util">Pair</a>&lt;<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html";
 title [...]
-<div class="col-second odd-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#segregateRegionsAndAssignRegionsWithFavoredNodes(java.util.Collection,java.util.List)"
 
class="member-name-link">segregateRegionsAndAssignRegionsWithFavoredNodes</a><wbr>(<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="external- [...]
+<div class="col-first even-row-color"><code>private <a 
href="../../util/Pair.html" title="class in 
org.apache.hadoop.hbase.util">Pair</a>&lt;<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html";
 titl [...]
+<div class="col-second even-row-color"><span 
class="type-name-label">FavoredStochasticBalancer.</span><code><a 
href="../../master/balancer/FavoredStochasticBalancer.html#segregateRegionsAndAssignRegionsWithFavoredNodes(java.util.Collection,java.util.List)"
 
class="member-name-link">segregateRegionsAndAssignRegionsWithFavoredNodes</a><wbr>(<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="external [...]
  <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>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;onlineServers)</code></div>
-<div class="col-last odd-row-color">
+<div class="col-last even-row-color">
 <div class="block">Return a pair - one with assignments when favored nodes are 
present and another with regions
  without favored nodes.</div>
 </div>
-<div class="col-first even-row-color"><code>protected final <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href=".. [...]
-<div class="col-second even-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#toEnsumbleTableLoad(java.util.Map)"
 class="member-name-link">toEnsumbleTableLoad</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../TableName.html" title="class in 
org.apache.hadoop.hbase">TableName</a>,< [...]
-<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>protected final <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../ServerName.html" title="class in 
org.apache.hadoop.hbase">ServerName</a>,<wbr><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>&lt;<a 
href="../ [...]
+<div class="col-second odd-row-color"><span 
class="type-name-label">BaseLoadBalancer.</span><code><a 
href="../../master/balancer/BaseLoadBalancer.html#toEnsumbleTableLoad(java.util.Map)"
 class="member-name-link">toEnsumbleTableLoad</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html";
 title="class or interface in java.util" class="external-link">Map</a>&lt;<a 
href="../../TableName.html" title="class in 
org.apache.hadoop.hbase">TableName</a>,<w [...]
+<div class="col-last odd-row-color">&nbsp;</div>
 </div>
 <div class="caption"><span>Methods in <a 
href="../../master/balancer/package-summary.html">org.apache.hadoop.hbase.master.balancer</a>
 with parameters of type <a href="../RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a></span></div>
 <div class="summary-table three-column-summary">
diff --git 
a/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
 
b/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
index 7abd78bb8b5..c60f198b7ae 100644
--- 
a/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
+++ 
b/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
@@ -87,7 +87,7 @@ loadScripts(document, 'script');</script>
 <dd><a href="RegionPlanConditional.html" title="class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional</a></dd>
 </dl>
 <hr>
-<div class="type-signature"><span class="modifiers">public static enum 
</span><span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-43">RegionPlanConditional.ValidationLevel</a></span>
+<div class="type-signature"><span class="modifiers">public static enum 
</span><span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-44">RegionPlanConditional.ValidationLevel</a></span>
 <span class="extends-implements">extends <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html";
 title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a>&gt;</span></div>
 </section>
 <section class="summary">
@@ -184,21 +184,21 @@ the order they are declared.</div>
 <li>
 <section class="detail" id="SERVER">
 <h3>SERVER</h3>
-<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-47">SERVER</a></span></div>
+<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-48">SERVER</a></span></div>
 <div class="block">Just check the server.</div>
 </section>
 </li>
 <li>
 <section class="detail" id="SERVER_HOST">
 <h3>SERVER_HOST</h3>
-<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-51">SERVER_HOST</a></span></div>
+<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-52">SERVER_HOST</a></span></div>
 <div class="block">Check the server and the host.</div>
 </section>
 </li>
 <li>
 <section class="detail" id="SERVER_HOST_RACK">
 <h3>SERVER_HOST_RACK</h3>
-<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-55">SERVER_HOST_RACK</a></span></div>
+<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-56">SERVER_HOST_RACK</a></span></div>
 <div class="block">Check the server, host, and rack.</div>
 </section>
 </li>
@@ -213,7 +213,7 @@ the order they are declared.</div>
 <li>
 <section class="detail" id="&lt;init&gt;()">
 <h3>ValidationLevel</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-43">ValidationLevel</a></span>()</div>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-44">ValidationLevel</a></span>()</div>
 </section>
 </li>
 </ul>
@@ -227,7 +227,7 @@ the order they are declared.</div>
 <li>
 <section class="detail" id="values()">
 <h3>values</h3>
-<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a>[]</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-43">values</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a>[]</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-44">values</a></span>()</div>
 <div class="block">Returns an array containing the constants of this enum 
class, in
 the order they are declared.</div>
 <dl class="notes">
@@ -239,7 +239,7 @@ the order they are declared.</div>
 <li>
 <section class="detail" id="valueOf(java.lang.String)">
 <h3>valueOf</h3>
-<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-43">valueOf</a></span><wbr><span
 class="parameters">(<a href="http [...]
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html#line-44">valueOf</a></span><wbr><span
 class="parameters">(<a href="http [...]
 <div class="block">Returns the enum constant of this class with the specified 
name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this class.  (Extraneous whitespace characters are 
diff --git 
a/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html 
b/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
index 9c359a30fe5..932a44ba326 100644
--- 
a/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
+++ 
b/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
@@ -83,7 +83,7 @@ loadScripts(document, 'script');</script>
 <hr>
 <div class="type-signature"><span 
class="annotations">@LimitedPrivate("Configuration")
 @Evolving
-</span><span class="modifiers">public abstract class </span><span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-33">RegionPlanConditional</a></span>
+</span><span class="modifiers">public abstract class </span><span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-34">RegionPlanConditional</a></span>
 <span class="extends-implements">extends <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html";
 title="class or interface in java.lang" 
class="external-link">Object</a></span></div>
 </section>
 <section class="summary">
@@ -151,31 +151,35 @@ loadScripts(document, 'script');</script>
 <div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3">
 <div class="block">Get the candidate generator(s) for this conditional.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code>(package private) 
abstract <a href="RegionPlanConditional.ValidationLevel.html" title="enum class 
in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></code></div>
-<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code><a 
href="#getValidationLevel()" 
class="member-name-link">getValidationLevel</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3">
+<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>private <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#getRegionsFromIndex(int,int%5B%5D%5B%5D)" 
class="member-name-link">getRegionsFromIndex</a><wbr>(int&nbsp;index,
+ int[][]&nbsp;regionsPerIndex)</code></div>
+<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code>(package private) 
abstract <a href="RegionPlanConditional.ValidationLevel.html" title="enum class 
in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code><a 
href="#getValidationLevel()" 
class="member-name-link">getValidationLevel</a>()</code></div>
+<div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3">
 <div class="block">Returns a <a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer"><code>RegionPlanConditional.ValidationLevel</code></a>
 that is appropriate for this conditional.</div>
 </div>
-<div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
boolean</code></div>
-<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#isViolating(org.apache.hadoop.hbase.master.RegionPlan)" 
class="member-name-link">isViolating</a><wbr>(<a href="../RegionPlan.html" 
title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan)</code></div>
-<div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
boolean</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#isViolating(org.apache.hadoop.hbase.master.RegionPlan)" 
class="member-name-link">isViolating</a><wbr>(<a href="../RegionPlan.html" 
title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan)</code></div>
+<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Check if the conditional is violated by the given region 
plan.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
boolean</code></div>
-<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#isViolatingHost(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)"
 class="member-name-link">isViolatingHost</a><wbr>(<a href="../RegionPlan.html" 
title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
- <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</code></div>
-<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
boolean</code></div>
-<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#isViolatingRack(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)"
 class="member-name-link">isViolatingRack</a><wbr>(<a href="../RegionPlan.html" 
title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#isViolatingHost(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)"
 class="member-name-link">isViolatingHost</a><wbr>(<a href="../RegionPlan.html" 
title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
  <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</code></div>
 <div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code>(package private) 
abstract boolean</code></div>
-<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code><a 
href="#isViolatingServer(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)"
 class="member-name-link">isViolatingServer</a><wbr>(<a 
href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
+<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
boolean</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#isViolatingRack(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)"
 class="member-name-link">isViolatingRack</a><wbr>(<a href="../RegionPlan.html" 
title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
  <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</code></div>
-<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
void</code></div>
-<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#setClusterState(org.apache.hadoop.hbase.master.balancer.BalancerClusterState)"
 class="member-name-link">setClusterState</a><wbr>(<a 
href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</code></div>
-<div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code>(package private) 
abstract boolean</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3"><code><a 
href="#isViolatingServer(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)"
 class="member-name-link">isViolatingServer</a><wbr>(<a 
href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
+ <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</code></div>
+<div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>(package private) 
void</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#setClusterState(org.apache.hadoop.hbase.master.balancer.BalancerClusterState)"
 class="member-name-link">setClusterState</a><wbr>(<a 
href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</code></div>
+<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 </div>
 </div>
 </div>
@@ -196,13 +200,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>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-36">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-37">LOG</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="cluster">
 <h3>cluster</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span class="return-type"><a 
href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-37">cluster</a></span></div>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span class="return-type"><a 
href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-38">cluster</a></span></div>
 </section>
 </li>
 </ul>
@@ -216,7 +220,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" 
id="&lt;init&gt;(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.master.balancer.BalancerClusterState)">
 <h3>RegionPlanConditional</h3>
-<div class="member-signature"><span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-39">RegionPlanConditional</a></span><wbr><span
 class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<div class="member-signature"><span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-40">RegionPlanConditional</a></span><wbr><span
 class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf,
  <a href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</span></div>
 </section>
 </li>
@@ -231,13 +235,13 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" 
id="setClusterState(org.apache.hadoop.hbase.master.balancer.BalancerClusterState)">
 <h3>setClusterState</h3>
-<div class="member-signature"><span class="return-type">void</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-58">setClusterState</a></span><wbr><span
 class="parameters">(<a href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</span></div>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-59">setClusterState</a></span><wbr><span
 class="parameters">(<a href="BalancerClusterState.html" title="class in 
org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="getValidationLevel()">
 <h3>getValidationLevel</h3>
-<div class="member-signature"><span 
class="modifiers">abstract</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-66">getValidationLevel</a></span>()</div>
+<div class="member-signature"><span 
class="modifiers">abstract</span>&nbsp;<span class="return-type"><a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditional.ValidationLevel</a></span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-67">getValidationLevel</a></span>()</div>
 <div class="block">Returns a <a 
href="RegionPlanConditional.ValidationLevel.html" title="enum class in 
org.apache.hadoop.hbase.master.balancer"><code>RegionPlanConditional.ValidationLevel</code></a>
 that is appropriate for this conditional.</div>
 <dl class="notes">
 <dt>Returns:</dt>
@@ -248,7 +252,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="getCandidateGenerators()">
 <h3>getCandidateGenerators</h3>
-<div class="member-signature"><span 
class="modifiers">abstract</span>&nbsp;<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>&lt;<a 
href="RegionPlanConditionalCandidateGenerator.html" title="class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditionalCandidateGenerator</a>&gt;</span>&nbsp;<span
 class="element-name"><a href="../../../../../../ [...]
+<div class="member-signature"><span 
class="modifiers">abstract</span>&nbsp;<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>&lt;<a 
href="RegionPlanConditionalCandidateGenerator.html" title="class in 
org.apache.hadoop.hbase.master.balancer">RegionPlanConditionalCandidateGenerator</a>&gt;</span>&nbsp;<span
 class="element-name"><a href="../../../../../../ [...]
 <div class="block">Get the candidate generator(s) for this conditional. This 
can be useful to provide the balancer
  with hints that will appease your conditional. Your conditionals will be 
triggered in order.</div>
 <dl class="notes">
@@ -260,7 +264,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" 
id="isViolating(org.apache.hadoop.hbase.master.RegionPlan)">
 <h3>isViolating</h3>
-<div class="member-signature"><span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-80">isViolating</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan)</span></div>
+<div class="member-signature"><span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-81">isViolating</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan)</span></div>
 <div class="block">Check if the conditional is violated by the given region 
plan.</div>
 <dl class="notes">
 <dt>Parameters:</dt>
@@ -273,24 +277,31 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" 
id="isViolatingServer(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)">
 <h3>isViolatingServer</h3>
-<div class="member-signature"><span 
class="modifiers">abstract</span>&nbsp;<span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-124">isViolatingServer</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
+<div class="member-signature"><span 
class="modifiers">abstract</span>&nbsp;<span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-123">isViolatingServer</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
  <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" 
id="isViolatingHost(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)">
 <h3>isViolatingHost</h3>
-<div class="member-signature"><span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-126">isViolatingHost</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
+<div class="member-signature"><span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-125">isViolatingHost</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
  <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" 
id="isViolatingRack(org.apache.hadoop.hbase.master.RegionPlan,java.util.Set)">
 <h3>isViolatingRack</h3>
-<div class="member-signature"><span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-130">isViolatingRack</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
+<div class="member-signature"><span 
class="return-type">boolean</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html#line-129">isViolatingRack</a></span><wbr><span
 class="parameters">(<a href="../RegionPlan.html" title="class in 
org.apache.hadoop.hbase.master">RegionPlan</a>&nbsp;regionPlan,
  <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;destinationRegions)</span></div>
 </section>
 </li>
+<li>
+<section class="detail" id="getRegionsFromIndex(int,int[][])">
+<h3>getRegionsFromIndex</h3>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html";
 title="class or interface in java.util" class="external-link">Set</a>&lt;<a 
href="../../client/RegionInfo.html" title="interface in 
org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/Regi 
[...]
+ int[][]&nbsp;regionsPerIndex)</span></div>
+</section>
+</li>
 </ul>
 </section>
 </li>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
index 8330645aa9f..cf814550b27 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.ValidationLevel.html
@@ -31,90 +31,90 @@
 <span class="source-line-no">018</span><span id="line-18">package 
org.apache.hadoop.hbase.master.balancer;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import 
java.util.Arrays;</span>
-<span class="source-line-no">021</span><span id="line-21">import 
java.util.List;</span>
-<span class="source-line-no">022</span><span id="line-22">import 
java.util.Set;</span>
-<span class="source-line-no">023</span><span id="line-23">import 
java.util.stream.Collectors;</span>
-<span class="source-line-no">024</span><span id="line-24">import 
org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">025</span><span id="line-25">import 
org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
-<span class="source-line-no">026</span><span id="line-26">import 
org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">027</span><span id="line-27">import 
org.apache.hadoop.hbase.master.RegionPlan;</span>
-<span class="source-line-no">028</span><span id="line-28">import 
org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">029</span><span id="line-29">import 
org.apache.yetus.audience.InterfaceStability;</span>
-<span class="source-line-no">030</span><span id="line-30">import 
org.slf4j.Logger;</span>
-<span class="source-line-no">031</span><span id="line-31">import 
org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">032</span><span id="line-32"></span>
-<span class="source-line-no">033</span><span 
id="line-33">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)</span>
-<span class="source-line-no">034</span><span 
id="line-34">@InterfaceStability.Evolving</span>
-<span class="source-line-no">035</span><span id="line-35">public abstract 
class RegionPlanConditional {</span>
-<span class="source-line-no">036</span><span id="line-36">  private static 
final Logger LOG = LoggerFactory.getLogger(RegionPlanConditional.class);</span>
-<span class="source-line-no">037</span><span id="line-37">  private 
BalancerClusterState cluster;</span>
-<span class="source-line-no">038</span><span id="line-38"></span>
-<span class="source-line-no">039</span><span id="line-39">  
RegionPlanConditional(Configuration conf, BalancerClusterState cluster) {</span>
-<span class="source-line-no">040</span><span id="line-40">    this.cluster = 
cluster;</span>
-<span class="source-line-no">041</span><span id="line-41">  }</span>
-<span class="source-line-no">042</span><span id="line-42"></span>
-<span class="source-line-no">043</span><span id="line-43">  public enum 
ValidationLevel {</span>
-<span class="source-line-no">044</span><span id="line-44">    /**</span>
-<span class="source-line-no">045</span><span id="line-45">     * Just check 
the server.</span>
-<span class="source-line-no">046</span><span id="line-46">     */</span>
-<span class="source-line-no">047</span><span id="line-47">    SERVER,</span>
-<span class="source-line-no">048</span><span id="line-48">    /**</span>
-<span class="source-line-no">049</span><span id="line-49">     * Check the 
server and the host.</span>
-<span class="source-line-no">050</span><span id="line-50">     */</span>
-<span class="source-line-no">051</span><span id="line-51">    
SERVER_HOST,</span>
-<span class="source-line-no">052</span><span id="line-52">    /**</span>
-<span class="source-line-no">053</span><span id="line-53">     * Check the 
server, host, and rack.</span>
-<span class="source-line-no">054</span><span id="line-54">     */</span>
-<span class="source-line-no">055</span><span id="line-55">    
SERVER_HOST_RACK</span>
-<span class="source-line-no">056</span><span id="line-56">  }</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">  void 
setClusterState(BalancerClusterState cluster) {</span>
-<span class="source-line-no">059</span><span id="line-59">    this.cluster = 
cluster;</span>
-<span class="source-line-no">060</span><span id="line-60">  }</span>
-<span class="source-line-no">061</span><span id="line-61"></span>
-<span class="source-line-no">062</span><span id="line-62">  /**</span>
-<span class="source-line-no">063</span><span id="line-63">   * Returns a 
{@link ValidationLevel} that is appropriate for this conditional.</span>
-<span class="source-line-no">064</span><span id="line-64">   * @return the 
validation level</span>
-<span class="source-line-no">065</span><span id="line-65">   */</span>
-<span class="source-line-no">066</span><span id="line-66">  abstract 
ValidationLevel getValidationLevel();</span>
-<span class="source-line-no">067</span><span id="line-67"></span>
-<span class="source-line-no">068</span><span id="line-68">  /**</span>
-<span class="source-line-no">069</span><span id="line-69">   * Get the 
candidate generator(s) for this conditional. This can be useful to provide the 
balancer</span>
-<span class="source-line-no">070</span><span id="line-70">   * with hints that 
will appease your conditional. Your conditionals will be triggered in 
order.</span>
-<span class="source-line-no">071</span><span id="line-71">   * @return the 
candidate generator for this conditional</span>
-<span class="source-line-no">072</span><span id="line-72">   */</span>
-<span class="source-line-no">073</span><span id="line-73">  abstract 
List&lt;RegionPlanConditionalCandidateGenerator&gt; 
getCandidateGenerators();</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">  /**</span>
-<span class="source-line-no">076</span><span id="line-76">   * Check if the 
conditional is violated by the given region plan.</span>
-<span class="source-line-no">077</span><span id="line-77">   * @param 
regionPlan the region plan to check</span>
-<span class="source-line-no">078</span><span id="line-78">   * @return true if 
the conditional is violated</span>
-<span class="source-line-no">079</span><span id="line-79">   */</span>
-<span class="source-line-no">080</span><span id="line-80">  boolean 
isViolating(RegionPlan regionPlan) {</span>
-<span class="source-line-no">081</span><span id="line-81">    if (regionPlan 
== null) {</span>
-<span class="source-line-no">082</span><span id="line-82">      return 
false;</span>
-<span class="source-line-no">083</span><span id="line-83">    }</span>
-<span class="source-line-no">084</span><span id="line-84">    int 
destinationServerIdx = 
cluster.serversToIndex.get(regionPlan.getDestination().getAddress());</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">    // Check 
Server</span>
-<span class="source-line-no">087</span><span id="line-87">    int[] 
destinationRegionIndices = 
cluster.regionsPerServer[destinationServerIdx];</span>
-<span class="source-line-no">088</span><span id="line-88">    
Set&lt;RegionInfo&gt; serverRegions = 
Arrays.stream(cluster.regionsPerServer[destinationServerIdx])</span>
-<span class="source-line-no">089</span><span id="line-89">      .mapToObj(idx 
-&gt; cluster.regions[idx]).collect(Collectors.toSet());</span>
-<span class="source-line-no">090</span><span id="line-90">    for (int 
regionIdx : destinationRegionIndices) {</span>
-<span class="source-line-no">091</span><span id="line-91">      
serverRegions.add(cluster.regions[regionIdx]);</span>
-<span class="source-line-no">092</span><span id="line-92">    }</span>
-<span class="source-line-no">093</span><span id="line-93">    if 
(isViolatingServer(regionPlan, serverRegions)) {</span>
-<span class="source-line-no">094</span><span id="line-94">      return 
true;</span>
-<span class="source-line-no">095</span><span id="line-95">    }</span>
-<span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">    if 
(getValidationLevel() == ValidationLevel.SERVER) {</span>
-<span class="source-line-no">098</span><span id="line-98">      return 
false;</span>
-<span class="source-line-no">099</span><span id="line-99">    }</span>
-<span class="source-line-no">100</span><span id="line-100"></span>
-<span class="source-line-no">101</span><span id="line-101">    // Check 
Host</span>
-<span class="source-line-no">102</span><span id="line-102">    int hostIdx = 
cluster.serverIndexToHostIndex[destinationServerIdx];</span>
-<span class="source-line-no">103</span><span id="line-103">    
Set&lt;RegionInfo&gt; hostRegions = 
Arrays.stream(cluster.regionsPerHost[hostIdx])</span>
-<span class="source-line-no">104</span><span id="line-104">      .mapToObj(idx 
-&gt; cluster.regions[idx]).collect(Collectors.toSet());</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.util.Collections;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.util.List;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
java.util.Set;</span>
+<span class="source-line-no">024</span><span id="line-24">import 
java.util.stream.Collectors;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
org.apache.hadoop.hbase.master.RegionPlan;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">030</span><span id="line-30">import 
org.apache.yetus.audience.InterfaceStability;</span>
+<span class="source-line-no">031</span><span id="line-31">import 
org.slf4j.Logger;</span>
+<span class="source-line-no">032</span><span id="line-32">import 
org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">033</span><span id="line-33"></span>
+<span class="source-line-no">034</span><span 
id="line-34">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)</span>
+<span class="source-line-no">035</span><span 
id="line-35">@InterfaceStability.Evolving</span>
+<span class="source-line-no">036</span><span id="line-36">public abstract 
class RegionPlanConditional {</span>
+<span class="source-line-no">037</span><span id="line-37">  private static 
final Logger LOG = LoggerFactory.getLogger(RegionPlanConditional.class);</span>
+<span class="source-line-no">038</span><span id="line-38">  private 
BalancerClusterState cluster;</span>
+<span class="source-line-no">039</span><span id="line-39"></span>
+<span class="source-line-no">040</span><span id="line-40">  
RegionPlanConditional(Configuration conf, BalancerClusterState cluster) {</span>
+<span class="source-line-no">041</span><span id="line-41">    this.cluster = 
cluster;</span>
+<span class="source-line-no">042</span><span id="line-42">  }</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">  public enum 
ValidationLevel {</span>
+<span class="source-line-no">045</span><span id="line-45">    /**</span>
+<span class="source-line-no">046</span><span id="line-46">     * Just check 
the server.</span>
+<span class="source-line-no">047</span><span id="line-47">     */</span>
+<span class="source-line-no">048</span><span id="line-48">    SERVER,</span>
+<span class="source-line-no">049</span><span id="line-49">    /**</span>
+<span class="source-line-no">050</span><span id="line-50">     * Check the 
server and the host.</span>
+<span class="source-line-no">051</span><span id="line-51">     */</span>
+<span class="source-line-no">052</span><span id="line-52">    
SERVER_HOST,</span>
+<span class="source-line-no">053</span><span id="line-53">    /**</span>
+<span class="source-line-no">054</span><span id="line-54">     * Check the 
server, host, and rack.</span>
+<span class="source-line-no">055</span><span id="line-55">     */</span>
+<span class="source-line-no">056</span><span id="line-56">    
SERVER_HOST_RACK</span>
+<span class="source-line-no">057</span><span id="line-57">  }</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59">  void 
setClusterState(BalancerClusterState cluster) {</span>
+<span class="source-line-no">060</span><span id="line-60">    this.cluster = 
cluster;</span>
+<span class="source-line-no">061</span><span id="line-61">  }</span>
+<span class="source-line-no">062</span><span id="line-62"></span>
+<span class="source-line-no">063</span><span id="line-63">  /**</span>
+<span class="source-line-no">064</span><span id="line-64">   * Returns a 
{@link ValidationLevel} that is appropriate for this conditional.</span>
+<span class="source-line-no">065</span><span id="line-65">   * @return the 
validation level</span>
+<span class="source-line-no">066</span><span id="line-66">   */</span>
+<span class="source-line-no">067</span><span id="line-67">  abstract 
ValidationLevel getValidationLevel();</span>
+<span class="source-line-no">068</span><span id="line-68"></span>
+<span class="source-line-no">069</span><span id="line-69">  /**</span>
+<span class="source-line-no">070</span><span id="line-70">   * Get the 
candidate generator(s) for this conditional. This can be useful to provide the 
balancer</span>
+<span class="source-line-no">071</span><span id="line-71">   * with hints that 
will appease your conditional. Your conditionals will be triggered in 
order.</span>
+<span class="source-line-no">072</span><span id="line-72">   * @return the 
candidate generator for this conditional</span>
+<span class="source-line-no">073</span><span id="line-73">   */</span>
+<span class="source-line-no">074</span><span id="line-74">  abstract 
List&lt;RegionPlanConditionalCandidateGenerator&gt; 
getCandidateGenerators();</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">  /**</span>
+<span class="source-line-no">077</span><span id="line-77">   * Check if the 
conditional is violated by the given region plan.</span>
+<span class="source-line-no">078</span><span id="line-78">   * @param 
regionPlan the region plan to check</span>
+<span class="source-line-no">079</span><span id="line-79">   * @return true if 
the conditional is violated</span>
+<span class="source-line-no">080</span><span id="line-80">   */</span>
+<span class="source-line-no">081</span><span id="line-81">  boolean 
isViolating(RegionPlan regionPlan) {</span>
+<span class="source-line-no">082</span><span id="line-82">    if (regionPlan 
== null) {</span>
+<span class="source-line-no">083</span><span id="line-83">      return 
false;</span>
+<span class="source-line-no">084</span><span id="line-84">    }</span>
+<span class="source-line-no">085</span><span id="line-85">    int 
destinationServerIdx = 
cluster.serversToIndex.get(regionPlan.getDestination().getAddress());</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">    // Check 
Server</span>
+<span class="source-line-no">088</span><span id="line-88">    int[] 
destinationRegionIndices = 
cluster.regionsPerServer[destinationServerIdx];</span>
+<span class="source-line-no">089</span><span id="line-89">    
Set&lt;RegionInfo&gt; serverRegions =</span>
+<span class="source-line-no">090</span><span id="line-90">      
getRegionsFromIndex(destinationServerIdx, cluster.regionsPerServer);</span>
+<span class="source-line-no">091</span><span id="line-91">    for (int 
regionIdx : destinationRegionIndices) {</span>
+<span class="source-line-no">092</span><span id="line-92">      
serverRegions.add(cluster.regions[regionIdx]);</span>
+<span class="source-line-no">093</span><span id="line-93">    }</span>
+<span class="source-line-no">094</span><span id="line-94">    if 
(isViolatingServer(regionPlan, serverRegions)) {</span>
+<span class="source-line-no">095</span><span id="line-95">      return 
true;</span>
+<span class="source-line-no">096</span><span id="line-96">    }</span>
+<span class="source-line-no">097</span><span id="line-97"></span>
+<span class="source-line-no">098</span><span id="line-98">    if 
(getValidationLevel() == ValidationLevel.SERVER) {</span>
+<span class="source-line-no">099</span><span id="line-99">      return 
false;</span>
+<span class="source-line-no">100</span><span id="line-100">    }</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">    // Check 
Host</span>
+<span class="source-line-no">103</span><span id="line-103">    int hostIdx = 
cluster.serverIndexToHostIndex[destinationServerIdx];</span>
+<span class="source-line-no">104</span><span id="line-104">    
Set&lt;RegionInfo&gt; hostRegions = getRegionsFromIndex(hostIdx, 
cluster.regionsPerHost);</span>
 <span class="source-line-no">105</span><span id="line-105">    if 
(isViolatingHost(regionPlan, hostRegions)) {</span>
 <span class="source-line-no">106</span><span id="line-106">      return 
true;</span>
 <span class="source-line-no">107</span><span id="line-107">    }</span>
@@ -125,25 +125,33 @@
 <span class="source-line-no">112</span><span id="line-112"></span>
 <span class="source-line-no">113</span><span id="line-113">    // Check 
Rack</span>
 <span class="source-line-no">114</span><span id="line-114">    int rackIdx = 
cluster.serverIndexToRackIndex[destinationServerIdx];</span>
-<span class="source-line-no">115</span><span id="line-115">    
Set&lt;RegionInfo&gt; rackRegions = 
Arrays.stream(cluster.regionsPerRack[rackIdx])</span>
-<span class="source-line-no">116</span><span id="line-116">      .mapToObj(idx 
-&gt; cluster.regions[idx]).collect(Collectors.toSet());</span>
-<span class="source-line-no">117</span><span id="line-117">    if 
(isViolatingRack(regionPlan, rackRegions)) {</span>
-<span class="source-line-no">118</span><span id="line-118">      return 
true;</span>
-<span class="source-line-no">119</span><span id="line-119">    }</span>
-<span class="source-line-no">120</span><span id="line-120"></span>
-<span class="source-line-no">121</span><span id="line-121">    return 
false;</span>
-<span class="source-line-no">122</span><span id="line-122">  }</span>
-<span class="source-line-no">123</span><span id="line-123"></span>
-<span class="source-line-no">124</span><span id="line-124">  abstract boolean 
isViolatingServer(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions);</span>
-<span class="source-line-no">125</span><span id="line-125"></span>
-<span class="source-line-no">126</span><span id="line-126">  boolean 
isViolatingHost(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
-<span class="source-line-no">127</span><span id="line-127">    return 
false;</span>
-<span class="source-line-no">128</span><span id="line-128">  }</span>
-<span class="source-line-no">129</span><span id="line-129"></span>
-<span class="source-line-no">130</span><span id="line-130">  boolean 
isViolatingRack(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
-<span class="source-line-no">131</span><span id="line-131">    return 
false;</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">115</span><span id="line-115">    
Set&lt;RegionInfo&gt; rackRegions = getRegionsFromIndex(rackIdx, 
cluster.regionsPerRack);</span>
+<span class="source-line-no">116</span><span id="line-116">    if 
(isViolatingRack(regionPlan, rackRegions)) {</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">    }</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120">    return 
false;</span>
+<span class="source-line-no">121</span><span id="line-121">  }</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">  abstract boolean 
isViolatingServer(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions);</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">  boolean 
isViolatingHost(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
+<span class="source-line-no">126</span><span id="line-126">    return 
false;</span>
+<span class="source-line-no">127</span><span id="line-127">  }</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">  boolean 
isViolatingRack(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
+<span class="source-line-no">130</span><span id="line-130">    return 
false;</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">  private 
Set&lt;RegionInfo&gt; getRegionsFromIndex(int index, int[][] regionsPerIndex) 
{</span>
+<span class="source-line-no">134</span><span id="line-134">    int[] 
regionIndices = regionsPerIndex[index];</span>
+<span class="source-line-no">135</span><span id="line-135">    if 
(regionIndices == null) {</span>
+<span class="source-line-no">136</span><span id="line-136">      return 
Collections.emptySet();</span>
+<span class="source-line-no">137</span><span id="line-137">    }</span>
+<span class="source-line-no">138</span><span id="line-138">    return 
Arrays.stream(regionIndices).mapToObj(idx -&gt; cluster.regions[idx])</span>
+<span class="source-line-no">139</span><span id="line-139">      
.collect(Collectors.toSet());</span>
+<span class="source-line-no">140</span><span id="line-140">  }</span>
+<span class="source-line-no">141</span><span id="line-141">}</span>
 
 
 
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
index a67281d88da..c5ef362249a 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionPlanConditional.html
@@ -31,90 +31,90 @@
 <span class="source-line-no">018</span><span id="line-18">package 
org.apache.hadoop.hbase.master.balancer;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import 
java.util.Arrays;</span>
-<span class="source-line-no">021</span><span id="line-21">import 
java.util.List;</span>
-<span class="source-line-no">022</span><span id="line-22">import 
java.util.Set;</span>
-<span class="source-line-no">023</span><span id="line-23">import 
java.util.stream.Collectors;</span>
-<span class="source-line-no">024</span><span id="line-24">import 
org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">025</span><span id="line-25">import 
org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
-<span class="source-line-no">026</span><span id="line-26">import 
org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">027</span><span id="line-27">import 
org.apache.hadoop.hbase.master.RegionPlan;</span>
-<span class="source-line-no">028</span><span id="line-28">import 
org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">029</span><span id="line-29">import 
org.apache.yetus.audience.InterfaceStability;</span>
-<span class="source-line-no">030</span><span id="line-30">import 
org.slf4j.Logger;</span>
-<span class="source-line-no">031</span><span id="line-31">import 
org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">032</span><span id="line-32"></span>
-<span class="source-line-no">033</span><span 
id="line-33">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)</span>
-<span class="source-line-no">034</span><span 
id="line-34">@InterfaceStability.Evolving</span>
-<span class="source-line-no">035</span><span id="line-35">public abstract 
class RegionPlanConditional {</span>
-<span class="source-line-no">036</span><span id="line-36">  private static 
final Logger LOG = LoggerFactory.getLogger(RegionPlanConditional.class);</span>
-<span class="source-line-no">037</span><span id="line-37">  private 
BalancerClusterState cluster;</span>
-<span class="source-line-no">038</span><span id="line-38"></span>
-<span class="source-line-no">039</span><span id="line-39">  
RegionPlanConditional(Configuration conf, BalancerClusterState cluster) {</span>
-<span class="source-line-no">040</span><span id="line-40">    this.cluster = 
cluster;</span>
-<span class="source-line-no">041</span><span id="line-41">  }</span>
-<span class="source-line-no">042</span><span id="line-42"></span>
-<span class="source-line-no">043</span><span id="line-43">  public enum 
ValidationLevel {</span>
-<span class="source-line-no">044</span><span id="line-44">    /**</span>
-<span class="source-line-no">045</span><span id="line-45">     * Just check 
the server.</span>
-<span class="source-line-no">046</span><span id="line-46">     */</span>
-<span class="source-line-no">047</span><span id="line-47">    SERVER,</span>
-<span class="source-line-no">048</span><span id="line-48">    /**</span>
-<span class="source-line-no">049</span><span id="line-49">     * Check the 
server and the host.</span>
-<span class="source-line-no">050</span><span id="line-50">     */</span>
-<span class="source-line-no">051</span><span id="line-51">    
SERVER_HOST,</span>
-<span class="source-line-no">052</span><span id="line-52">    /**</span>
-<span class="source-line-no">053</span><span id="line-53">     * Check the 
server, host, and rack.</span>
-<span class="source-line-no">054</span><span id="line-54">     */</span>
-<span class="source-line-no">055</span><span id="line-55">    
SERVER_HOST_RACK</span>
-<span class="source-line-no">056</span><span id="line-56">  }</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">  void 
setClusterState(BalancerClusterState cluster) {</span>
-<span class="source-line-no">059</span><span id="line-59">    this.cluster = 
cluster;</span>
-<span class="source-line-no">060</span><span id="line-60">  }</span>
-<span class="source-line-no">061</span><span id="line-61"></span>
-<span class="source-line-no">062</span><span id="line-62">  /**</span>
-<span class="source-line-no">063</span><span id="line-63">   * Returns a 
{@link ValidationLevel} that is appropriate for this conditional.</span>
-<span class="source-line-no">064</span><span id="line-64">   * @return the 
validation level</span>
-<span class="source-line-no">065</span><span id="line-65">   */</span>
-<span class="source-line-no">066</span><span id="line-66">  abstract 
ValidationLevel getValidationLevel();</span>
-<span class="source-line-no">067</span><span id="line-67"></span>
-<span class="source-line-no">068</span><span id="line-68">  /**</span>
-<span class="source-line-no">069</span><span id="line-69">   * Get the 
candidate generator(s) for this conditional. This can be useful to provide the 
balancer</span>
-<span class="source-line-no">070</span><span id="line-70">   * with hints that 
will appease your conditional. Your conditionals will be triggered in 
order.</span>
-<span class="source-line-no">071</span><span id="line-71">   * @return the 
candidate generator for this conditional</span>
-<span class="source-line-no">072</span><span id="line-72">   */</span>
-<span class="source-line-no">073</span><span id="line-73">  abstract 
List&lt;RegionPlanConditionalCandidateGenerator&gt; 
getCandidateGenerators();</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">  /**</span>
-<span class="source-line-no">076</span><span id="line-76">   * Check if the 
conditional is violated by the given region plan.</span>
-<span class="source-line-no">077</span><span id="line-77">   * @param 
regionPlan the region plan to check</span>
-<span class="source-line-no">078</span><span id="line-78">   * @return true if 
the conditional is violated</span>
-<span class="source-line-no">079</span><span id="line-79">   */</span>
-<span class="source-line-no">080</span><span id="line-80">  boolean 
isViolating(RegionPlan regionPlan) {</span>
-<span class="source-line-no">081</span><span id="line-81">    if (regionPlan 
== null) {</span>
-<span class="source-line-no">082</span><span id="line-82">      return 
false;</span>
-<span class="source-line-no">083</span><span id="line-83">    }</span>
-<span class="source-line-no">084</span><span id="line-84">    int 
destinationServerIdx = 
cluster.serversToIndex.get(regionPlan.getDestination().getAddress());</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">    // Check 
Server</span>
-<span class="source-line-no">087</span><span id="line-87">    int[] 
destinationRegionIndices = 
cluster.regionsPerServer[destinationServerIdx];</span>
-<span class="source-line-no">088</span><span id="line-88">    
Set&lt;RegionInfo&gt; serverRegions = 
Arrays.stream(cluster.regionsPerServer[destinationServerIdx])</span>
-<span class="source-line-no">089</span><span id="line-89">      .mapToObj(idx 
-&gt; cluster.regions[idx]).collect(Collectors.toSet());</span>
-<span class="source-line-no">090</span><span id="line-90">    for (int 
regionIdx : destinationRegionIndices) {</span>
-<span class="source-line-no">091</span><span id="line-91">      
serverRegions.add(cluster.regions[regionIdx]);</span>
-<span class="source-line-no">092</span><span id="line-92">    }</span>
-<span class="source-line-no">093</span><span id="line-93">    if 
(isViolatingServer(regionPlan, serverRegions)) {</span>
-<span class="source-line-no">094</span><span id="line-94">      return 
true;</span>
-<span class="source-line-no">095</span><span id="line-95">    }</span>
-<span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">    if 
(getValidationLevel() == ValidationLevel.SERVER) {</span>
-<span class="source-line-no">098</span><span id="line-98">      return 
false;</span>
-<span class="source-line-no">099</span><span id="line-99">    }</span>
-<span class="source-line-no">100</span><span id="line-100"></span>
-<span class="source-line-no">101</span><span id="line-101">    // Check 
Host</span>
-<span class="source-line-no">102</span><span id="line-102">    int hostIdx = 
cluster.serverIndexToHostIndex[destinationServerIdx];</span>
-<span class="source-line-no">103</span><span id="line-103">    
Set&lt;RegionInfo&gt; hostRegions = 
Arrays.stream(cluster.regionsPerHost[hostIdx])</span>
-<span class="source-line-no">104</span><span id="line-104">      .mapToObj(idx 
-&gt; cluster.regions[idx]).collect(Collectors.toSet());</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.util.Collections;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.util.List;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
java.util.Set;</span>
+<span class="source-line-no">024</span><span id="line-24">import 
java.util.stream.Collectors;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
org.apache.hadoop.hbase.master.RegionPlan;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">030</span><span id="line-30">import 
org.apache.yetus.audience.InterfaceStability;</span>
+<span class="source-line-no">031</span><span id="line-31">import 
org.slf4j.Logger;</span>
+<span class="source-line-no">032</span><span id="line-32">import 
org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">033</span><span id="line-33"></span>
+<span class="source-line-no">034</span><span 
id="line-34">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)</span>
+<span class="source-line-no">035</span><span 
id="line-35">@InterfaceStability.Evolving</span>
+<span class="source-line-no">036</span><span id="line-36">public abstract 
class RegionPlanConditional {</span>
+<span class="source-line-no">037</span><span id="line-37">  private static 
final Logger LOG = LoggerFactory.getLogger(RegionPlanConditional.class);</span>
+<span class="source-line-no">038</span><span id="line-38">  private 
BalancerClusterState cluster;</span>
+<span class="source-line-no">039</span><span id="line-39"></span>
+<span class="source-line-no">040</span><span id="line-40">  
RegionPlanConditional(Configuration conf, BalancerClusterState cluster) {</span>
+<span class="source-line-no">041</span><span id="line-41">    this.cluster = 
cluster;</span>
+<span class="source-line-no">042</span><span id="line-42">  }</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">  public enum 
ValidationLevel {</span>
+<span class="source-line-no">045</span><span id="line-45">    /**</span>
+<span class="source-line-no">046</span><span id="line-46">     * Just check 
the server.</span>
+<span class="source-line-no">047</span><span id="line-47">     */</span>
+<span class="source-line-no">048</span><span id="line-48">    SERVER,</span>
+<span class="source-line-no">049</span><span id="line-49">    /**</span>
+<span class="source-line-no">050</span><span id="line-50">     * Check the 
server and the host.</span>
+<span class="source-line-no">051</span><span id="line-51">     */</span>
+<span class="source-line-no">052</span><span id="line-52">    
SERVER_HOST,</span>
+<span class="source-line-no">053</span><span id="line-53">    /**</span>
+<span class="source-line-no">054</span><span id="line-54">     * Check the 
server, host, and rack.</span>
+<span class="source-line-no">055</span><span id="line-55">     */</span>
+<span class="source-line-no">056</span><span id="line-56">    
SERVER_HOST_RACK</span>
+<span class="source-line-no">057</span><span id="line-57">  }</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59">  void 
setClusterState(BalancerClusterState cluster) {</span>
+<span class="source-line-no">060</span><span id="line-60">    this.cluster = 
cluster;</span>
+<span class="source-line-no">061</span><span id="line-61">  }</span>
+<span class="source-line-no">062</span><span id="line-62"></span>
+<span class="source-line-no">063</span><span id="line-63">  /**</span>
+<span class="source-line-no">064</span><span id="line-64">   * Returns a 
{@link ValidationLevel} that is appropriate for this conditional.</span>
+<span class="source-line-no">065</span><span id="line-65">   * @return the 
validation level</span>
+<span class="source-line-no">066</span><span id="line-66">   */</span>
+<span class="source-line-no">067</span><span id="line-67">  abstract 
ValidationLevel getValidationLevel();</span>
+<span class="source-line-no">068</span><span id="line-68"></span>
+<span class="source-line-no">069</span><span id="line-69">  /**</span>
+<span class="source-line-no">070</span><span id="line-70">   * Get the 
candidate generator(s) for this conditional. This can be useful to provide the 
balancer</span>
+<span class="source-line-no">071</span><span id="line-71">   * with hints that 
will appease your conditional. Your conditionals will be triggered in 
order.</span>
+<span class="source-line-no">072</span><span id="line-72">   * @return the 
candidate generator for this conditional</span>
+<span class="source-line-no">073</span><span id="line-73">   */</span>
+<span class="source-line-no">074</span><span id="line-74">  abstract 
List&lt;RegionPlanConditionalCandidateGenerator&gt; 
getCandidateGenerators();</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">  /**</span>
+<span class="source-line-no">077</span><span id="line-77">   * Check if the 
conditional is violated by the given region plan.</span>
+<span class="source-line-no">078</span><span id="line-78">   * @param 
regionPlan the region plan to check</span>
+<span class="source-line-no">079</span><span id="line-79">   * @return true if 
the conditional is violated</span>
+<span class="source-line-no">080</span><span id="line-80">   */</span>
+<span class="source-line-no">081</span><span id="line-81">  boolean 
isViolating(RegionPlan regionPlan) {</span>
+<span class="source-line-no">082</span><span id="line-82">    if (regionPlan 
== null) {</span>
+<span class="source-line-no">083</span><span id="line-83">      return 
false;</span>
+<span class="source-line-no">084</span><span id="line-84">    }</span>
+<span class="source-line-no">085</span><span id="line-85">    int 
destinationServerIdx = 
cluster.serversToIndex.get(regionPlan.getDestination().getAddress());</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">    // Check 
Server</span>
+<span class="source-line-no">088</span><span id="line-88">    int[] 
destinationRegionIndices = 
cluster.regionsPerServer[destinationServerIdx];</span>
+<span class="source-line-no">089</span><span id="line-89">    
Set&lt;RegionInfo&gt; serverRegions =</span>
+<span class="source-line-no">090</span><span id="line-90">      
getRegionsFromIndex(destinationServerIdx, cluster.regionsPerServer);</span>
+<span class="source-line-no">091</span><span id="line-91">    for (int 
regionIdx : destinationRegionIndices) {</span>
+<span class="source-line-no">092</span><span id="line-92">      
serverRegions.add(cluster.regions[regionIdx]);</span>
+<span class="source-line-no">093</span><span id="line-93">    }</span>
+<span class="source-line-no">094</span><span id="line-94">    if 
(isViolatingServer(regionPlan, serverRegions)) {</span>
+<span class="source-line-no">095</span><span id="line-95">      return 
true;</span>
+<span class="source-line-no">096</span><span id="line-96">    }</span>
+<span class="source-line-no">097</span><span id="line-97"></span>
+<span class="source-line-no">098</span><span id="line-98">    if 
(getValidationLevel() == ValidationLevel.SERVER) {</span>
+<span class="source-line-no">099</span><span id="line-99">      return 
false;</span>
+<span class="source-line-no">100</span><span id="line-100">    }</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">    // Check 
Host</span>
+<span class="source-line-no">103</span><span id="line-103">    int hostIdx = 
cluster.serverIndexToHostIndex[destinationServerIdx];</span>
+<span class="source-line-no">104</span><span id="line-104">    
Set&lt;RegionInfo&gt; hostRegions = getRegionsFromIndex(hostIdx, 
cluster.regionsPerHost);</span>
 <span class="source-line-no">105</span><span id="line-105">    if 
(isViolatingHost(regionPlan, hostRegions)) {</span>
 <span class="source-line-no">106</span><span id="line-106">      return 
true;</span>
 <span class="source-line-no">107</span><span id="line-107">    }</span>
@@ -125,25 +125,33 @@
 <span class="source-line-no">112</span><span id="line-112"></span>
 <span class="source-line-no">113</span><span id="line-113">    // Check 
Rack</span>
 <span class="source-line-no">114</span><span id="line-114">    int rackIdx = 
cluster.serverIndexToRackIndex[destinationServerIdx];</span>
-<span class="source-line-no">115</span><span id="line-115">    
Set&lt;RegionInfo&gt; rackRegions = 
Arrays.stream(cluster.regionsPerRack[rackIdx])</span>
-<span class="source-line-no">116</span><span id="line-116">      .mapToObj(idx 
-&gt; cluster.regions[idx]).collect(Collectors.toSet());</span>
-<span class="source-line-no">117</span><span id="line-117">    if 
(isViolatingRack(regionPlan, rackRegions)) {</span>
-<span class="source-line-no">118</span><span id="line-118">      return 
true;</span>
-<span class="source-line-no">119</span><span id="line-119">    }</span>
-<span class="source-line-no">120</span><span id="line-120"></span>
-<span class="source-line-no">121</span><span id="line-121">    return 
false;</span>
-<span class="source-line-no">122</span><span id="line-122">  }</span>
-<span class="source-line-no">123</span><span id="line-123"></span>
-<span class="source-line-no">124</span><span id="line-124">  abstract boolean 
isViolatingServer(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions);</span>
-<span class="source-line-no">125</span><span id="line-125"></span>
-<span class="source-line-no">126</span><span id="line-126">  boolean 
isViolatingHost(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
-<span class="source-line-no">127</span><span id="line-127">    return 
false;</span>
-<span class="source-line-no">128</span><span id="line-128">  }</span>
-<span class="source-line-no">129</span><span id="line-129"></span>
-<span class="source-line-no">130</span><span id="line-130">  boolean 
isViolatingRack(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
-<span class="source-line-no">131</span><span id="line-131">    return 
false;</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">115</span><span id="line-115">    
Set&lt;RegionInfo&gt; rackRegions = getRegionsFromIndex(rackIdx, 
cluster.regionsPerRack);</span>
+<span class="source-line-no">116</span><span id="line-116">    if 
(isViolatingRack(regionPlan, rackRegions)) {</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">    }</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120">    return 
false;</span>
+<span class="source-line-no">121</span><span id="line-121">  }</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">  abstract boolean 
isViolatingServer(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions);</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">  boolean 
isViolatingHost(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
+<span class="source-line-no">126</span><span id="line-126">    return 
false;</span>
+<span class="source-line-no">127</span><span id="line-127">  }</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">  boolean 
isViolatingRack(RegionPlan regionPlan, Set&lt;RegionInfo&gt; 
destinationRegions) {</span>
+<span class="source-line-no">130</span><span id="line-130">    return 
false;</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">  private 
Set&lt;RegionInfo&gt; getRegionsFromIndex(int index, int[][] regionsPerIndex) 
{</span>
+<span class="source-line-no">134</span><span id="line-134">    int[] 
regionIndices = regionsPerIndex[index];</span>
+<span class="source-line-no">135</span><span id="line-135">    if 
(regionIndices == null) {</span>
+<span class="source-line-no">136</span><span id="line-136">      return 
Collections.emptySet();</span>
+<span class="source-line-no">137</span><span id="line-137">    }</span>
+<span class="source-line-no">138</span><span id="line-138">    return 
Arrays.stream(regionIndices).mapToObj(idx -&gt; cluster.regions[idx])</span>
+<span class="source-line-no">139</span><span id="line-139">      
.collect(Collectors.toSet());</span>
+<span class="source-line-no">140</span><span id="line-140">  }</span>
+<span class="source-line-no">141</span><span id="line-141">}</span>
 
 
 
diff --git a/downloads.html b/downloads.html
index 58ceb3e2fb6..140a98f41ae 100644
--- a/downloads.html
+++ b/downloads.html
@@ -422,7 +422,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/export_control.html b/export_control.html
index ba8d83ea8c1..a16dbfc2155 100644
--- a/export_control.html
+++ b/export_control.html
@@ -210,7 +210,7 @@ for more details.</p>
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/index.html b/index.html
index 9e78e242e4f..e821500404e 100644
--- a/index.html
+++ b/index.html
@@ -283,7 +283,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/issue-management.html b/issue-management.html
index 8a55471182b..7d49d56b368 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -181,7 +181,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/licenses.html b/licenses.html
index 539369da007..80d88b3ab10 100644
--- a/licenses.html
+++ b/licenses.html
@@ -383,7 +383,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/mailing-lists.html b/mailing-lists.html
index 82590df9aa9..97d04820fa3 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -228,7 +228,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/metrics.html b/metrics.html
index 113004c6325..3b33cd34b04 100644
--- a/metrics.html
+++ b/metrics.html
@@ -332,7 +332,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS 
-Dcom.sun.management.jmxrem
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/old_news.html b/old_news.html
index 296ef0b71c2..46280793faf 100644
--- a/old_news.html
+++ b/old_news.html
@@ -329,7 +329,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/plugin-management.html b/plugin-management.html
index 2d51d399585..57ff3f3e69f 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -338,7 +338,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/plugins.html b/plugins.html
index a8dc1cc1151..431a2e7e20d 100644
--- a/plugins.html
+++ b/plugins.html
@@ -276,7 +276,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index cf4aac8df2a..99e7866782f 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -671,7 +671,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/project-info.html b/project-info.html
index f49d557fa0a..840f568d29b 100644
--- a/project-info.html
+++ b/project-info.html
@@ -225,7 +225,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/project-reports.html b/project-reports.html
index 225f4a16adc..7a9187d0b41 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -198,7 +198,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 3146b93409f..5e53c590478 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -187,7 +187,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/replication.html b/replication.html
index 6ab8ac8d9a8..c0193e6e973 100644
--- a/replication.html
+++ b/replication.html
@@ -182,7 +182,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/resources.html b/resources.html
index 219eff0d38f..93c460cbb8a 100644
--- a/resources.html
+++ b/resources.html
@@ -205,7 +205,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/scm.html b/scm.html
index ef50ed9afa7..ce1ec53f7bf 100644
--- a/scm.html
+++ b/scm.html
@@ -189,7 +189,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/sponsors.html b/sponsors.html
index ad0bbdd7beb..655aa976b7a 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -211,7 +211,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/summary.html b/summary.html
index 555edf3d8d1..3791ff28705 100644
--- a/summary.html
+++ b/summary.html
@@ -222,7 +222,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index 6d6718f387f..43242f037aa 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -401,7 +401,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>
diff --git a/team.html b/team.html
index 4cdeaacd7ea..6c87bbe781d 100644
--- a/team.html
+++ b/team.html
@@ -826,7 +826,7 @@
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-17
+        Last Published: 2025-03-18
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a 
href="http://maven.apache.org/"; title="Built by Maven" class="poweredBy"><img 
class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" 
/></a>

Reply via email to