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 be1a202d3ce Published site at b8d803c0f1156219cc965e4c749e7ab7c9a65f31.
be1a202d3ce is described below

commit be1a202d3ce77a48680376e83dc4ad6e62ca91ee
Author: jenkins <[email protected]>
AuthorDate: Mon Nov 17 14:52:49 2025 +0000

    Published site at b8d803c0f1156219cc965e4c749e7ab7c9a65f31.
---
 acid-semantics.html                                |   2 +-
 apache_hbase_reference_guide.pdf                   |   4 +-
 book.html                                          |   2 +-
 bulk-loads.html                                    |   2 +-
 checkstyle-aggregate.html                          |   2 +-
 coc.html                                           |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/constant-values.html                    |   2 +-
 ...dureDispatcher.ExecuteProceduresRemoteCall.html |   6 +-
 .../RSProcedureDispatcher.DeadRSRemoteCall.html    |   4 +-
 ...dureDispatcher.ExecuteProceduresRemoteCall.html |   4 +-
 ...RSProcedureDispatcher.RegionCloseOperation.html |   4 +-
 .../RSProcedureDispatcher.RegionOpenOperation.html |   4 +-
 .../RSProcedureDispatcher.RegionOperation.html     |   4 +-
 ...rocedureDispatcher.RemoteProcedureResolver.html |   4 +-
 .../RSProcedureDispatcher.ServerOperation.html     |   4 +-
 .../master/procedure/RSProcedureDispatcher.html    |   4 +-
 documentation-1.4.html                             |   2 +-
 documentation-2.3.html                             |   2 +-
 documentation-2.4.html                             |   2 +-
 documentation-2.5.html                             |   2 +-
 documentation-2.6.html                             |   2 +-
 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 +-
 .../hadoop/hbase/util/TestProcDispatcher.html      | 197 +++++++++++----------
 .../hadoop/hbase/util/TestProcDispatcher.html      |   6 +-
 .../hadoop/hbase/util/TestProcDispatcher.html      | 197 +++++++++++----------
 48 files changed, 257 insertions(+), 255 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 97e1a446a56..3064d8adf1a 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -709,7 +709,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 710322ecd42..6fc0a2684ad 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:20251114185849+00'00')
-/CreationDate (D:20251114191637+00'00')
+/ModDate (D:20251117143135+00'00')
+/CreationDate (D:20251117144859+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index bce6d197847..3ed4c930bae 100644
--- a/book.html
+++ b/book.html
@@ -50145,7 +50145,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-11-14 18:58:49 UTC
+Last updated 2025-11-17 14:31:35 UTC
 </div>
 </div>
 <script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 78373fec993..9b49eb091a9 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -561,7 +561,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 70caa6a88e1..b6331c6ab95 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -29408,7 +29408,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/coc.html b/coc.html
index 1c95e751aa7..e9d3de1eb60 100644
--- a/coc.html
+++ b/coc.html
@@ -581,7 +581,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 01f018adb5b..b86879b8745 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1828,7 +1828,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/dependency-info.html b/dependency-info.html
index f40774586d6..ce30cefbee6 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -614,7 +614,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/dependency-management.html b/dependency-management.html
index 754278dad59..b64b6292988 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -2387,7 +2387,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index f2909d17eed..b3560cea8e9 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -10232,7 +10232,7 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-last">Value</div>
 <div class="col-first even-row-color"><code 
id="org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher.ExecuteProceduresRemoteCall.DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT">private&nbsp;static&nbsp;final&nbsp;int</code></div>
 <div class="col-second even-row-color"><code><a 
href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html#DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT">DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT</a></code></div>
-<div class="col-last even-row-color"><code>5</code></div>
+<div class="col-last even-row-color"><code>10</code></div>
 <div class="col-first odd-row-color"><code 
id="org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher.ExecuteProceduresRemoteCall.DEFAULT_RS_RPC_RETRY_INTERVAL">private&nbsp;static&nbsp;final&nbsp;int</code></div>
 <div class="col-second odd-row-color"><code><a 
href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html#DEFAULT_RS_RPC_RETRY_INTERVAL">DEFAULT_RS_RPC_RETRY_INTERVAL</a></code></div>
 <div class="col-last odd-row-color"><code>100</code></div>
diff --git 
a/devapidocs/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
 
b/devapidocs/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
index 6fefa1a5242..f0d45c46442 100644
--- 
a/devapidocs/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
+++ 
b/devapidocs/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
@@ -323,9 +323,9 @@ implements <a 
href="RSProcedureDispatcher.RemoteProcedureResolver.html" title="i
 <section class="detail" id="DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT">
 <h3>DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT</h3>
 <div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html#line-266">DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT</a></span></div>
-<div class="block">The default retry limit. Waiting for more than 5 attempts 
is not going to help much
- for genuine connectivity errors. Therefore, consider fail-fast after 5 
retries. Value
- = 5</div>
+<div class="block">The default retry limit. Waiting for more than 10 attempts 
is not going to help much
+ for genuine connectivity errors. Therefore, consider fail-fast after 10 
retries. Value
+ = 10. 10 retries means we will wait for at least 28.5 seconds before killing 
RS.</div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.DeadRSRemoteCall.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.DeadRSRemoteCall.html
index 73c3288171d..b086a961848 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.DeadRSRemoteCall.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.DeadRSRemoteCall.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
index cb79b68adfc..f3a69d723d9 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html
index 7dfdd32dd60..ca6d01004dc 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html
index 0a2d6c68504..7f5df5af7f2 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html
index 6e3539fcbd0..caf38271d15 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RemoteProcedureResolver.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RemoteProcedureResolver.html
index b0abce550d2..03adf51a7d6 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RemoteProcedureResolver.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RemoteProcedureResolver.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ServerOperation.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ServerOperation.html
index 7da2ccc0585..782b70cbf91 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ServerOperation.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ServerOperation.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html
index 3e66974413c..2fc15da8d73 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html
@@ -274,9 +274,9 @@
 <span class="source-line-no">261</span><span id="line-261">    /**</span>
 <span class="source-line-no">262</span><span id="line-262">     * The default 
retry limit. Waiting for more than {@value} attempts is not going to help 
much</span>
 <span class="source-line-no">263</span><span id="line-263">     * for genuine 
connectivity errors. Therefore, consider fail-fast after {@value} retries. 
Value</span>
-<span class="source-line-no">264</span><span id="line-264">     * = 
{@value}</span>
+<span class="source-line-no">264</span><span id="line-264">     * = {@value}. 
10 retries means we will wait for at least 28.5 seconds before killing 
RS.</span>
 <span class="source-line-no">265</span><span id="line-265">     */</span>
-<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 5;</span>
+<span class="source-line-no">266</span><span id="line-266">    private static 
final int DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT = 10;</span>
 <span class="source-line-no">267</span><span id="line-267"></span>
 <span class="source-line-no">268</span><span id="line-268">    private final 
int failFastRetryLimit;</span>
 <span class="source-line-no">269</span><span id="line-269"></span>
diff --git a/documentation-1.4.html b/documentation-1.4.html
index 6142fc85952..5c983ae9831 100644
--- a/documentation-1.4.html
+++ b/documentation-1.4.html
@@ -601,7 +601,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/documentation-2.3.html b/documentation-2.3.html
index 73b2b950b29..69632b6d9d3 100644
--- a/documentation-2.3.html
+++ b/documentation-2.3.html
@@ -617,7 +617,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/documentation-2.4.html b/documentation-2.4.html
index 02b4a353b30..29ca322a724 100644
--- a/documentation-2.4.html
+++ b/documentation-2.4.html
@@ -617,7 +617,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/documentation-2.5.html b/documentation-2.5.html
index fa798bbb623..212f984da73 100644
--- a/documentation-2.5.html
+++ b/documentation-2.5.html
@@ -601,7 +601,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/documentation-2.6.html b/documentation-2.6.html
index 57db7ed741f..7140a5368ea 100644
--- a/documentation-2.6.html
+++ b/documentation-2.6.html
@@ -601,7 +601,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/downloads.html b/downloads.html
index e30354d447e..60d612eeb3c 100644
--- a/downloads.html
+++ b/downloads.html
@@ -664,7 +664,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/export_control.html b/export_control.html
index 27f3a24ec0f..b03a94bbd09 100644
--- a/export_control.html
+++ b/export_control.html
@@ -568,7 +568,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/index.html b/index.html
index c2d14c5aad3..baac9bf0143 100644
--- a/index.html
+++ b/index.html
@@ -639,7 +639,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/issue-management.html b/issue-management.html
index 707faa5d004..4bd496db53d 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -571,7 +571,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/licenses.html b/licenses.html
index 071d3071d6d..5bf5b95e0c5 100644
--- a/licenses.html
+++ b/licenses.html
@@ -774,7 +774,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/mailing-lists.html b/mailing-lists.html
index 633d53afeb6..2a71ee60b5b 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -626,7 +626,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/metrics.html b/metrics.html
index b2bb48dab21..7f0595fa70a 100644
--- a/metrics.html
+++ b/metrics.html
@@ -648,7 +648,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/old_news.html b/old_news.html
index 8b2113618e5..9c432e814eb 100644
--- a/old_news.html
+++ b/old_news.html
@@ -636,7 +636,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/plugin-management.html b/plugin-management.html
index bcf33f652aa..527a7563ea6 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -769,7 +769,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/plugins.html b/plugins.html
index 125107ae987..4501c9d630f 100644
--- a/plugins.html
+++ b/plugins.html
@@ -698,7 +698,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 38312504696..936c64e2ed0 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -865,7 +865,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/project-info.html b/project-info.html
index 6a90d788e2e..4ca809931e4 100644
--- a/project-info.html
+++ b/project-info.html
@@ -625,7 +625,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/project-reports.html b/project-reports.html
index 488f856ecb6..5206bb62205 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -597,7 +597,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 4b920433b38..a70a6382dbd 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -561,7 +561,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/replication.html b/replication.html
index 35b6ae66f87..dce4c354af0 100644
--- a/replication.html
+++ b/replication.html
@@ -561,7 +561,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/resources.html b/resources.html
index fe6e0db0215..2092c92f0fb 100644
--- a/resources.html
+++ b/resources.html
@@ -582,7 +582,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/scm.html b/scm.html
index d1ba729d8c9..303d11b1237 100644
--- a/scm.html
+++ b/scm.html
@@ -589,7 +589,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/sponsors.html b/sponsors.html
index d962f044d1a..8fa45529aa5 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -576,7 +576,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/summary.html b/summary.html
index 1a4b46d9e80..7265545eeab 100644
--- a/summary.html
+++ b/summary.html
@@ -638,7 +638,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/supportingprojects.html b/supportingprojects.html
index b8ecb131e52..885a6a21fb3 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -816,7 +816,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git a/team.html b/team.html
index 3f1f9dd264c..8f8e7f5fb69 100644
--- a/team.html
+++ b/team.html
@@ -1696,7 +1696,7 @@ ASF
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</p>
       </div>
       <div class="mt-3" style="float: right">
-        Last Published: 2025-11-14
+        Last Published: 2025-11-17
       </div>
 
       </div>
diff --git 
a/testapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html 
b/testapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html
index 17b77035e8e..784c195ea96 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html
@@ -90,104 +90,105 @@
 <span class="source-line-no">077</span><span id="line-77">  public static void 
setUpBeforeClass() throws Exception {</span>
 <span class="source-line-no">078</span><span id="line-78">    
TEST_UTIL.getConfiguration().set(HBASE_MASTER_RSPROC_DISPATCHER_CLASS,</span>
 <span class="source-line-no">079</span><span id="line-79">      
RSProcDispatcher.class.getName());</span>
-<span class="source-line-no">080</span><span id="line-80">    
TEST_UTIL.startMiniCluster(3);</span>
-<span class="source-line-no">081</span><span id="line-81">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
-<span class="source-line-no">082</span><span id="line-82">    rs0 = 
cluster.getRegionServer(0).getServerName();</span>
-<span class="source-line-no">083</span><span id="line-83">    
TEST_UTIL.getAdmin().balancerSwitch(false, true);</span>
-<span class="source-line-no">084</span><span id="line-84">  }</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">  @AfterClass</span>
-<span class="source-line-no">087</span><span id="line-87">  public static void 
tearDownAfterClass() throws Exception {</span>
-<span class="source-line-no">088</span><span id="line-88">    
TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">089</span><span id="line-89">  }</span>
-<span class="source-line-no">090</span><span id="line-90"></span>
-<span class="source-line-no">091</span><span id="line-91">  @Before</span>
-<span class="source-line-no">092</span><span id="line-92">  public void 
setUp() throws Exception {</span>
-<span class="source-line-no">093</span><span id="line-93">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
-<span class="source-line-no">094</span><span id="line-94">    TableDescriptor 
tableDesc = TableDescriptorBuilder.newBuilder(tableName)</span>
-<span class="source-line-no">095</span><span id="line-95">      
.setColumnFamily(ColumnFamilyDescriptorBuilder.of("fam1")).build();</span>
-<span class="source-line-no">096</span><span id="line-96">    int startKey = 
0;</span>
-<span class="source-line-no">097</span><span id="line-97">    int endKey = 
80000;</span>
-<span class="source-line-no">098</span><span id="line-98">    
TEST_UTIL.getAdmin().createTable(tableDesc, Bytes.toBytes(startKey), 
Bytes.toBytes(endKey), 9);</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">  @Test</span>
-<span class="source-line-no">102</span><span id="line-102">  public void 
testRetryLimitOnConnClosedErrors() throws Exception {</span>
-<span class="source-line-no">103</span><span id="line-103">    HbckChore 
hbckChore = new HbckChore(TEST_UTIL.getHBaseCluster().getMaster());</span>
-<span class="source-line-no">104</span><span id="line-104">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
-<span class="source-line-no">105</span><span id="line-105">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
-<span class="source-line-no">106</span><span id="line-106">    Admin admin = 
TEST_UTIL.getAdmin();</span>
-<span class="source-line-no">107</span><span id="line-107">    Table table = 
TEST_UTIL.getConnection().getTable(tableName);</span>
-<span class="source-line-no">108</span><span id="line-108">    List&lt;Put&gt; 
puts = IntStream.range(10, 50000).mapToObj(i -&gt; new 
Put(Bytes.toBytes(i))</span>
-<span class="source-line-no">109</span><span id="line-109">      
.addColumn(Bytes.toBytes("fam1"), Bytes.toBytes("q1"), Bytes.toBytes("val_" + 
i)))</span>
-<span class="source-line-no">110</span><span id="line-110">      
.collect(Collectors.toList());</span>
-<span class="source-line-no">111</span><span id="line-111">    
table.put(puts);</span>
-<span class="source-line-no">112</span><span id="line-112">    
admin.flush(tableName);</span>
-<span class="source-line-no">113</span><span id="line-113">    
admin.compact(tableName);</span>
-<span class="source-line-no">114</span><span id="line-114">    
Thread.sleep(3000);</span>
-<span class="source-line-no">115</span><span id="line-115">    HRegionServer 
hRegionServer0 = cluster.getRegionServer(0);</span>
-<span class="source-line-no">116</span><span id="line-116">    HRegionServer 
hRegionServer1 = cluster.getRegionServer(1);</span>
-<span class="source-line-no">117</span><span id="line-117">    HRegionServer 
hRegionServer2 = cluster.getRegionServer(2);</span>
-<span class="source-line-no">118</span><span id="line-118">    int numRegions0 
= hRegionServer0.getNumberOfOnlineRegions();</span>
-<span class="source-line-no">119</span><span id="line-119">    int numRegions1 
= hRegionServer1.getNumberOfOnlineRegions();</span>
-<span class="source-line-no">120</span><span id="line-120">    int numRegions2 
= hRegionServer2.getNumberOfOnlineRegions();</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">    
hbckChore.choreForTesting();</span>
-<span class="source-line-no">123</span><span id="line-123">    HbckReport 
hbckReport = hbckChore.getLastReport();</span>
-<span class="source-line-no">124</span><span id="line-124">    
Assert.assertEquals(0, hbckReport.getInconsistentRegions().size());</span>
-<span class="source-line-no">125</span><span id="line-125">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnFS().size());</span>
-<span class="source-line-no">126</span><span id="line-126">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnRS().size());</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128">    HRegion region0 
= hRegionServer0.getRegions().get(0);</span>
-<span class="source-line-no">129</span><span id="line-129">    // move all 
regions from server1 to server0</span>
-<span class="source-line-no">130</span><span id="line-130">    for (HRegion 
region : hRegionServer1.getRegions()) {</span>
-<span class="source-line-no">131</span><span id="line-131">      
TEST_UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), 
rs0);</span>
-<span class="source-line-no">132</span><span id="line-132">    }</span>
-<span class="source-line-no">133</span><span id="line-133">    
TEST_UTIL.getAdmin().move(region0.getRegionInfo().getEncodedNameAsBytes());</span>
-<span class="source-line-no">134</span><span id="line-134">    HMaster master 
= TEST_UTIL.getHBaseCluster().getMaster();</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136">    // 
Ensure:</span>
-<span class="source-line-no">137</span><span id="line-137">    // 1. num of 
regions before and after scheduling SCP remain same</span>
-<span class="source-line-no">138</span><span id="line-138">    // 2. all 
procedures including SCPs are successfully completed</span>
-<span class="source-line-no">139</span><span id="line-139">    // 3. two 
servers have SCPs scheduled</span>
-<span class="source-line-no">140</span><span id="line-140">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
-<span class="source-line-no">141</span><span id="line-141">      
LOG.info("numRegions0: {} , numRegions1: {} , numRegions2: {}", numRegions0, 
numRegions1,</span>
-<span class="source-line-no">142</span><span id="line-142">        
numRegions2);</span>
-<span class="source-line-no">143</span><span id="line-143">      
LOG.info("Online regions - server0 : {} , server1: {} , server2: {}",</span>
-<span class="source-line-no">144</span><span id="line-144">        
cluster.getRegionServer(0).getNumberOfOnlineRegions(),</span>
-<span class="source-line-no">145</span><span id="line-145">        
cluster.getRegionServer(1).getNumberOfOnlineRegions(),</span>
-<span class="source-line-no">146</span><span id="line-146">        
cluster.getRegionServer(2).getNumberOfOnlineRegions());</span>
-<span class="source-line-no">147</span><span id="line-147">      LOG.info("Num 
of successfully completed procedures: {} , num of all procedures: {}",</span>
-<span class="source-line-no">148</span><span id="line-148">        
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">149</span><span id="line-149">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
-<span class="source-line-no">150</span><span id="line-150">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
-<span class="source-line-no">151</span><span id="line-151">          
.count(),</span>
-<span class="source-line-no">152</span><span id="line-152">        
master.getMasterProcedureExecutor().getProcedures().size());</span>
-<span class="source-line-no">153</span><span id="line-153">      LOG.info("Num 
of SCPs: " + master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">154</span><span id="line-154">        
.filter(proc -&gt; proc instanceof ServerCrashProcedure).count());</span>
-<span class="source-line-no">155</span><span id="line-155">      return 
(numRegions0 + numRegions1 + numRegions2)</span>
-<span class="source-line-no">156</span><span id="line-156">          == 
(cluster.getRegionServer(0).getNumberOfOnlineRegions()</span>
-<span class="source-line-no">157</span><span id="line-157">            + 
cluster.getRegionServer(1).getNumberOfOnlineRegions()</span>
-<span class="source-line-no">158</span><span id="line-158">            + 
cluster.getRegionServer(2).getNumberOfOnlineRegions())</span>
-<span class="source-line-no">159</span><span id="line-159">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">160</span><span id="line-160">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
-<span class="source-line-no">161</span><span id="line-161">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
-<span class="source-line-no">162</span><span id="line-162">          .count() 
== master.getMasterProcedureExecutor().getProcedures().size()</span>
-<span class="source-line-no">163</span><span id="line-163">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">164</span><span id="line-164">          
.anyMatch(proc -&gt; proc instanceof ServerCrashProcedure);</span>
-<span class="source-line-no">165</span><span id="line-165">    });</span>
-<span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">    // Ensure we 
have no inconsistent regions</span>
-<span class="source-line-no">168</span><span id="line-168">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
-<span class="source-line-no">169</span><span id="line-169">      
hbckChore.choreForTesting();</span>
-<span class="source-line-no">170</span><span id="line-170">      HbckReport 
report = hbckChore.getLastReport();</span>
-<span class="source-line-no">171</span><span id="line-171">      return 
report.getInconsistentRegions().isEmpty() &amp;&amp; 
report.getOrphanRegionsOnFS().isEmpty()</span>
-<span class="source-line-no">172</span><span id="line-172">        &amp;&amp; 
report.getOrphanRegionsOnRS().isEmpty();</span>
-<span class="source-line-no">173</span><span id="line-173">    });</span>
-<span class="source-line-no">174</span><span id="line-174"></span>
-<span class="source-line-no">175</span><span id="line-175">  }</span>
-<span class="source-line-no">176</span><span id="line-176"></span>
-<span class="source-line-no">177</span><span id="line-177">}</span>
+<span class="source-line-no">080</span><span id="line-80">    
TEST_UTIL.getConfiguration().setInt("hbase.master.rs.remote.proc.fail.fast.limit",
 5);</span>
+<span class="source-line-no">081</span><span id="line-81">    
TEST_UTIL.startMiniCluster(3);</span>
+<span class="source-line-no">082</span><span id="line-82">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
+<span class="source-line-no">083</span><span id="line-83">    rs0 = 
cluster.getRegionServer(0).getServerName();</span>
+<span class="source-line-no">084</span><span id="line-84">    
TEST_UTIL.getAdmin().balancerSwitch(false, true);</span>
+<span class="source-line-no">085</span><span id="line-85">  }</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">  @AfterClass</span>
+<span class="source-line-no">088</span><span id="line-88">  public static void 
tearDownAfterClass() throws Exception {</span>
+<span class="source-line-no">089</span><span id="line-89">    
TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">090</span><span id="line-90">  }</span>
+<span class="source-line-no">091</span><span id="line-91"></span>
+<span class="source-line-no">092</span><span id="line-92">  @Before</span>
+<span class="source-line-no">093</span><span id="line-93">  public void 
setUp() throws Exception {</span>
+<span class="source-line-no">094</span><span id="line-94">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
+<span class="source-line-no">095</span><span id="line-95">    TableDescriptor 
tableDesc = TableDescriptorBuilder.newBuilder(tableName)</span>
+<span class="source-line-no">096</span><span id="line-96">      
.setColumnFamily(ColumnFamilyDescriptorBuilder.of("fam1")).build();</span>
+<span class="source-line-no">097</span><span id="line-97">    int startKey = 
0;</span>
+<span class="source-line-no">098</span><span id="line-98">    int endKey = 
80000;</span>
+<span class="source-line-no">099</span><span id="line-99">    
TEST_UTIL.getAdmin().createTable(tableDesc, Bytes.toBytes(startKey), 
Bytes.toBytes(endKey), 9);</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">  @Test</span>
+<span class="source-line-no">103</span><span id="line-103">  public void 
testRetryLimitOnConnClosedErrors() throws Exception {</span>
+<span class="source-line-no">104</span><span id="line-104">    HbckChore 
hbckChore = new HbckChore(TEST_UTIL.getHBaseCluster().getMaster());</span>
+<span class="source-line-no">105</span><span id="line-105">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
+<span class="source-line-no">106</span><span id="line-106">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
+<span class="source-line-no">107</span><span id="line-107">    Admin admin = 
TEST_UTIL.getAdmin();</span>
+<span class="source-line-no">108</span><span id="line-108">    Table table = 
TEST_UTIL.getConnection().getTable(tableName);</span>
+<span class="source-line-no">109</span><span id="line-109">    List&lt;Put&gt; 
puts = IntStream.range(10, 50000).mapToObj(i -&gt; new 
Put(Bytes.toBytes(i))</span>
+<span class="source-line-no">110</span><span id="line-110">      
.addColumn(Bytes.toBytes("fam1"), Bytes.toBytes("q1"), Bytes.toBytes("val_" + 
i)))</span>
+<span class="source-line-no">111</span><span id="line-111">      
.collect(Collectors.toList());</span>
+<span class="source-line-no">112</span><span id="line-112">    
table.put(puts);</span>
+<span class="source-line-no">113</span><span id="line-113">    
admin.flush(tableName);</span>
+<span class="source-line-no">114</span><span id="line-114">    
admin.compact(tableName);</span>
+<span class="source-line-no">115</span><span id="line-115">    
Thread.sleep(3000);</span>
+<span class="source-line-no">116</span><span id="line-116">    HRegionServer 
hRegionServer0 = cluster.getRegionServer(0);</span>
+<span class="source-line-no">117</span><span id="line-117">    HRegionServer 
hRegionServer1 = cluster.getRegionServer(1);</span>
+<span class="source-line-no">118</span><span id="line-118">    HRegionServer 
hRegionServer2 = cluster.getRegionServer(2);</span>
+<span class="source-line-no">119</span><span id="line-119">    int numRegions0 
= hRegionServer0.getNumberOfOnlineRegions();</span>
+<span class="source-line-no">120</span><span id="line-120">    int numRegions1 
= hRegionServer1.getNumberOfOnlineRegions();</span>
+<span class="source-line-no">121</span><span id="line-121">    int numRegions2 
= hRegionServer2.getNumberOfOnlineRegions();</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">    
hbckChore.choreForTesting();</span>
+<span class="source-line-no">124</span><span id="line-124">    HbckReport 
hbckReport = hbckChore.getLastReport();</span>
+<span class="source-line-no">125</span><span id="line-125">    
Assert.assertEquals(0, hbckReport.getInconsistentRegions().size());</span>
+<span class="source-line-no">126</span><span id="line-126">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnFS().size());</span>
+<span class="source-line-no">127</span><span id="line-127">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnRS().size());</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">    HRegion region0 
= hRegionServer0.getRegions().get(0);</span>
+<span class="source-line-no">130</span><span id="line-130">    // move all 
regions from server1 to server0</span>
+<span class="source-line-no">131</span><span id="line-131">    for (HRegion 
region : hRegionServer1.getRegions()) {</span>
+<span class="source-line-no">132</span><span id="line-132">      
TEST_UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), 
rs0);</span>
+<span class="source-line-no">133</span><span id="line-133">    }</span>
+<span class="source-line-no">134</span><span id="line-134">    
TEST_UTIL.getAdmin().move(region0.getRegionInfo().getEncodedNameAsBytes());</span>
+<span class="source-line-no">135</span><span id="line-135">    HMaster master 
= TEST_UTIL.getHBaseCluster().getMaster();</span>
+<span class="source-line-no">136</span><span id="line-136"></span>
+<span class="source-line-no">137</span><span id="line-137">    // 
Ensure:</span>
+<span class="source-line-no">138</span><span id="line-138">    // 1. num of 
regions before and after scheduling SCP remain same</span>
+<span class="source-line-no">139</span><span id="line-139">    // 2. all 
procedures including SCPs are successfully completed</span>
+<span class="source-line-no">140</span><span id="line-140">    // 3. two 
servers have SCPs scheduled</span>
+<span class="source-line-no">141</span><span id="line-141">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
+<span class="source-line-no">142</span><span id="line-142">      
LOG.info("numRegions0: {} , numRegions1: {} , numRegions2: {}", numRegions0, 
numRegions1,</span>
+<span class="source-line-no">143</span><span id="line-143">        
numRegions2);</span>
+<span class="source-line-no">144</span><span id="line-144">      
LOG.info("Online regions - server0 : {} , server1: {} , server2: {}",</span>
+<span class="source-line-no">145</span><span id="line-145">        
cluster.getRegionServer(0).getNumberOfOnlineRegions(),</span>
+<span class="source-line-no">146</span><span id="line-146">        
cluster.getRegionServer(1).getNumberOfOnlineRegions(),</span>
+<span class="source-line-no">147</span><span id="line-147">        
cluster.getRegionServer(2).getNumberOfOnlineRegions());</span>
+<span class="source-line-no">148</span><span id="line-148">      LOG.info("Num 
of successfully completed procedures: {} , num of all procedures: {}",</span>
+<span class="source-line-no">149</span><span id="line-149">        
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">150</span><span id="line-150">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
+<span class="source-line-no">151</span><span id="line-151">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
+<span class="source-line-no">152</span><span id="line-152">          
.count(),</span>
+<span class="source-line-no">153</span><span id="line-153">        
master.getMasterProcedureExecutor().getProcedures().size());</span>
+<span class="source-line-no">154</span><span id="line-154">      LOG.info("Num 
of SCPs: " + master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">155</span><span id="line-155">        
.filter(proc -&gt; proc instanceof ServerCrashProcedure).count());</span>
+<span class="source-line-no">156</span><span id="line-156">      return 
(numRegions0 + numRegions1 + numRegions2)</span>
+<span class="source-line-no">157</span><span id="line-157">          == 
(cluster.getRegionServer(0).getNumberOfOnlineRegions()</span>
+<span class="source-line-no">158</span><span id="line-158">            + 
cluster.getRegionServer(1).getNumberOfOnlineRegions()</span>
+<span class="source-line-no">159</span><span id="line-159">            + 
cluster.getRegionServer(2).getNumberOfOnlineRegions())</span>
+<span class="source-line-no">160</span><span id="line-160">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">161</span><span id="line-161">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
+<span class="source-line-no">162</span><span id="line-162">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
+<span class="source-line-no">163</span><span id="line-163">          .count() 
== master.getMasterProcedureExecutor().getProcedures().size()</span>
+<span class="source-line-no">164</span><span id="line-164">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">165</span><span id="line-165">          
.anyMatch(proc -&gt; proc instanceof ServerCrashProcedure);</span>
+<span class="source-line-no">166</span><span id="line-166">    });</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">    // Ensure we 
have no inconsistent regions</span>
+<span class="source-line-no">169</span><span id="line-169">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
+<span class="source-line-no">170</span><span id="line-170">      
hbckChore.choreForTesting();</span>
+<span class="source-line-no">171</span><span id="line-171">      HbckReport 
report = hbckChore.getLastReport();</span>
+<span class="source-line-no">172</span><span id="line-172">      return 
report.getInconsistentRegions().isEmpty() &amp;&amp; 
report.getOrphanRegionsOnFS().isEmpty()</span>
+<span class="source-line-no">173</span><span id="line-173">        &amp;&amp; 
report.getOrphanRegionsOnRS().isEmpty();</span>
+<span class="source-line-no">174</span><span id="line-174">    });</span>
+<span class="source-line-no">175</span><span id="line-175"></span>
+<span class="source-line-no">176</span><span id="line-176">  }</span>
+<span class="source-line-no">177</span><span id="line-177"></span>
+<span class="source-line-no">178</span><span id="line-178">}</span>
 
 
 
diff --git 
a/testdevapidocs/org/apache/hadoop/hbase/util/TestProcDispatcher.html 
b/testdevapidocs/org/apache/hadoop/hbase/util/TestProcDispatcher.html
index 6a24d2c9b54..1c4024d0c5a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/TestProcDispatcher.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestProcDispatcher.html
@@ -229,7 +229,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="tearDownAfterClass()">
 <h3>tearDownAfterClass</h3>
-<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html#line-86">tearDownAfterClass</a></span>()
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html#line-87">tearDownAfterClass</a></span>()
                                throws <span class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html";
 title="class or interface in java.lang" 
class="external-link">Exception</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -240,7 +240,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="setUp()">
 <h3>setUp</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html#line-91">setUp</a></span>()
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html#line-92">setUp</a></span>()
            throws <span class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html";
 title="class or interface in java.lang" 
class="external-link">Exception</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -251,7 +251,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="testRetryLimitOnConnClosedErrors()">
 <h3>testRetryLimitOnConnClosedErrors</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html#line-101">testRetryLimitOnConnClosedErrors</a></span>()
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html#line-102">testRetryLimitOnConnClosedErrors</a></span>()
                                       throws <span class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html";
 title="class or interface in java.lang" 
class="external-link">Exception</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
diff --git 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html
index 17b77035e8e..784c195ea96 100644
--- 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html
+++ 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestProcDispatcher.html
@@ -90,104 +90,105 @@
 <span class="source-line-no">077</span><span id="line-77">  public static void 
setUpBeforeClass() throws Exception {</span>
 <span class="source-line-no">078</span><span id="line-78">    
TEST_UTIL.getConfiguration().set(HBASE_MASTER_RSPROC_DISPATCHER_CLASS,</span>
 <span class="source-line-no">079</span><span id="line-79">      
RSProcDispatcher.class.getName());</span>
-<span class="source-line-no">080</span><span id="line-80">    
TEST_UTIL.startMiniCluster(3);</span>
-<span class="source-line-no">081</span><span id="line-81">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
-<span class="source-line-no">082</span><span id="line-82">    rs0 = 
cluster.getRegionServer(0).getServerName();</span>
-<span class="source-line-no">083</span><span id="line-83">    
TEST_UTIL.getAdmin().balancerSwitch(false, true);</span>
-<span class="source-line-no">084</span><span id="line-84">  }</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">  @AfterClass</span>
-<span class="source-line-no">087</span><span id="line-87">  public static void 
tearDownAfterClass() throws Exception {</span>
-<span class="source-line-no">088</span><span id="line-88">    
TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">089</span><span id="line-89">  }</span>
-<span class="source-line-no">090</span><span id="line-90"></span>
-<span class="source-line-no">091</span><span id="line-91">  @Before</span>
-<span class="source-line-no">092</span><span id="line-92">  public void 
setUp() throws Exception {</span>
-<span class="source-line-no">093</span><span id="line-93">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
-<span class="source-line-no">094</span><span id="line-94">    TableDescriptor 
tableDesc = TableDescriptorBuilder.newBuilder(tableName)</span>
-<span class="source-line-no">095</span><span id="line-95">      
.setColumnFamily(ColumnFamilyDescriptorBuilder.of("fam1")).build();</span>
-<span class="source-line-no">096</span><span id="line-96">    int startKey = 
0;</span>
-<span class="source-line-no">097</span><span id="line-97">    int endKey = 
80000;</span>
-<span class="source-line-no">098</span><span id="line-98">    
TEST_UTIL.getAdmin().createTable(tableDesc, Bytes.toBytes(startKey), 
Bytes.toBytes(endKey), 9);</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">  @Test</span>
-<span class="source-line-no">102</span><span id="line-102">  public void 
testRetryLimitOnConnClosedErrors() throws Exception {</span>
-<span class="source-line-no">103</span><span id="line-103">    HbckChore 
hbckChore = new HbckChore(TEST_UTIL.getHBaseCluster().getMaster());</span>
-<span class="source-line-no">104</span><span id="line-104">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
-<span class="source-line-no">105</span><span id="line-105">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
-<span class="source-line-no">106</span><span id="line-106">    Admin admin = 
TEST_UTIL.getAdmin();</span>
-<span class="source-line-no">107</span><span id="line-107">    Table table = 
TEST_UTIL.getConnection().getTable(tableName);</span>
-<span class="source-line-no">108</span><span id="line-108">    List&lt;Put&gt; 
puts = IntStream.range(10, 50000).mapToObj(i -&gt; new 
Put(Bytes.toBytes(i))</span>
-<span class="source-line-no">109</span><span id="line-109">      
.addColumn(Bytes.toBytes("fam1"), Bytes.toBytes("q1"), Bytes.toBytes("val_" + 
i)))</span>
-<span class="source-line-no">110</span><span id="line-110">      
.collect(Collectors.toList());</span>
-<span class="source-line-no">111</span><span id="line-111">    
table.put(puts);</span>
-<span class="source-line-no">112</span><span id="line-112">    
admin.flush(tableName);</span>
-<span class="source-line-no">113</span><span id="line-113">    
admin.compact(tableName);</span>
-<span class="source-line-no">114</span><span id="line-114">    
Thread.sleep(3000);</span>
-<span class="source-line-no">115</span><span id="line-115">    HRegionServer 
hRegionServer0 = cluster.getRegionServer(0);</span>
-<span class="source-line-no">116</span><span id="line-116">    HRegionServer 
hRegionServer1 = cluster.getRegionServer(1);</span>
-<span class="source-line-no">117</span><span id="line-117">    HRegionServer 
hRegionServer2 = cluster.getRegionServer(2);</span>
-<span class="source-line-no">118</span><span id="line-118">    int numRegions0 
= hRegionServer0.getNumberOfOnlineRegions();</span>
-<span class="source-line-no">119</span><span id="line-119">    int numRegions1 
= hRegionServer1.getNumberOfOnlineRegions();</span>
-<span class="source-line-no">120</span><span id="line-120">    int numRegions2 
= hRegionServer2.getNumberOfOnlineRegions();</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">    
hbckChore.choreForTesting();</span>
-<span class="source-line-no">123</span><span id="line-123">    HbckReport 
hbckReport = hbckChore.getLastReport();</span>
-<span class="source-line-no">124</span><span id="line-124">    
Assert.assertEquals(0, hbckReport.getInconsistentRegions().size());</span>
-<span class="source-line-no">125</span><span id="line-125">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnFS().size());</span>
-<span class="source-line-no">126</span><span id="line-126">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnRS().size());</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128">    HRegion region0 
= hRegionServer0.getRegions().get(0);</span>
-<span class="source-line-no">129</span><span id="line-129">    // move all 
regions from server1 to server0</span>
-<span class="source-line-no">130</span><span id="line-130">    for (HRegion 
region : hRegionServer1.getRegions()) {</span>
-<span class="source-line-no">131</span><span id="line-131">      
TEST_UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), 
rs0);</span>
-<span class="source-line-no">132</span><span id="line-132">    }</span>
-<span class="source-line-no">133</span><span id="line-133">    
TEST_UTIL.getAdmin().move(region0.getRegionInfo().getEncodedNameAsBytes());</span>
-<span class="source-line-no">134</span><span id="line-134">    HMaster master 
= TEST_UTIL.getHBaseCluster().getMaster();</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136">    // 
Ensure:</span>
-<span class="source-line-no">137</span><span id="line-137">    // 1. num of 
regions before and after scheduling SCP remain same</span>
-<span class="source-line-no">138</span><span id="line-138">    // 2. all 
procedures including SCPs are successfully completed</span>
-<span class="source-line-no">139</span><span id="line-139">    // 3. two 
servers have SCPs scheduled</span>
-<span class="source-line-no">140</span><span id="line-140">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
-<span class="source-line-no">141</span><span id="line-141">      
LOG.info("numRegions0: {} , numRegions1: {} , numRegions2: {}", numRegions0, 
numRegions1,</span>
-<span class="source-line-no">142</span><span id="line-142">        
numRegions2);</span>
-<span class="source-line-no">143</span><span id="line-143">      
LOG.info("Online regions - server0 : {} , server1: {} , server2: {}",</span>
-<span class="source-line-no">144</span><span id="line-144">        
cluster.getRegionServer(0).getNumberOfOnlineRegions(),</span>
-<span class="source-line-no">145</span><span id="line-145">        
cluster.getRegionServer(1).getNumberOfOnlineRegions(),</span>
-<span class="source-line-no">146</span><span id="line-146">        
cluster.getRegionServer(2).getNumberOfOnlineRegions());</span>
-<span class="source-line-no">147</span><span id="line-147">      LOG.info("Num 
of successfully completed procedures: {} , num of all procedures: {}",</span>
-<span class="source-line-no">148</span><span id="line-148">        
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">149</span><span id="line-149">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
-<span class="source-line-no">150</span><span id="line-150">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
-<span class="source-line-no">151</span><span id="line-151">          
.count(),</span>
-<span class="source-line-no">152</span><span id="line-152">        
master.getMasterProcedureExecutor().getProcedures().size());</span>
-<span class="source-line-no">153</span><span id="line-153">      LOG.info("Num 
of SCPs: " + master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">154</span><span id="line-154">        
.filter(proc -&gt; proc instanceof ServerCrashProcedure).count());</span>
-<span class="source-line-no">155</span><span id="line-155">      return 
(numRegions0 + numRegions1 + numRegions2)</span>
-<span class="source-line-no">156</span><span id="line-156">          == 
(cluster.getRegionServer(0).getNumberOfOnlineRegions()</span>
-<span class="source-line-no">157</span><span id="line-157">            + 
cluster.getRegionServer(1).getNumberOfOnlineRegions()</span>
-<span class="source-line-no">158</span><span id="line-158">            + 
cluster.getRegionServer(2).getNumberOfOnlineRegions())</span>
-<span class="source-line-no">159</span><span id="line-159">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">160</span><span id="line-160">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
-<span class="source-line-no">161</span><span id="line-161">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
-<span class="source-line-no">162</span><span id="line-162">          .count() 
== master.getMasterProcedureExecutor().getProcedures().size()</span>
-<span class="source-line-no">163</span><span id="line-163">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">164</span><span id="line-164">          
.anyMatch(proc -&gt; proc instanceof ServerCrashProcedure);</span>
-<span class="source-line-no">165</span><span id="line-165">    });</span>
-<span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">    // Ensure we 
have no inconsistent regions</span>
-<span class="source-line-no">168</span><span id="line-168">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
-<span class="source-line-no">169</span><span id="line-169">      
hbckChore.choreForTesting();</span>
-<span class="source-line-no">170</span><span id="line-170">      HbckReport 
report = hbckChore.getLastReport();</span>
-<span class="source-line-no">171</span><span id="line-171">      return 
report.getInconsistentRegions().isEmpty() &amp;&amp; 
report.getOrphanRegionsOnFS().isEmpty()</span>
-<span class="source-line-no">172</span><span id="line-172">        &amp;&amp; 
report.getOrphanRegionsOnRS().isEmpty();</span>
-<span class="source-line-no">173</span><span id="line-173">    });</span>
-<span class="source-line-no">174</span><span id="line-174"></span>
-<span class="source-line-no">175</span><span id="line-175">  }</span>
-<span class="source-line-no">176</span><span id="line-176"></span>
-<span class="source-line-no">177</span><span id="line-177">}</span>
+<span class="source-line-no">080</span><span id="line-80">    
TEST_UTIL.getConfiguration().setInt("hbase.master.rs.remote.proc.fail.fast.limit",
 5);</span>
+<span class="source-line-no">081</span><span id="line-81">    
TEST_UTIL.startMiniCluster(3);</span>
+<span class="source-line-no">082</span><span id="line-82">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
+<span class="source-line-no">083</span><span id="line-83">    rs0 = 
cluster.getRegionServer(0).getServerName();</span>
+<span class="source-line-no">084</span><span id="line-84">    
TEST_UTIL.getAdmin().balancerSwitch(false, true);</span>
+<span class="source-line-no">085</span><span id="line-85">  }</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">  @AfterClass</span>
+<span class="source-line-no">088</span><span id="line-88">  public static void 
tearDownAfterClass() throws Exception {</span>
+<span class="source-line-no">089</span><span id="line-89">    
TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">090</span><span id="line-90">  }</span>
+<span class="source-line-no">091</span><span id="line-91"></span>
+<span class="source-line-no">092</span><span id="line-92">  @Before</span>
+<span class="source-line-no">093</span><span id="line-93">  public void 
setUp() throws Exception {</span>
+<span class="source-line-no">094</span><span id="line-94">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
+<span class="source-line-no">095</span><span id="line-95">    TableDescriptor 
tableDesc = TableDescriptorBuilder.newBuilder(tableName)</span>
+<span class="source-line-no">096</span><span id="line-96">      
.setColumnFamily(ColumnFamilyDescriptorBuilder.of("fam1")).build();</span>
+<span class="source-line-no">097</span><span id="line-97">    int startKey = 
0;</span>
+<span class="source-line-no">098</span><span id="line-98">    int endKey = 
80000;</span>
+<span class="source-line-no">099</span><span id="line-99">    
TEST_UTIL.getAdmin().createTable(tableDesc, Bytes.toBytes(startKey), 
Bytes.toBytes(endKey), 9);</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">  @Test</span>
+<span class="source-line-no">103</span><span id="line-103">  public void 
testRetryLimitOnConnClosedErrors() throws Exception {</span>
+<span class="source-line-no">104</span><span id="line-104">    HbckChore 
hbckChore = new HbckChore(TEST_UTIL.getHBaseCluster().getMaster());</span>
+<span class="source-line-no">105</span><span id="line-105">    final TableName 
tableName = TableName.valueOf(name.getMethodName());</span>
+<span class="source-line-no">106</span><span id="line-106">    
SingleProcessHBaseCluster cluster = TEST_UTIL.getHBaseCluster();</span>
+<span class="source-line-no">107</span><span id="line-107">    Admin admin = 
TEST_UTIL.getAdmin();</span>
+<span class="source-line-no">108</span><span id="line-108">    Table table = 
TEST_UTIL.getConnection().getTable(tableName);</span>
+<span class="source-line-no">109</span><span id="line-109">    List&lt;Put&gt; 
puts = IntStream.range(10, 50000).mapToObj(i -&gt; new 
Put(Bytes.toBytes(i))</span>
+<span class="source-line-no">110</span><span id="line-110">      
.addColumn(Bytes.toBytes("fam1"), Bytes.toBytes("q1"), Bytes.toBytes("val_" + 
i)))</span>
+<span class="source-line-no">111</span><span id="line-111">      
.collect(Collectors.toList());</span>
+<span class="source-line-no">112</span><span id="line-112">    
table.put(puts);</span>
+<span class="source-line-no">113</span><span id="line-113">    
admin.flush(tableName);</span>
+<span class="source-line-no">114</span><span id="line-114">    
admin.compact(tableName);</span>
+<span class="source-line-no">115</span><span id="line-115">    
Thread.sleep(3000);</span>
+<span class="source-line-no">116</span><span id="line-116">    HRegionServer 
hRegionServer0 = cluster.getRegionServer(0);</span>
+<span class="source-line-no">117</span><span id="line-117">    HRegionServer 
hRegionServer1 = cluster.getRegionServer(1);</span>
+<span class="source-line-no">118</span><span id="line-118">    HRegionServer 
hRegionServer2 = cluster.getRegionServer(2);</span>
+<span class="source-line-no">119</span><span id="line-119">    int numRegions0 
= hRegionServer0.getNumberOfOnlineRegions();</span>
+<span class="source-line-no">120</span><span id="line-120">    int numRegions1 
= hRegionServer1.getNumberOfOnlineRegions();</span>
+<span class="source-line-no">121</span><span id="line-121">    int numRegions2 
= hRegionServer2.getNumberOfOnlineRegions();</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">    
hbckChore.choreForTesting();</span>
+<span class="source-line-no">124</span><span id="line-124">    HbckReport 
hbckReport = hbckChore.getLastReport();</span>
+<span class="source-line-no">125</span><span id="line-125">    
Assert.assertEquals(0, hbckReport.getInconsistentRegions().size());</span>
+<span class="source-line-no">126</span><span id="line-126">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnFS().size());</span>
+<span class="source-line-no">127</span><span id="line-127">    
Assert.assertEquals(0, hbckReport.getOrphanRegionsOnRS().size());</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">    HRegion region0 
= hRegionServer0.getRegions().get(0);</span>
+<span class="source-line-no">130</span><span id="line-130">    // move all 
regions from server1 to server0</span>
+<span class="source-line-no">131</span><span id="line-131">    for (HRegion 
region : hRegionServer1.getRegions()) {</span>
+<span class="source-line-no">132</span><span id="line-132">      
TEST_UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), 
rs0);</span>
+<span class="source-line-no">133</span><span id="line-133">    }</span>
+<span class="source-line-no">134</span><span id="line-134">    
TEST_UTIL.getAdmin().move(region0.getRegionInfo().getEncodedNameAsBytes());</span>
+<span class="source-line-no">135</span><span id="line-135">    HMaster master 
= TEST_UTIL.getHBaseCluster().getMaster();</span>
+<span class="source-line-no">136</span><span id="line-136"></span>
+<span class="source-line-no">137</span><span id="line-137">    // 
Ensure:</span>
+<span class="source-line-no">138</span><span id="line-138">    // 1. num of 
regions before and after scheduling SCP remain same</span>
+<span class="source-line-no">139</span><span id="line-139">    // 2. all 
procedures including SCPs are successfully completed</span>
+<span class="source-line-no">140</span><span id="line-140">    // 3. two 
servers have SCPs scheduled</span>
+<span class="source-line-no">141</span><span id="line-141">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
+<span class="source-line-no">142</span><span id="line-142">      
LOG.info("numRegions0: {} , numRegions1: {} , numRegions2: {}", numRegions0, 
numRegions1,</span>
+<span class="source-line-no">143</span><span id="line-143">        
numRegions2);</span>
+<span class="source-line-no">144</span><span id="line-144">      
LOG.info("Online regions - server0 : {} , server1: {} , server2: {}",</span>
+<span class="source-line-no">145</span><span id="line-145">        
cluster.getRegionServer(0).getNumberOfOnlineRegions(),</span>
+<span class="source-line-no">146</span><span id="line-146">        
cluster.getRegionServer(1).getNumberOfOnlineRegions(),</span>
+<span class="source-line-no">147</span><span id="line-147">        
cluster.getRegionServer(2).getNumberOfOnlineRegions());</span>
+<span class="source-line-no">148</span><span id="line-148">      LOG.info("Num 
of successfully completed procedures: {} , num of all procedures: {}",</span>
+<span class="source-line-no">149</span><span id="line-149">        
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">150</span><span id="line-150">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
+<span class="source-line-no">151</span><span id="line-151">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
+<span class="source-line-no">152</span><span id="line-152">          
.count(),</span>
+<span class="source-line-no">153</span><span id="line-153">        
master.getMasterProcedureExecutor().getProcedures().size());</span>
+<span class="source-line-no">154</span><span id="line-154">      LOG.info("Num 
of SCPs: " + master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">155</span><span id="line-155">        
.filter(proc -&gt; proc instanceof ServerCrashProcedure).count());</span>
+<span class="source-line-no">156</span><span id="line-156">      return 
(numRegions0 + numRegions1 + numRegions2)</span>
+<span class="source-line-no">157</span><span id="line-157">          == 
(cluster.getRegionServer(0).getNumberOfOnlineRegions()</span>
+<span class="source-line-no">158</span><span id="line-158">            + 
cluster.getRegionServer(1).getNumberOfOnlineRegions()</span>
+<span class="source-line-no">159</span><span id="line-159">            + 
cluster.getRegionServer(2).getNumberOfOnlineRegions())</span>
+<span class="source-line-no">160</span><span id="line-160">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">161</span><span id="line-161">          
.filter(masterProcedureEnvProcedure -&gt; 
masterProcedureEnvProcedure.getState()</span>
+<span class="source-line-no">162</span><span id="line-162">              == 
ProcedureProtos.ProcedureState.SUCCESS)</span>
+<span class="source-line-no">163</span><span id="line-163">          .count() 
== master.getMasterProcedureExecutor().getProcedures().size()</span>
+<span class="source-line-no">164</span><span id="line-164">        &amp;&amp; 
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">165</span><span id="line-165">          
.anyMatch(proc -&gt; proc instanceof ServerCrashProcedure);</span>
+<span class="source-line-no">166</span><span id="line-166">    });</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">    // Ensure we 
have no inconsistent regions</span>
+<span class="source-line-no">169</span><span id="line-169">    
TEST_UTIL.waitFor(5000, 1000, () -&gt; {</span>
+<span class="source-line-no">170</span><span id="line-170">      
hbckChore.choreForTesting();</span>
+<span class="source-line-no">171</span><span id="line-171">      HbckReport 
report = hbckChore.getLastReport();</span>
+<span class="source-line-no">172</span><span id="line-172">      return 
report.getInconsistentRegions().isEmpty() &amp;&amp; 
report.getOrphanRegionsOnFS().isEmpty()</span>
+<span class="source-line-no">173</span><span id="line-173">        &amp;&amp; 
report.getOrphanRegionsOnRS().isEmpty();</span>
+<span class="source-line-no">174</span><span id="line-174">    });</span>
+<span class="source-line-no">175</span><span id="line-175"></span>
+<span class="source-line-no">176</span><span id="line-176">  }</span>
+<span class="source-line-no">177</span><span id="line-177"></span>
+<span class="source-line-no">178</span><span id="line-178">}</span>
 
 
 

Reply via email to