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 static final 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 static final 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> <span class="return-type">int</span> <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<Put>
puts = IntStream.range(10, 50000).mapToObj(i -> 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, () -> {</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 ->
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 -> 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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">160</span><span id="line-160">
.filter(masterProcedureEnvProcedure ->
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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">164</span><span id="line-164">
.anyMatch(proc -> 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, () -> {</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() &&
report.getOrphanRegionsOnFS().isEmpty()</span>
-<span class="source-line-no">172</span><span id="line-172"> &&
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<Put>
puts = IntStream.range(10, 50000).mapToObj(i -> 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, () -> {</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 ->
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 -> 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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">161</span><span id="line-161">
.filter(masterProcedureEnvProcedure ->
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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">165</span><span id="line-165">
.anyMatch(proc -> 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, () -> {</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() &&
report.getOrphanRegionsOnFS().isEmpty()</span>
+<span class="source-line-no">173</span><span id="line-173"> &&
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> <span class="return-type">void</span> <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> <span class="return-type">void</span> <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> <span
class="return-type">void</span> <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> <span
class="return-type">void</span> <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> <span
class="return-type">void</span> <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> <span
class="return-type">void</span> <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<Put>
puts = IntStream.range(10, 50000).mapToObj(i -> 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, () -> {</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 ->
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 -> 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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">160</span><span id="line-160">
.filter(masterProcedureEnvProcedure ->
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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">164</span><span id="line-164">
.anyMatch(proc -> 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, () -> {</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() &&
report.getOrphanRegionsOnFS().isEmpty()</span>
-<span class="source-line-no">172</span><span id="line-172"> &&
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<Put>
puts = IntStream.range(10, 50000).mapToObj(i -> 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, () -> {</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 ->
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 -> 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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">161</span><span id="line-161">
.filter(masterProcedureEnvProcedure ->
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"> &&
master.getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">165</span><span id="line-165">
.anyMatch(proc -> 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, () -> {</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() &&
report.getOrphanRegionsOnFS().isEmpty()</span>
+<span class="source-line-no">173</span><span id="line-173"> &&
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>