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 d3aa8dc6622 Published site at 0f6bbde6a8b8086b5140d2b5a55101121139c926.
d3aa8dc6622 is described below

commit d3aa8dc662227cfc801bd5c12920a6315b1d24fa
Author: jenkins <[email protected]>
AuthorDate: Mon Dec 15 14:53:53 2025 +0000

    Published site at 0f6bbde6a8b8086b5140d2b5a55101121139c926.
---
 apache_hbase_reference_guide.pdf                   |   4 +-
 .../hadoop/hbase/quotas/DefaultOperationQuota.html |  45 ++---
 book.html                                          |   2 +-
 checkstyle-aggregate.html                          |   4 +-
 dependency-convergence.html                        |   4 +-
 dependency-info.html                               |   4 +-
 dependency-management.html                         |   4 +-
 .../hadoop/hbase/quotas/DefaultOperationQuota.html |   4 +-
 .../SerialReplicationSourceWALReader.html          |   2 +-
 .../hadoop/hbase/quotas/DefaultOperationQuota.html |  45 ++---
 .../SerialReplicationSourceWALReader.html          |  77 ++++----
 hbase-website/dependency-convergence.html          |   4 +-
 hbase-website/dependency-info.html                 |   4 +-
 hbase-website/dependency-management.html           |   4 +-
 hbase-website/index.html                           |   4 +-
 hbase-website/issue-management.html                |   4 +-
 hbase-website/licenses.html                        |   4 +-
 hbase-website/mailing-lists.html                   |   4 +-
 hbase-website/plugin-management.html               |   4 +-
 hbase-website/plugins.html                         |   4 +-
 hbase-website/project-info.html                    |   4 +-
 hbase-website/scm.html                             |   4 +-
 hbase-website/summary.html                         |   4 +-
 hbase-website/team.html                            |   4 +-
 issue-management.html                              |   4 +-
 licenses.html                                      |   4 +-
 mailing-lists.html                                 |   4 +-
 plugin-management.html                             |   4 +-
 plugins.html                                       |   4 +-
 project-info.html                                  |   4 +-
 project-reports.html                               |   4 +-
 scm.html                                           |   4 +-
 summary.html                                       |   4 +-
 team.html                                          |   4 +-
 testapidocs/index-all.html                         |   2 -
 testapidocs/member-search-index.js                 |   2 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |   5 +-
 .../hbase/quotas/TestThreadHandlerUsageQuota.html  | 204 +++++++++++----------
 .../hadoop/hbase/quotas/ThrottleQuotaTestUtil.html |   2 +-
 testdevapidocs/constant-values.html                |   3 -
 testdevapidocs/index-all.html                      |   4 -
 testdevapidocs/member-search-index.js              |   2 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |   5 +-
 .../hbase/quotas/TestThreadHandlerUsageQuota.html  |  71 +++----
 .../hadoop/hbase/quotas/ThrottleQuotaTestUtil.html |   4 +-
 .../hbase/quotas/TestThreadHandlerUsageQuota.html  | 204 +++++++++++----------
 .../hadoop/hbase/quotas/ThrottleQuotaTestUtil.html |   2 +-
 47 files changed, 388 insertions(+), 409 deletions(-)

diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 05a6122a54a..47dcdfb22f1 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:20251213143116+00'00')
-/CreationDate (D:20251213144655+00'00')
+/ModDate (D:20251215143143+00'00')
+/CreationDate (D:20251215144835+00'00')
 >>
 endobj
 2 0 obj
diff --git 
a/apidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html 
b/apidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
index 834c8f5f2f7..b0576532db2 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
@@ -323,27 +323,30 @@
 <span class="source-line-no">310</span><span id="line-310">    return 
calculateReadCapacityUnit(actualSize) - 
calculateReadCapacityUnit(estimateSize);</span>
 <span class="source-line-no">311</span><span id="line-311">  }</span>
 <span class="source-line-no">312</span><span id="line-312"></span>
-<span class="source-line-no">313</span><span id="line-313">  private long 
calculateHandlerUsageTimeEstimate(final double requestsPerSecond,</span>
-<span class="source-line-no">314</span><span id="line-314">    final int 
numHandlerThreads) {</span>
-<span class="source-line-no">315</span><span id="line-315">    if 
(requestsPerSecond &lt;= numHandlerThreads) {</span>
-<span class="source-line-no">316</span><span id="line-316">      // If less 
than 1 request per second per handler thread, then we use the number of 
handler</span>
-<span class="source-line-no">317</span><span id="line-317">      // threads as 
a baseline to avoid incorrect estimations when the number of requests is 
very</span>
-<span class="source-line-no">318</span><span id="line-318">      // low.</span>
-<span class="source-line-no">319</span><span id="line-319">      return 
numHandlerThreads;</span>
-<span class="source-line-no">320</span><span id="line-320">    } else {</span>
-<span class="source-line-no">321</span><span id="line-321">      double 
requestsPerMillisecond = Math.ceil(requestsPerSecond / 1000);</span>
-<span class="source-line-no">322</span><span id="line-322">      // We don't 
ever want zero here</span>
-<span class="source-line-no">323</span><span id="line-323">      return 
Math.max((long) requestsPerMillisecond, 1L);</span>
-<span class="source-line-no">324</span><span id="line-324">    }</span>
-<span class="source-line-no">325</span><span id="line-325">  }</span>
-<span class="source-line-no">326</span><span id="line-326"></span>
-<span class="source-line-no">327</span><span id="line-327">  private long 
calculateHandlerUsageMsDiff() {</span>
-<span class="source-line-no">328</span><span id="line-328">    long 
currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">329</span><span id="line-329">    long startTime 
= 
RpcServer.getCurrentCall().map(RpcCall::getStartTime).orElse(currentTime);</span>
-<span class="source-line-no">330</span><span id="line-330">    long 
timeElapsed = currentTime - startTime;</span>
-<span class="source-line-no">331</span><span id="line-331">    return 
handlerUsageTimeConsumed - timeElapsed;</span>
-<span class="source-line-no">332</span><span id="line-332">  }</span>
-<span class="source-line-no">333</span><span id="line-333">}</span>
+<span class="source-line-no">313</span><span id="line-313">  // TODO: the 
implementation of this method seems incorrect, although finally we will correct 
the</span>
+<span class="source-line-no">314</span><span id="line-314">  // usage when 
closing</span>
+<span class="source-line-no">315</span><span id="line-315">  private long 
calculateHandlerUsageTimeEstimate(final double requestsPerSecond,</span>
+<span class="source-line-no">316</span><span id="line-316">    final int 
numHandlerThreads) {</span>
+<span class="source-line-no">317</span><span id="line-317">    if 
(requestsPerSecond &lt;= numHandlerThreads) {</span>
+<span class="source-line-no">318</span><span id="line-318">      // If less 
than 1 request per second per handler thread, then we use the number of 
handler</span>
+<span class="source-line-no">319</span><span id="line-319">      // threads as 
a baseline to avoid incorrect estimations when the number of requests is 
very</span>
+<span class="source-line-no">320</span><span id="line-320">      // low.</span>
+<span class="source-line-no">321</span><span id="line-321">      return 
numHandlerThreads;</span>
+<span class="source-line-no">322</span><span id="line-322">    } else {</span>
+<span class="source-line-no">323</span><span id="line-323">      double 
requestsPerMillisecond = Math.ceil(requestsPerSecond / 1000);</span>
+<span class="source-line-no">324</span><span id="line-324">      // We don't 
ever want zero here</span>
+<span class="source-line-no">325</span><span id="line-325">      return 
Math.max((long) requestsPerMillisecond, 1L);</span>
+<span class="source-line-no">326</span><span id="line-326">    }</span>
+<span class="source-line-no">327</span><span id="line-327">  }</span>
+<span class="source-line-no">328</span><span id="line-328"></span>
+<span class="source-line-no">329</span><span id="line-329">  private long 
calculateHandlerUsageMsDiff() {</span>
+<span class="source-line-no">330</span><span id="line-330">    long 
currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">331</span><span id="line-331">    long startTime 
= 
RpcServer.getCurrentCall().map(RpcCall::getStartTime).orElse(currentTime);</span>
+<span class="source-line-no">332</span><span id="line-332">    long 
timeElapsed = currentTime - startTime;</span>
+<span class="source-line-no">333</span><span id="line-333">    // actualTime - 
estimateTime</span>
+<span class="source-line-no">334</span><span id="line-334">    return 
timeElapsed - handlerUsageTimeConsumed;</span>
+<span class="source-line-no">335</span><span id="line-335">  }</span>
+<span class="source-line-no">336</span><span id="line-336">}</span>
 
 
 
diff --git a/book.html b/book.html
index 6a2ff09f3ad..661ffd3f9e6 100644
--- a/book.html
+++ b/book.html
@@ -50183,7 +50183,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-12-13 14:31:16 UTC
+Last updated 2025-12-15 14:31:43 UTC
 </div>
 </div>
 <script type="text/x-mathjax-config">
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 4e1bec89eaf..765c4aa2b5c 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 
2025-12-13
+ from 
org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 039032a95e9..e994ebe0ae5 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-convergence
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-convergence
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/dependency-info.html b/dependency-info.html
index 5a22b6416d8..f6c1f786c48 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-info
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-info
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/dependency-management.html b/dependency-management.html
index d1dc6ebdbf8..eff00e0f689 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-management
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-management
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git 
a/devapidocs/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html 
b/devapidocs/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
index 24caa9138ec..810d9509327 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
@@ -732,14 +732,14 @@ implements <a href="OperationQuota.html" title="interface 
in org.apache.hadoop.h
 <li>
 <section class="detail" id="calculateHandlerUsageTimeEstimate(double,int)">
 <h3>calculateHandlerUsageTimeEstimate</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">long</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html#line-313">calculateHandlerUsageTimeEstimate</a></span><wbr><span
 class="parameters">(double&nbsp;requestsPerSecond,
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">long</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html#line-315">calculateHandlerUsageTimeEstimate</a></span><wbr><span
 class="parameters">(double&nbsp;requestsPerSecond,
  int&nbsp;numHandlerThreads)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="calculateHandlerUsageMsDiff()">
 <h3>calculateHandlerUsageMsDiff</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">long</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html#line-327">calculateHandlerUsageMsDiff</a></span>()</div>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">long</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html#line-329">calculateHandlerUsageMsDiff</a></span>()</div>
 </section>
 </li>
 </ul>
diff --git 
a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
 
b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
index 96e7afdafc9..a304055db4d 100644
--- 
a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
+++ 
b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
@@ -253,7 +253,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" 
id="removeEntryFromStream(org.apache.hadoop.hbase.wal.WAL.Entry,org.apache.hadoop.hbase.replication.regionserver.WALEntryStream,org.apache.hadoop.hbase.replication.regionserver.WALEntryBatch)">
 <h3>removeEntryFromStream</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html#line-125">removeEntryFromStream</a></span><wbr><span
 class="parameters">(<a href="../../wal/WAL.Entry.html" title="class in 
org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry,
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html#line-130">removeEntryFromStream</a></span><wbr><span
 class="parameters">(<a href="../../wal/WAL.Entry.html" title="class in 
org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry,
  <a href="WALEntryStream.html" title="class in 
org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream,
  <a href="WALEntryBatch.html" title="class in 
org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch)</span></div>
 </section>
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html 
b/devapidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
index 834c8f5f2f7..b0576532db2 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/quotas/DefaultOperationQuota.html
@@ -323,27 +323,30 @@
 <span class="source-line-no">310</span><span id="line-310">    return 
calculateReadCapacityUnit(actualSize) - 
calculateReadCapacityUnit(estimateSize);</span>
 <span class="source-line-no">311</span><span id="line-311">  }</span>
 <span class="source-line-no">312</span><span id="line-312"></span>
-<span class="source-line-no">313</span><span id="line-313">  private long 
calculateHandlerUsageTimeEstimate(final double requestsPerSecond,</span>
-<span class="source-line-no">314</span><span id="line-314">    final int 
numHandlerThreads) {</span>
-<span class="source-line-no">315</span><span id="line-315">    if 
(requestsPerSecond &lt;= numHandlerThreads) {</span>
-<span class="source-line-no">316</span><span id="line-316">      // If less 
than 1 request per second per handler thread, then we use the number of 
handler</span>
-<span class="source-line-no">317</span><span id="line-317">      // threads as 
a baseline to avoid incorrect estimations when the number of requests is 
very</span>
-<span class="source-line-no">318</span><span id="line-318">      // low.</span>
-<span class="source-line-no">319</span><span id="line-319">      return 
numHandlerThreads;</span>
-<span class="source-line-no">320</span><span id="line-320">    } else {</span>
-<span class="source-line-no">321</span><span id="line-321">      double 
requestsPerMillisecond = Math.ceil(requestsPerSecond / 1000);</span>
-<span class="source-line-no">322</span><span id="line-322">      // We don't 
ever want zero here</span>
-<span class="source-line-no">323</span><span id="line-323">      return 
Math.max((long) requestsPerMillisecond, 1L);</span>
-<span class="source-line-no">324</span><span id="line-324">    }</span>
-<span class="source-line-no">325</span><span id="line-325">  }</span>
-<span class="source-line-no">326</span><span id="line-326"></span>
-<span class="source-line-no">327</span><span id="line-327">  private long 
calculateHandlerUsageMsDiff() {</span>
-<span class="source-line-no">328</span><span id="line-328">    long 
currentTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">329</span><span id="line-329">    long startTime 
= 
RpcServer.getCurrentCall().map(RpcCall::getStartTime).orElse(currentTime);</span>
-<span class="source-line-no">330</span><span id="line-330">    long 
timeElapsed = currentTime - startTime;</span>
-<span class="source-line-no">331</span><span id="line-331">    return 
handlerUsageTimeConsumed - timeElapsed;</span>
-<span class="source-line-no">332</span><span id="line-332">  }</span>
-<span class="source-line-no">333</span><span id="line-333">}</span>
+<span class="source-line-no">313</span><span id="line-313">  // TODO: the 
implementation of this method seems incorrect, although finally we will correct 
the</span>
+<span class="source-line-no">314</span><span id="line-314">  // usage when 
closing</span>
+<span class="source-line-no">315</span><span id="line-315">  private long 
calculateHandlerUsageTimeEstimate(final double requestsPerSecond,</span>
+<span class="source-line-no">316</span><span id="line-316">    final int 
numHandlerThreads) {</span>
+<span class="source-line-no">317</span><span id="line-317">    if 
(requestsPerSecond &lt;= numHandlerThreads) {</span>
+<span class="source-line-no">318</span><span id="line-318">      // If less 
than 1 request per second per handler thread, then we use the number of 
handler</span>
+<span class="source-line-no">319</span><span id="line-319">      // threads as 
a baseline to avoid incorrect estimations when the number of requests is 
very</span>
+<span class="source-line-no">320</span><span id="line-320">      // low.</span>
+<span class="source-line-no">321</span><span id="line-321">      return 
numHandlerThreads;</span>
+<span class="source-line-no">322</span><span id="line-322">    } else {</span>
+<span class="source-line-no">323</span><span id="line-323">      double 
requestsPerMillisecond = Math.ceil(requestsPerSecond / 1000);</span>
+<span class="source-line-no">324</span><span id="line-324">      // We don't 
ever want zero here</span>
+<span class="source-line-no">325</span><span id="line-325">      return 
Math.max((long) requestsPerMillisecond, 1L);</span>
+<span class="source-line-no">326</span><span id="line-326">    }</span>
+<span class="source-line-no">327</span><span id="line-327">  }</span>
+<span class="source-line-no">328</span><span id="line-328"></span>
+<span class="source-line-no">329</span><span id="line-329">  private long 
calculateHandlerUsageMsDiff() {</span>
+<span class="source-line-no">330</span><span id="line-330">    long 
currentTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">331</span><span id="line-331">    long startTime 
= 
RpcServer.getCurrentCall().map(RpcCall::getStartTime).orElse(currentTime);</span>
+<span class="source-line-no">332</span><span id="line-332">    long 
timeElapsed = currentTime - startTime;</span>
+<span class="source-line-no">333</span><span id="line-333">    // actualTime - 
estimateTime</span>
+<span class="source-line-no">334</span><span id="line-334">    return 
timeElapsed - handlerUsageTimeConsumed;</span>
+<span class="source-line-no">335</span><span id="line-335">  }</span>
+<span class="source-line-no">336</span><span id="line-336">}</span>
 
 
 
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
index f49a53b9e05..ceb935a891d 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
@@ -109,43 +109,48 @@
 <span class="source-line-no">096</span><span id="line-96">            
break;</span>
 <span class="source-line-no">097</span><span id="line-97">          }</span>
 <span class="source-line-no">098</span><span id="line-98">          
sleepMultiplier = sleep(sleepMultiplier);</span>
-<span class="source-line-no">099</span><span id="line-99">        }</span>
-<span class="source-line-no">100</span><span id="line-100">        // actually 
remove the entry.</span>
-<span class="source-line-no">101</span><span id="line-101">        
removeEntryFromStream(entry, entryStream, batch);</span>
-<span class="source-line-no">102</span><span id="line-102">        if 
(addEntryToBatch(batch, entry)) {</span>
-<span class="source-line-no">103</span><span id="line-103">          
break;</span>
+<span class="source-line-no">099</span><span id="line-99">          // Always 
make sure to continue/break from the loop after handling the exception.</span>
+<span class="source-line-no">100</span><span id="line-100">          // 
Otherwise we will drop down below into logic to push the entry,</span>
+<span class="source-line-no">101</span><span id="line-101">          // but 
since we don't know if the entry can be pushed we may push</span>
+<span class="source-line-no">102</span><span id="line-102">          // the 
entry out of order, breaking serial replication guarantees.</span>
+<span class="source-line-no">103</span><span id="line-103">          
continue;</span>
 <span class="source-line-no">104</span><span id="line-104">        }</span>
-<span class="source-line-no">105</span><span id="line-105">      } else 
{</span>
-<span class="source-line-no">106</span><span id="line-106">        // actually 
remove the entry.</span>
-<span class="source-line-no">107</span><span id="line-107">        
removeEntryFromStream(null, entryStream, batch);</span>
-<span class="source-line-no">108</span><span id="line-108">      }</span>
-<span class="source-line-no">109</span><span id="line-109">      
WALEntryStream.HasNext hasNext = entryStream.hasNext();</span>
-<span class="source-line-no">110</span><span id="line-110">      // always 
return if we have switched to a new file.</span>
-<span class="source-line-no">111</span><span id="line-111">      if 
(switched(entryStream, currentPath)) {</span>
-<span class="source-line-no">112</span><span id="line-112">        
batch.setEndOfFile(true);</span>
-<span class="source-line-no">113</span><span id="line-113">        
break;</span>
-<span class="source-line-no">114</span><span id="line-114">      }</span>
-<span class="source-line-no">115</span><span id="line-115">      if (hasNext 
!= WALEntryStream.HasNext.YES) {</span>
-<span class="source-line-no">116</span><span id="line-116">        // For 
hasNext other than YES, it is OK to just retry.</span>
-<span class="source-line-no">117</span><span id="line-117">        // As for 
RETRY and RETRY_IMMEDIATELY, the correct action is to retry, and for NO, it 
will</span>
-<span class="source-line-no">118</span><span id="line-118">        // return 
NO again when you call the method next time, so it is OK to just return here 
and</span>
-<span class="source-line-no">119</span><span id="line-119">        // let the 
loop in the upper layer to call hasNext again.</span>
-<span class="source-line-no">120</span><span id="line-120">        
break;</span>
-<span class="source-line-no">121</span><span id="line-121">      }</span>
-<span class="source-line-no">122</span><span id="line-122">    }</span>
-<span class="source-line-no">123</span><span id="line-123">  }</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125">  private void 
removeEntryFromStream(Entry entry, WALEntryStream entryStream, WALEntryBatch 
batch) {</span>
-<span class="source-line-no">126</span><span id="line-126">    
entryStream.next();</span>
-<span class="source-line-no">127</span><span id="line-127">    
batch.setLastWalPosition(entryStream.getPosition());</span>
-<span class="source-line-no">128</span><span id="line-128">    // record last 
pushed sequence id if needed</span>
-<span class="source-line-no">129</span><span id="line-129">    if (entry != 
null) {</span>
-<span class="source-line-no">130</span><span id="line-130">      
batch.setLastSeqId(Bytes.toString(entry.getKey().getEncodedRegionName()),</span>
-<span class="source-line-no">131</span><span id="line-131">        
entry.getKey().getSequenceId());</span>
-<span class="source-line-no">132</span><span id="line-132">    }</span>
-<span class="source-line-no">133</span><span id="line-133">    
firstCellInEntryBeforeFiltering = null;</span>
-<span class="source-line-no">134</span><span id="line-134">  }</span>
-<span class="source-line-no">135</span><span id="line-135">}</span>
+<span class="source-line-no">105</span><span id="line-105">        // actually 
remove the entry.</span>
+<span class="source-line-no">106</span><span id="line-106">        
removeEntryFromStream(entry, entryStream, batch);</span>
+<span class="source-line-no">107</span><span id="line-107">        if 
(addEntryToBatch(batch, entry)) {</span>
+<span class="source-line-no">108</span><span id="line-108">          
break;</span>
+<span class="source-line-no">109</span><span id="line-109">        }</span>
+<span class="source-line-no">110</span><span id="line-110">      } else 
{</span>
+<span class="source-line-no">111</span><span id="line-111">        // actually 
remove the entry.</span>
+<span class="source-line-no">112</span><span id="line-112">        
removeEntryFromStream(null, entryStream, batch);</span>
+<span class="source-line-no">113</span><span id="line-113">      }</span>
+<span class="source-line-no">114</span><span id="line-114">      
WALEntryStream.HasNext hasNext = entryStream.hasNext();</span>
+<span class="source-line-no">115</span><span id="line-115">      // always 
return if we have switched to a new file.</span>
+<span class="source-line-no">116</span><span id="line-116">      if 
(switched(entryStream, currentPath)) {</span>
+<span class="source-line-no">117</span><span id="line-117">        
batch.setEndOfFile(true);</span>
+<span class="source-line-no">118</span><span id="line-118">        
break;</span>
+<span class="source-line-no">119</span><span id="line-119">      }</span>
+<span class="source-line-no">120</span><span id="line-120">      if (hasNext 
!= WALEntryStream.HasNext.YES) {</span>
+<span class="source-line-no">121</span><span id="line-121">        // For 
hasNext other than YES, it is OK to just retry.</span>
+<span class="source-line-no">122</span><span id="line-122">        // As for 
RETRY and RETRY_IMMEDIATELY, the correct action is to retry, and for NO, it 
will</span>
+<span class="source-line-no">123</span><span id="line-123">        // return 
NO again when you call the method next time, so it is OK to just return here 
and</span>
+<span class="source-line-no">124</span><span id="line-124">        // let the 
loop in the upper layer to call hasNext again.</span>
+<span class="source-line-no">125</span><span id="line-125">        
break;</span>
+<span class="source-line-no">126</span><span id="line-126">      }</span>
+<span class="source-line-no">127</span><span id="line-127">    }</span>
+<span class="source-line-no">128</span><span id="line-128">  }</span>
+<span class="source-line-no">129</span><span id="line-129"></span>
+<span class="source-line-no">130</span><span id="line-130">  private void 
removeEntryFromStream(Entry entry, WALEntryStream entryStream, WALEntryBatch 
batch) {</span>
+<span class="source-line-no">131</span><span id="line-131">    
entryStream.next();</span>
+<span class="source-line-no">132</span><span id="line-132">    
batch.setLastWalPosition(entryStream.getPosition());</span>
+<span class="source-line-no">133</span><span id="line-133">    // record last 
pushed sequence id if needed</span>
+<span class="source-line-no">134</span><span id="line-134">    if (entry != 
null) {</span>
+<span class="source-line-no">135</span><span id="line-135">      
batch.setLastSeqId(Bytes.toString(entry.getKey().getEncodedRegionName()),</span>
+<span class="source-line-no">136</span><span id="line-136">        
entry.getKey().getSequenceId());</span>
+<span class="source-line-no">137</span><span id="line-137">    }</span>
+<span class="source-line-no">138</span><span id="line-138">    
firstCellInEntryBeforeFiltering = null;</span>
+<span class="source-line-no">139</span><span id="line-139">  }</span>
+<span class="source-line-no">140</span><span id="line-140">}</span>
 
 
 
diff --git a/hbase-website/dependency-convergence.html 
b/hbase-website/dependency-convergence.html
index b434ca61d67..ca516216de7 100644
--- a/hbase-website/dependency-convergence.html
+++ b/hbase-website/dependency-convergence.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-convergence
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-convergence
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/dependency-info.html 
b/hbase-website/dependency-info.html
index 14e793f7c65..9567c5792ba 100644
--- a/hbase-website/dependency-info.html
+++ b/hbase-website/dependency-info.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-info
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-info
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/dependency-management.html 
b/hbase-website/dependency-management.html
index b5d3a98b739..41247987e09 100644
--- a/hbase-website/dependency-management.html
+++ b/hbase-website/dependency-management.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-management
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:dependency-management
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/index.html b/hbase-website/index.html
index 50372fdf585..637f95d5ee6 100644
--- a/hbase-website/index.html
+++ b/hbase-website/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:index 
at 2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:index 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/issue-management.html 
b/hbase-website/issue-management.html
index 655ec88b868..74973c7e8f1 100644
--- a/hbase-website/issue-management.html
+++ b/hbase-website/issue-management.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:issue-management
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:issue-management
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/licenses.html b/hbase-website/licenses.html
index da5aa8a894b..d7c1070c9f7 100644
--- a/hbase-website/licenses.html
+++ b/hbase-website/licenses.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:licenses at 
2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:licenses at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/mailing-lists.html b/hbase-website/mailing-lists.html
index eeac3c5710b..1862fb7b890 100644
--- a/hbase-website/mailing-lists.html
+++ b/hbase-website/mailing-lists.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:mailing-lists 
at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:mailing-lists 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/plugin-management.html 
b/hbase-website/plugin-management.html
index 0af24bc8192..520f6abaff7 100644
--- a/hbase-website/plugin-management.html
+++ b/hbase-website/plugin-management.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugin-management
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugin-management
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/plugins.html b/hbase-website/plugins.html
index 9a635868319..ac206220ecb 100644
--- a/hbase-website/plugins.html
+++ b/hbase-website/plugins.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugins 
at 2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugins 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/project-info.html b/hbase-website/project-info.html
index c6ef0ba1cee..d8a8075544e 100644
--- a/hbase-website/project-info.html
+++ b/hbase-website/project-info.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-site-plugin:3.12.0:CategorySummaryDocumentRenderer
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-site-plugin:3.12.0:CategorySummaryDocumentRenderer
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/scm.html b/hbase-website/scm.html
index ec96795ab62..f2ca5b288ce 100644
--- a/hbase-website/scm.html
+++ b/hbase-website/scm.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:scm at 
2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:scm at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/summary.html b/hbase-website/summary.html
index ed4d438d2c6..cc428e619ea 100644
--- a/hbase-website/summary.html
+++ b/hbase-website/summary.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:summary 
at 2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:summary 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/hbase-website/team.html b/hbase-website/team.html
index e79adc2bb8f..de611dce3ee 100644
--- a/hbase-website/team.html
+++ b/hbase-website/team.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:team at 
2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:team at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase - Website
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/issue-management.html b/issue-management.html
index 8ab4bae1ef8..d07f4653a66 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:issue-management
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:issue-management
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/licenses.html b/licenses.html
index 803a28b2f9b..b13cfa15b8d 100644
--- a/licenses.html
+++ b/licenses.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:licenses at 
2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:licenses at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/mailing-lists.html b/mailing-lists.html
index e414624fcef..e42dd3a2cb5 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:mailing-lists 
at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:mailing-lists 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/plugin-management.html b/plugin-management.html
index cfa490c1520..b501b1be31a 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugin-management
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugin-management
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/plugins.html b/plugins.html
index 0a8c85188e7..6ee8dd24a4d 100644
--- a/plugins.html
+++ b/plugins.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugins 
at 2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:plugins 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/project-info.html b/project-info.html
index 66474e5006e..a53a5167a71 100644
--- a/project-info.html
+++ b/project-info.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-site-plugin:3.12.0:CategorySummaryDocumentRenderer
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-site-plugin:3.12.0:CategorySummaryDocumentRenderer
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/project-reports.html b/project-reports.html
index 68c135a58b4..e1ad556f24f 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from 
org.apache.maven.plugins:maven-site-plugin:3.12.0:CategorySummaryDocumentRenderer
 at 2025-12-13
+ from 
org.apache.maven.plugins:maven-site-plugin:3.12.0:CategorySummaryDocumentRenderer
 at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/scm.html b/scm.html
index 7c4300a4662..5d0848d6ace 100644
--- a/scm.html
+++ b/scm.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:scm at 
2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:scm at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/summary.html b/summary.html
index c16f1f050af..e2aee697d59 100644
--- a/summary.html
+++ b/summary.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:summary 
at 2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:summary 
at 2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/team.html b/team.html
index aae9df64b13..47d159ee527 100644
--- a/team.html
+++ b/team.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!--
  | Generated by Apache Maven Doxia Site Renderer 1.11.1
- from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:team at 
2025-12-13
+ from org.apache.maven.plugins:maven-project-info-reports-plugin:3.1.2:team at 
2025-12-15
 
  | Rendered using Apache Maven Default Skin
 -->
@@ -45,7 +45,7 @@ Apache HBase
 
 
       <div class="xleft">
-        <span id="publishDate">Last Published: 2025-12-13</span>
+        <span id="publishDate">Last Published: 2025-12-15</span>
            | <span id="projectVersion">Version: 4.0.0-alpha-1-SNAPSHOT</span>
 
 
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index aaa928e9827..356c854ff24 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -3669,8 +3669,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a 
href="../apidocs/org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="../apidocs/org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.html" 
title="class or interface in org.apache.hadoop.hbase.quotas" 
class="external-link">TestTablesWithQuotas</a></dt>
 <dd>&nbsp;</dd>
-<dt><a 
href="../apidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="../apidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html"
 title="class or interface in org.apache.hadoop.hbase.quotas" 
class="external-link">TestThreadHandlerUsageQuota</a></dt>
-<dd>&nbsp;</dd>
 <dt><a 
href="../apidocs/org/apache/hadoop/hbase/quotas/TestThrottleSettings.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="../apidocs/org/apache/hadoop/hbase/quotas/TestThrottleSettings.html" 
title="class or interface in org.apache.hadoop.hbase.quotas" 
class="external-link">TestThrottleSettings</a></dt>
 <dd>&nbsp;</dd>
 <dt><a 
href="../apidocs/org/apache/hadoop/hbase/regionserver/http/TestRSStatusPage.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.regionserver.http">CLASS_RULE</a> - Static variable in 
class org.apache.hadoop.hbase.regionserver.http.<a 
href="../apidocs/org/apache/hadoop/hbase/regionserver/http/TestRSStatusPage.html"
 title="class or interface in org.apache.hadoop.hbase.regionserver.http" 
class="external-link">TestRSStatusPage</a></dt>
diff --git a/testapidocs/member-search-index.js 
b/testapidocs/member-search-index.js
index a38922bbdcf..67d53398b09 100644
--- a/testapidocs/member-search-index.js
+++ b/testapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = 
[{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"TestRegionObserverInterface","l":"A"},{"p":"org.apache.hadoop.hbase.client","c":"TestGetProcedureResult.DummyProcedure","l":"abort(MasterProcedureEnv)","u":"abort(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)"},{"p":"org.apache.hadoop.hbase.master","c":"TestMigrateNamespaceTable.SuspendProcedure","l"
 [...]
\ No newline at end of file
+memberSearchIndex = 
[{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"TestRegionObserverInterface","l":"A"},{"p":"org.apache.hadoop.hbase.client","c":"TestGetProcedureResult.DummyProcedure","l":"abort(MasterProcedureEnv)","u":"abort(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)"},{"p":"org.apache.hadoop.hbase.master","c":"TestMigrateNamespaceTable.SuspendProcedure","l"
 [...]
\ No newline at end of file
diff --git 
a/testapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html 
b/testapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 6224c4ddb59..b42684c381e 100644
--- a/testapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -3361,11 +3361,8 @@ loadScripts(document, 'script');</script>
 <div class="col-second odd-row-color"><span 
class="type-name-label">TestTablesWithQuotas.</span><code><a 
href="../../../../../../apidocs/org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code>static final <a 
href="../../../../../../apidocs/org/apache/hadoop/hbase/HBaseClassTestRule.html"
 title="class or interface in org.apache.hadoop.hbase" 
class="external-link">HBaseClassTestRule</a></code></div>
-<div class="col-second even-row-color"><span 
class="type-name-label">TestThreadHandlerUsageQuota.</span><code><a 
href="../../../../../../apidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a></code></div>
+<div class="col-second even-row-color"><span 
class="type-name-label">TestThrottleSettings.</span><code><a 
href="../../../../../../apidocs/org/apache/hadoop/hbase/quotas/TestThrottleSettings.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>static final <a 
href="../../../../../../apidocs/org/apache/hadoop/hbase/HBaseClassTestRule.html"
 title="class or interface in org.apache.hadoop.hbase" 
class="external-link">HBaseClassTestRule</a></code></div>
-<div class="col-second odd-row-color"><span 
class="type-name-label">TestThrottleSettings.</span><code><a 
href="../../../../../../apidocs/org/apache/hadoop/hbase/quotas/TestThrottleSettings.html#CLASS_RULE"
 class="member-name-link external-link" title="class or interface in 
org.apache.hadoop.hbase.quotas">CLASS_RULE</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
 </div>
 </section>
 </li>
diff --git 
a/testapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
 
b/testapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
index 175f5fc0ee1..b1395603029 100644
--- 
a/testapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
+++ 
b/testapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
@@ -31,12 +31,12 @@
 <span class="source-line-no">018</span><span id="line-18">package 
org.apache.hadoop.hbase.quotas;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import static 
org.apache.hadoop.hbase.quotas.ThrottleQuotaTestUtil.triggerUserCacheRefresh;</span>
-<span class="source-line-no">021</span><span id="line-21">import static 
org.junit.Assert.assertTrue;</span>
-<span class="source-line-no">022</span><span id="line-22"></span>
-<span class="source-line-no">023</span><span id="line-23">import 
java.io.IOException;</span>
-<span class="source-line-no">024</span><span id="line-24">import 
java.util.UUID;</span>
-<span class="source-line-no">025</span><span id="line-25">import 
java.util.concurrent.TimeUnit;</span>
-<span class="source-line-no">026</span><span id="line-26">import 
org.apache.hadoop.hbase.HBaseClassTestRule;</span>
+<span class="source-line-no">021</span><span id="line-21">import static 
org.hamcrest.MatcherAssert.assertThat;</span>
+<span class="source-line-no">022</span><span id="line-22">import static 
org.hamcrest.Matchers.lessThan;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import 
java.io.IOException;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
java.util.UUID;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
java.util.concurrent.TimeUnit;</span>
 <span class="source-line-no">027</span><span id="line-27">import 
org.apache.hadoop.hbase.HBaseTestingUtil;</span>
 <span class="source-line-no">028</span><span id="line-28">import 
org.apache.hadoop.hbase.HConstants;</span>
 <span class="source-line-no">029</span><span id="line-29">import 
org.apache.hadoop.hbase.TableName;</span>
@@ -47,103 +47,105 @@
 <span class="source-line-no">034</span><span id="line-34">import 
org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
 <span class="source-line-no">035</span><span id="line-35">import 
org.apache.hadoop.hbase.util.Bytes;</span>
 <span class="source-line-no">036</span><span id="line-36">import 
org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">037</span><span id="line-37">import 
org.junit.AfterClass;</span>
-<span class="source-line-no">038</span><span id="line-38">import 
org.junit.BeforeClass;</span>
-<span class="source-line-no">039</span><span id="line-39">import 
org.junit.ClassRule;</span>
-<span class="source-line-no">040</span><span id="line-40">import 
org.junit.Test;</span>
-<span class="source-line-no">041</span><span id="line-41">import 
org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">042</span><span id="line-42"></span>
-<span class="source-line-no">043</span><span id="line-43">@Category({ 
RegionServerTests.class, MediumTests.class })</span>
+<span class="source-line-no">037</span><span id="line-37">import 
org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">038</span><span id="line-38">import 
org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">039</span><span id="line-39">import 
org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">040</span><span id="line-40">import 
org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span 
id="line-42">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">043</span><span 
id="line-43">@Tag(MediumTests.TAG)</span>
 <span class="source-line-no">044</span><span id="line-44">public class 
TestThreadHandlerUsageQuota {</span>
-<span class="source-line-no">045</span><span id="line-45">  @ClassRule</span>
-<span class="source-line-no">046</span><span id="line-46">  public static 
final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">047</span><span id="line-47">    
HBaseClassTestRule.forClass(TestThreadHandlerUsageQuota.class);</span>
-<span class="source-line-no">048</span><span id="line-48">  private static 
final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">049</span><span id="line-49">  private static 
final TableName TABLE_NAME = 
TableName.valueOf(UUID.randomUUID().toString());</span>
-<span class="source-line-no">050</span><span id="line-50">  private static 
final int REFRESH_TIME = 5;</span>
-<span class="source-line-no">051</span><span id="line-51">  private static 
final byte[] FAMILY = Bytes.toBytes("cf");</span>
-<span class="source-line-no">052</span><span id="line-52">  private static 
final byte[] QUALIFIER = Bytes.toBytes("q");</span>
-<span class="source-line-no">053</span><span id="line-53">  private static 
final int MAX_OPS = 1000;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">  @AfterClass</span>
-<span class="source-line-no">056</span><span id="line-56">  public static void 
tearDown() throws Exception {</span>
-<span class="source-line-no">057</span><span id="line-57">    
ThrottleQuotaTestUtil.clearQuotaCache(TEST_UTIL);</span>
-<span class="source-line-no">058</span><span id="line-58">    
EnvironmentEdgeManager.reset();</span>
-<span class="source-line-no">059</span><span id="line-59">    
TEST_UTIL.deleteTable(TABLE_NAME);</span>
-<span class="source-line-no">060</span><span id="line-60">    
TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">061</span><span id="line-61">  }</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  @BeforeClass</span>
-<span class="source-line-no">064</span><span id="line-64">  public static void 
setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">065</span><span id="line-65">    // Enable 
quotas</span>
-<span class="source-line-no">066</span><span id="line-66">    
TEST_UTIL.getConfiguration().setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);</span>
-<span class="source-line-no">067</span><span id="line-67">    
TEST_UTIL.getConfiguration().setInt(QuotaCache.REFRESH_CONF_KEY, 
REFRESH_TIME);</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">    // Don't cache 
blocks to make IO predictable</span>
-<span class="source-line-no">070</span><span id="line-70">    
TEST_UTIL.getConfiguration().setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 
0.0f);</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">    
TEST_UTIL.startMiniCluster(1);</span>
-<span class="source-line-no">073</span><span id="line-73">    
TEST_UTIL.waitTableAvailable(QuotaTableUtil.QUOTA_TABLE_NAME);</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">    
TEST_UTIL.createTable(TABLE_NAME, FAMILY);</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">  private static 
final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">047</span><span id="line-47">  private static 
final TableName TABLE_NAME = 
TableName.valueOf(UUID.randomUUID().toString());</span>
+<span class="source-line-no">048</span><span id="line-48">  private static 
final byte[] FAMILY = Bytes.toBytes("cf");</span>
+<span class="source-line-no">049</span><span id="line-49">  private static 
final byte[] QUALIFIER = Bytes.toBytes("q");</span>
+<span class="source-line-no">050</span><span id="line-50">  private static 
final int MAX_OPS = 1000;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">  @AfterAll</span>
+<span class="source-line-no">053</span><span id="line-53">  public static void 
tearDown() throws Exception {</span>
+<span class="source-line-no">054</span><span id="line-54">    
ThrottleQuotaTestUtil.clearQuotaCache(TEST_UTIL);</span>
+<span class="source-line-no">055</span><span id="line-55">    
EnvironmentEdgeManager.reset();</span>
+<span class="source-line-no">056</span><span id="line-56">    
TEST_UTIL.deleteTable(TABLE_NAME);</span>
+<span class="source-line-no">057</span><span id="line-57">    
TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">058</span><span id="line-58">  }</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  @BeforeAll</span>
+<span class="source-line-no">061</span><span id="line-61">  public static void 
setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">062</span><span id="line-62">    // Enable 
quotas</span>
+<span class="source-line-no">063</span><span id="line-63">    
TEST_UTIL.getConfiguration().setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65">    // Don't cache 
blocks to make IO predictable</span>
+<span class="source-line-no">066</span><span id="line-66">    
TEST_UTIL.getConfiguration().setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 
0.0f);</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">    
TEST_UTIL.startMiniCluster(1);</span>
+<span class="source-line-no">069</span><span id="line-69">    
TEST_UTIL.waitTableAvailable(QuotaTableUtil.QUOTA_TABLE_NAME);</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">    
TEST_UTIL.createTable(TABLE_NAME, FAMILY);</span>
+<span class="source-line-no">072</span><span id="line-72"></span>
+<span class="source-line-no">073</span><span id="line-73">    
TEST_UTIL.waitTableAvailable(TABLE_NAME);</span>
+<span class="source-line-no">074</span><span id="line-74">    
TEST_UTIL.flush(TABLE_NAME);</span>
+<span class="source-line-no">075</span><span id="line-75">  }</span>
 <span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77">    
TEST_UTIL.waitTableAvailable(TABLE_NAME);</span>
-<span class="source-line-no">078</span><span id="line-78">    
TEST_UTIL.flush(TABLE_NAME);</span>
-<span class="source-line-no">079</span><span id="line-79">  }</span>
-<span class="source-line-no">080</span><span id="line-80"></span>
-<span class="source-line-no">081</span><span id="line-81">  @Test</span>
-<span class="source-line-no">082</span><span id="line-82">  public void 
testHandlerUsageThrottleForReads() throws Exception {</span>
-<span class="source-line-no">083</span><span id="line-83">    try (Table table 
= getTable()) {</span>
-<span class="source-line-no">084</span><span id="line-84">      
unthrottleUser();</span>
-<span class="source-line-no">085</span><span id="line-85">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">      
configureThrottle();</span>
-<span class="source-line-no">088</span><span id="line-88">      long 
throttledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">089</span><span id="line-89">      
assertTrue("Throttled attempts should be less than unthrottled attempts",</span>
-<span class="source-line-no">090</span><span id="line-90">        
throttledAttempts &lt; unthrottledAttempts);</span>
-<span class="source-line-no">091</span><span id="line-91">    }</span>
-<span class="source-line-no">092</span><span id="line-92">  }</span>
-<span class="source-line-no">093</span><span id="line-93"></span>
-<span class="source-line-no">094</span><span id="line-94">  @Test</span>
-<span class="source-line-no">095</span><span id="line-95">  public void 
testHandlerUsageThrottleForWrites() throws Exception {</span>
-<span class="source-line-no">096</span><span id="line-96">    try (Table table 
= getTable()) {</span>
-<span class="source-line-no">097</span><span id="line-97">      
unthrottleUser();</span>
-<span class="source-line-no">098</span><span id="line-98">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">      
configureThrottle();</span>
-<span class="source-line-no">101</span><span id="line-101">      long 
throttledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">102</span><span id="line-102">      
assertTrue("Throttled attempts should be less than unthrottled attempts",</span>
-<span class="source-line-no">103</span><span id="line-103">        
throttledAttempts &lt; unthrottledAttempts);</span>
-<span class="source-line-no">104</span><span id="line-104">    }</span>
-<span class="source-line-no">105</span><span id="line-105">  }</span>
-<span class="source-line-no">106</span><span id="line-106"></span>
-<span class="source-line-no">107</span><span id="line-107">  private void 
configureThrottle() throws Exception {</span>
-<span class="source-line-no">108</span><span id="line-108">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
-<span class="source-line-no">109</span><span id="line-109">      
admin.setQuota(QuotaSettingsFactory.throttleUser(getUserName(),</span>
-<span class="source-line-no">110</span><span id="line-110">        
ThrottleType.REQUEST_HANDLER_USAGE_MS, 1, TimeUnit.SECONDS));</span>
-<span class="source-line-no">111</span><span id="line-111">    }</span>
-<span class="source-line-no">112</span><span id="line-112">    
triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAME);</span>
-<span class="source-line-no">113</span><span id="line-113">  }</span>
-<span class="source-line-no">114</span><span id="line-114"></span>
-<span class="source-line-no">115</span><span id="line-115">  private void 
unthrottleUser() throws Exception {</span>
-<span class="source-line-no">116</span><span id="line-116">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
-<span class="source-line-no">117</span><span id="line-117">      
admin.setQuota(QuotaSettingsFactory.unthrottleUserByThrottleType(getUserName(),</span>
-<span class="source-line-no">118</span><span id="line-118">        
ThrottleType.REQUEST_HANDLER_USAGE_MS));</span>
-<span class="source-line-no">119</span><span id="line-119">    }</span>
-<span class="source-line-no">120</span><span id="line-120">    
triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAME);</span>
-<span class="source-line-no">121</span><span id="line-121">  }</span>
-<span class="source-line-no">122</span><span id="line-122"></span>
-<span class="source-line-no">123</span><span id="line-123">  private static 
String getUserName() throws IOException {</span>
-<span class="source-line-no">124</span><span id="line-124">    return 
User.getCurrent().getShortName();</span>
-<span class="source-line-no">125</span><span id="line-125">  }</span>
-<span class="source-line-no">126</span><span id="line-126"></span>
-<span class="source-line-no">127</span><span id="line-127">  private Table 
getTable() throws IOException {</span>
-<span class="source-line-no">128</span><span id="line-128">    
TEST_UTIL.getConfiguration().setInt("hbase.client.pause", 100);</span>
-<span class="source-line-no">129</span><span id="line-129">    
TEST_UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 
1);</span>
-<span class="source-line-no">130</span><span id="line-130">    return 
TEST_UTIL.getConnection().getTableBuilder(TABLE_NAME, 
null).setOperationTimeout(250)</span>
-<span class="source-line-no">131</span><span id="line-131">      
.build();</span>
-<span class="source-line-no">132</span><span id="line-132">  }</span>
-<span class="source-line-no">133</span><span id="line-133">}</span>
+<span class="source-line-no">077</span><span id="line-77">  @Test</span>
+<span class="source-line-no">078</span><span id="line-78">  public void 
testHandlerUsageThrottleForReads() throws Exception {</span>
+<span class="source-line-no">079</span><span id="line-79">    try (Table table 
= getTable()) {</span>
+<span class="source-line-no">080</span><span id="line-80">      
unthrottleUser();</span>
+<span class="source-line-no">081</span><span id="line-81">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">      
configureThrottle();</span>
+<span class="source-line-no">084</span><span id="line-84">      long 
throttledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">085</span><span id="line-85">      
assertThat("Throttled attempts should be less than unthrottled attempts", 
throttledAttempts,</span>
+<span class="source-line-no">086</span><span id="line-86">        
lessThan(unthrottledAttempts));</span>
+<span class="source-line-no">087</span><span id="line-87">    }</span>
+<span class="source-line-no">088</span><span id="line-88">  }</span>
+<span class="source-line-no">089</span><span id="line-89"></span>
+<span class="source-line-no">090</span><span id="line-90">  @Test</span>
+<span class="source-line-no">091</span><span id="line-91">  public void 
testHandlerUsageThrottleForWrites() throws Exception {</span>
+<span class="source-line-no">092</span><span id="line-92">    try (Table table 
= getTable()) {</span>
+<span class="source-line-no">093</span><span id="line-93">      
unthrottleUser();</span>
+<span class="source-line-no">094</span><span id="line-94">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">095</span><span id="line-95"></span>
+<span class="source-line-no">096</span><span id="line-96">      
configureThrottle();</span>
+<span class="source-line-no">097</span><span id="line-97">      long 
throttledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">098</span><span id="line-98">      
assertThat("Throttled attempts should be less than unthrottled attempts", 
throttledAttempts,</span>
+<span class="source-line-no">099</span><span id="line-99">        
lessThan(unthrottledAttempts));</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"></span>
+<span class="source-line-no">103</span><span id="line-103">  private void 
configureThrottle() throws Exception {</span>
+<span class="source-line-no">104</span><span id="line-104">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
+<span class="source-line-no">105</span><span id="line-105">      
admin.setQuota(QuotaSettingsFactory.throttleUser(getUserName(),</span>
+<span class="source-line-no">106</span><span id="line-106">        
ThrottleType.REQUEST_HANDLER_USAGE_MS, 1, TimeUnit.SECONDS));</span>
+<span class="source-line-no">107</span><span id="line-107">    }</span>
+<span class="source-line-no">108</span><span id="line-108">    
triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAME);</span>
+<span class="source-line-no">109</span><span id="line-109">    // increase the 
tick so we can calculate a positive rpc request time, and then consume all 
the</span>
+<span class="source-line-no">110</span><span id="line-110">    // available 
quota and make request fail next time</span>
+<span class="source-line-no">111</span><span id="line-111">    
ThrottleQuotaTestUtil.envEdge.setValue(System.currentTimeMillis() + 
10000);</span>
+<span class="source-line-no">112</span><span id="line-112">  }</span>
+<span class="source-line-no">113</span><span id="line-113"></span>
+<span class="source-line-no">114</span><span id="line-114">  private void 
unthrottleUser() throws Exception {</span>
+<span class="source-line-no">115</span><span id="line-115">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
+<span class="source-line-no">116</span><span id="line-116">      
admin.setQuota(QuotaSettingsFactory.unthrottleUserByThrottleType(getUserName(),</span>
+<span class="source-line-no">117</span><span id="line-117">        
ThrottleType.REQUEST_HANDLER_USAGE_MS));</span>
+<span class="source-line-no">118</span><span id="line-118">    }</span>
+<span class="source-line-no">119</span><span id="line-119">    
triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAME);</span>
+<span class="source-line-no">120</span><span id="line-120">    // increase the 
tick here too to make sure that we truly skip the quota check, not because 
we</span>
+<span class="source-line-no">121</span><span id="line-121">    // pass the 
quota check</span>
+<span class="source-line-no">122</span><span id="line-122">    
ThrottleQuotaTestUtil.envEdge.setValue(System.currentTimeMillis() + 
10000);</span>
+<span class="source-line-no">123</span><span id="line-123">  }</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">  private static 
String getUserName() throws IOException {</span>
+<span class="source-line-no">126</span><span id="line-126">    return 
User.getCurrent().getShortName();</span>
+<span class="source-line-no">127</span><span id="line-127">  }</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">  private Table 
getTable() throws IOException {</span>
+<span class="source-line-no">130</span><span id="line-130">    
TEST_UTIL.getConfiguration().setInt("hbase.client.pause", 100);</span>
+<span class="source-line-no">131</span><span id="line-131">    
TEST_UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 
1);</span>
+<span class="source-line-no">132</span><span id="line-132">    return 
TEST_UTIL.getConnection().getTableBuilder(TABLE_NAME, 
null).setOperationTimeout(250)</span>
+<span class="source-line-no">133</span><span id="line-133">      
.build();</span>
+<span class="source-line-no">134</span><span id="line-134">  }</span>
+<span class="source-line-no">135</span><span id="line-135">}</span>
 
 
 
diff --git 
a/testapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
 
b/testapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
index 80209035938..c58768273b8 100644
--- 
a/testapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
+++ 
b/testapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
@@ -60,7 +60,7 @@
 <span class="source-line-no">047</span><span id="line-47">public final class 
ThrottleQuotaTestUtil {</span>
 <span class="source-line-no">048</span><span id="line-48"></span>
 <span class="source-line-no">049</span><span id="line-49">  private final 
static Logger LOG = LoggerFactory.getLogger(ThrottleQuotaTestUtil.class);</span>
-<span class="source-line-no">050</span><span id="line-50">  private static 
ManualEnvironmentEdge envEdge = new ManualEnvironmentEdge();</span>
+<span class="source-line-no">050</span><span id="line-50">  static 
ManualEnvironmentEdge envEdge = new ManualEnvironmentEdge();</span>
 <span class="source-line-no">051</span><span id="line-51">  private final 
static int REFRESH_TIME = 30 * 60000;</span>
 <span class="source-line-no">052</span><span id="line-52">  static {</span>
 <span class="source-line-no">053</span><span id="line-53">    
envEdge.setValue(EnvironmentEdgeManager.currentTime());</span>
diff --git a/testdevapidocs/constant-values.html 
b/testdevapidocs/constant-values.html
index b65635c6aab..fcf1d0fe7cb 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -6148,9 +6148,6 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color"><code 
id="org.apache.hadoop.hbase.quotas.TestThreadHandlerUsageQuota.MAX_OPS">private&nbsp;static&nbsp;final&nbsp;int</code></div>
 <div class="col-second even-row-color"><code><a 
href="org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#MAX_OPS">MAX_OPS</a></code></div>
 <div class="col-last even-row-color"><code>1000</code></div>
-<div class="col-first odd-row-color"><code 
id="org.apache.hadoop.hbase.quotas.TestThreadHandlerUsageQuota.REFRESH_TIME">private&nbsp;static&nbsp;final&nbsp;int</code></div>
-<div class="col-second odd-row-color"><code><a 
href="org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#REFRESH_TIME">REFRESH_TIME</a></code></div>
-<div class="col-last odd-row-color"><code>5</code></div>
 </div>
 </li>
 <li>
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 1274512cf1a..33c435190b7 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -7957,8 +7957,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.html#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.html" title="class in 
org.apache.hadoop.hbase.quotas">TestTablesWithQuotas</a></dt>
 <dd>&nbsp;</dd>
-<dt><a 
href="org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#CLASS_RULE"
 class="member-name-link">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html" 
title="class in 
org.apache.hadoop.hbase.quotas">TestThreadHandlerUsageQuota</a></dt>
-<dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/quotas/TestThrottleSettings.html#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/TestThrottleSettings.html" title="class in 
org.apache.hadoop.hbase.quotas">TestThrottleSettings</a></dt>
 <dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/regionserver/compactions/PerfTestCompactionPolicies.html#CLASS_RULE"
 class="member-name-link">CLASS_RULE</a> - Static variable in class 
org.apache.hadoop.hbase.regionserver.compactions.<a 
href="org/apache/hadoop/hbase/regionserver/compactions/PerfTestCompactionPolicies.html"
 title="class in 
org.apache.hadoop.hbase.regionserver.compactions">PerfTestCompactionPolicies</a></dt>
@@ -43703,8 +43701,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/quotas/TestQuotaThrottle.html#REFRESH_TIME" 
class="member-name-link">REFRESH_TIME</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/TestQuotaThrottle.html" title="class in 
org.apache.hadoop.hbase.quotas">TestQuotaThrottle</a></dt>
 <dd>&nbsp;</dd>
-<dt><a 
href="org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#REFRESH_TIME"
 class="member-name-link">REFRESH_TIME</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html" 
title="class in 
org.apache.hadoop.hbase.quotas">TestThreadHandlerUsageQuota</a></dt>
-<dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html#REFRESH_TIME" 
class="member-name-link">REFRESH_TIME</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html" title="class 
in org.apache.hadoop.hbase.quotas">ThrottleQuotaTestUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/quotas/TestQuotaCache.html#REFRESH_TIME_MS" 
class="member-name-link">REFRESH_TIME_MS</a> - Static variable in class 
org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/TestQuotaCache.html" title="class in 
org.apache.hadoop.hbase.quotas">TestQuotaCache</a></dt>
diff --git a/testdevapidocs/member-search-index.js 
b/testdevapidocs/member-search-index.js
index 9b892aae5b4..633b26bb91e 100644
--- a/testdevapidocs/member-search-index.js
+++ b/testdevapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = 
[{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_ARI"},{"p":"org.apache.hadoop.hbase.io","c":"TestHalfStoreFileReader","l":"_b(String)","u":"_b(java.lang.String)"},{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_BRI"},{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.regionserver","c":"TestBlocksScanned","l":"_testBlo
 [...]
\ No newline at end of file
+memberSearchIndex = 
[{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_ARI"},{"p":"org.apache.hadoop.hbase.io","c":"TestHalfStoreFileReader","l":"_b(String)","u":"_b(java.lang.String)"},{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_BRI"},{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.regionserver","c":"TestBlocksScanned","l":"_testBlo
 [...]
\ No newline at end of file
diff --git 
a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html 
b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 7913a3a1ea1..5f7376f717c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -4802,11 +4802,8 @@ loadScripts(document, 'script');</script>
 <div class="col-second odd-row-color"><span 
class="type-name-label">TestTablesWithQuotas.</span><code><a 
href="../quotas/TestTablesWithQuotas.html#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code>static final <a 
href="../HBaseClassTestRule.html" title="class in 
org.apache.hadoop.hbase">HBaseClassTestRule</a></code></div>
-<div class="col-second even-row-color"><span 
class="type-name-label">TestThreadHandlerUsageQuota.</span><code><a 
href="../quotas/TestThreadHandlerUsageQuota.html#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a></code></div>
+<div class="col-second even-row-color"><span 
class="type-name-label">TestThrottleSettings.</span><code><a 
href="../quotas/TestThrottleSettings.html#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>static final <a 
href="../HBaseClassTestRule.html" title="class in 
org.apache.hadoop.hbase">HBaseClassTestRule</a></code></div>
-<div class="col-second odd-row-color"><span 
class="type-name-label">TestThrottleSettings.</span><code><a 
href="../quotas/TestThrottleSettings.html#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
 </div>
 </section>
 </li>
diff --git 
a/testdevapidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
 
b/testdevapidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
index 92765e3de52..82f2a86e574 100644
--- 
a/testdevapidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
+++ 
b/testdevapidocs/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
@@ -77,7 +77,8 @@ loadScripts(document, 'script');</script>
 </div>
 <section class="class-description" id="class-description">
 <hr>
-<div class="type-signature"><span class="modifiers">public class </span><span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-43">TestThreadHandlerUsageQuota</a></span>
+<div class="type-signature"><span 
class="annotations">@Tag("org.apache.hadoop.hbase.testclassification.RegionServerTests")
 @Tag("org.apache.hadoop.hbase.testclassification.MediumTests")
+</span><span class="modifiers">public class </span><span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-42">TestThreadHandlerUsageQuota</a></span>
 <span class="extends-implements">extends <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html";
 title="class or interface in java.lang" 
class="external-link">Object</a></span></div>
 </section>
 <section class="summary">
@@ -91,20 +92,14 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Field</div>
 <div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code>static final <a 
href="../HBaseClassTestRule.html" title="class in 
org.apache.hadoop.hbase">HBaseClassTestRule</a></code></div>
-<div class="col-second even-row-color"><code><a href="#CLASS_RULE" 
class="member-name-link">CLASS_RULE</a></code></div>
+<div class="col-first even-row-color"><code>private static final 
byte[]</code></div>
+<div class="col-second even-row-color"><code><a href="#FAMILY" 
class="member-name-link">FAMILY</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>private static final 
byte[]</code></div>
-<div class="col-second odd-row-color"><code><a href="#FAMILY" 
class="member-name-link">FAMILY</a></code></div>
+<div class="col-first odd-row-color"><code>private static final 
int</code></div>
+<div class="col-second odd-row-color"><code><a href="#MAX_OPS" 
class="member-name-link">MAX_OPS</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>private static final 
int</code></div>
-<div class="col-second even-row-color"><code><a href="#MAX_OPS" 
class="member-name-link">MAX_OPS</a></code></div>
-<div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>private static final 
byte[]</code></div>
-<div class="col-second odd-row-color"><code><a href="#QUALIFIER" 
class="member-name-link">QUALIFIER</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>private static final 
int</code></div>
-<div class="col-second even-row-color"><code><a href="#REFRESH_TIME" 
class="member-name-link">REFRESH_TIME</a></code></div>
+<div class="col-first even-row-color"><code>private static final 
byte[]</code></div>
+<div class="col-second even-row-color"><code><a href="#QUALIFIER" 
class="member-name-link">QUALIFIER</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>private static final 
org.apache.hadoop.hbase.TableName</code></div>
 <div class="col-second odd-row-color"><code><a href="#TABLE_NAME" 
class="member-name-link">TABLE_NAME</a></code></div>
@@ -181,53 +176,33 @@ loadScripts(document, 'script');</script>
 <h2>Field Details</h2>
 <ul class="member-list">
 <li>
-<section class="detail" id="CLASS_RULE">
-<h3>CLASS_RULE</h3>
-<div class="member-signature"><span class="modifiers">public static 
final</span>&nbsp;<span class="return-type"><a 
href="../HBaseClassTestRule.html" title="class in 
org.apache.hadoop.hbase">HBaseClassTestRule</a></span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-45">CLASS_RULE</a></span></div>
-</section>
-</li>
-<li>
 <section class="detail" id="TEST_UTIL">
 <h3>TEST_UTIL</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type"><a href="../HBaseTestingUtil.html" 
title="class in org.apache.hadoop.hbase">HBaseTestingUtil</a></span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-48">TEST_UTIL</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type"><a href="../HBaseTestingUtil.html" 
title="class in org.apache.hadoop.hbase">HBaseTestingUtil</a></span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-46">TEST_UTIL</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="TABLE_NAME">
 <h3>TABLE_NAME</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.TableName</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-49">TABLE_NAME</a></span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="REFRESH_TIME">
-<h3>REFRESH_TIME</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/quotas/TestThreadHandlerUsageQuota.html#line-50">REFRESH_TIME</a></span></div>
-<dl class="notes">
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><a 
href="../../../../../constant-values.html#org.apache.hadoop.hbase.quotas.TestThreadHandlerUsageQuota.REFRESH_TIME">Constant
 Field Values</a></li>
-</ul>
-</dd>
-</dl>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.TableName</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-47">TABLE_NAME</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="FAMILY">
 <h3>FAMILY</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-51">FAMILY</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-48">FAMILY</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="QUALIFIER">
 <h3>QUALIFIER</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-52">QUALIFIER</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-49">QUALIFIER</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="MAX_OPS">
 <h3>MAX_OPS</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/quotas/TestThreadHandlerUsageQuota.html#line-53">MAX_OPS</a></span></div>
+<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/quotas/TestThreadHandlerUsageQuota.html#line-50">MAX_OPS</a></span></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -263,7 +238,8 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="tearDown()">
 <h3>tearDown</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/quotas/TestThreadHandlerUsageQuota.html#line-55">tearDown</a></span>()
+<div class="member-signature"><span class="annotations">@AfterAll
+</span><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/quotas/TestThreadHandlerUsageQuota.html#line-52">tearDown</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>
@@ -274,7 +250,8 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="setUpBeforeClass()">
 <h3>setUpBeforeClass</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/quotas/TestThreadHandlerUsageQuota.html#line-63">setUpBeforeClass</a></span>()
+<div class="member-signature"><span class="annotations">@BeforeAll
+</span><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/quotas/TestThreadHandlerUsageQuota.html#line-60">setUpBeforeClass</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>
@@ -285,7 +262,8 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="testHandlerUsageThrottleForReads()">
 <h3>testHandlerUsageThrottleForReads</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/quotas/TestThreadHandlerUsageQuota.html#line-81">testHandlerUsageThrottleForReads</a></span>()
+<div class="member-signature"><span class="annotations">@Test
+</span><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/quotas/TestThreadHandlerUsageQuota.html#line-77">testHandlerUsageThrottleForReads</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>
@@ -296,7 +274,8 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="testHandlerUsageThrottleForWrites()">
 <h3>testHandlerUsageThrottleForWrites</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/quotas/TestThreadHandlerUsageQuota.html#line-94">testHandlerUsageThrottleForWrites</a></span>()
+<div class="member-signature"><span class="annotations">@Test
+</span><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/quotas/TestThreadHandlerUsageQuota.html#line-90">testHandlerUsageThrottleForWrites</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>
@@ -307,7 +286,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="configureThrottle()">
 <h3>configureThrottle</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-107">configureThrottle</a></span>()
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-103">configureThrottle</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>
@@ -318,7 +297,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="unthrottleUser()">
 <h3>unthrottleUser</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-115">unthrottleUser</a></span>()
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-114">unthrottleUser</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>
@@ -329,7 +308,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="getUserName()">
 <h3>getUserName</h3>
-<div class="member-signature"><span class="modifiers">private 
static</span>&nbsp;<span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a></span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-123">getUserName</a></span>()
+<div class="member-signature"><span class="modifiers">private 
static</span>&nbsp;<span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a></span>&nbsp;<span class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-125">getUserName</a></span>()
                            throws <span class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html";
 title="class or interface in java.io" 
class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -340,7 +319,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="getTable()">
 <h3>getTable</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.client.Table</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-127">getTable</a></span>()
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.client.Table</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html#line-129">getTable</a></span>()
                                                throws <span 
class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html";
 title="class or interface in java.io" 
class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
diff --git 
a/testdevapidocs/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html 
b/testdevapidocs/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
index f18216caede..0f44a8edb94 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
@@ -92,7 +92,7 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Field</div>
 <div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code>private static 
org.apache.hadoop.hbase.util.ManualEnvironmentEdge</code></div>
+<div class="col-first even-row-color"><code>(package private) static 
org.apache.hadoop.hbase.util.ManualEnvironmentEdge</code></div>
 <div class="col-second even-row-color"><code><a href="#envEdge" 
class="member-name-link">envEdge</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>private static final 
org.slf4j.Logger</code></div>
@@ -243,7 +243,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="envEdge">
 <h3>envEdge</h3>
-<div class="member-signature"><span class="modifiers">private 
static</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.util.ManualEnvironmentEdge</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html#line-50">envEdge</a></span></div>
+<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.util.ManualEnvironmentEdge</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html#line-50">envEdge</a></span></div>
 </section>
 </li>
 <li>
diff --git 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
index 175f5fc0ee1..b1395603029 100644
--- 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
+++ 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/TestThreadHandlerUsageQuota.html
@@ -31,12 +31,12 @@
 <span class="source-line-no">018</span><span id="line-18">package 
org.apache.hadoop.hbase.quotas;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import static 
org.apache.hadoop.hbase.quotas.ThrottleQuotaTestUtil.triggerUserCacheRefresh;</span>
-<span class="source-line-no">021</span><span id="line-21">import static 
org.junit.Assert.assertTrue;</span>
-<span class="source-line-no">022</span><span id="line-22"></span>
-<span class="source-line-no">023</span><span id="line-23">import 
java.io.IOException;</span>
-<span class="source-line-no">024</span><span id="line-24">import 
java.util.UUID;</span>
-<span class="source-line-no">025</span><span id="line-25">import 
java.util.concurrent.TimeUnit;</span>
-<span class="source-line-no">026</span><span id="line-26">import 
org.apache.hadoop.hbase.HBaseClassTestRule;</span>
+<span class="source-line-no">021</span><span id="line-21">import static 
org.hamcrest.MatcherAssert.assertThat;</span>
+<span class="source-line-no">022</span><span id="line-22">import static 
org.hamcrest.Matchers.lessThan;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import 
java.io.IOException;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
java.util.UUID;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
java.util.concurrent.TimeUnit;</span>
 <span class="source-line-no">027</span><span id="line-27">import 
org.apache.hadoop.hbase.HBaseTestingUtil;</span>
 <span class="source-line-no">028</span><span id="line-28">import 
org.apache.hadoop.hbase.HConstants;</span>
 <span class="source-line-no">029</span><span id="line-29">import 
org.apache.hadoop.hbase.TableName;</span>
@@ -47,103 +47,105 @@
 <span class="source-line-no">034</span><span id="line-34">import 
org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
 <span class="source-line-no">035</span><span id="line-35">import 
org.apache.hadoop.hbase.util.Bytes;</span>
 <span class="source-line-no">036</span><span id="line-36">import 
org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">037</span><span id="line-37">import 
org.junit.AfterClass;</span>
-<span class="source-line-no">038</span><span id="line-38">import 
org.junit.BeforeClass;</span>
-<span class="source-line-no">039</span><span id="line-39">import 
org.junit.ClassRule;</span>
-<span class="source-line-no">040</span><span id="line-40">import 
org.junit.Test;</span>
-<span class="source-line-no">041</span><span id="line-41">import 
org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">042</span><span id="line-42"></span>
-<span class="source-line-no">043</span><span id="line-43">@Category({ 
RegionServerTests.class, MediumTests.class })</span>
+<span class="source-line-no">037</span><span id="line-37">import 
org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">038</span><span id="line-38">import 
org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">039</span><span id="line-39">import 
org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">040</span><span id="line-40">import 
org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span 
id="line-42">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">043</span><span 
id="line-43">@Tag(MediumTests.TAG)</span>
 <span class="source-line-no">044</span><span id="line-44">public class 
TestThreadHandlerUsageQuota {</span>
-<span class="source-line-no">045</span><span id="line-45">  @ClassRule</span>
-<span class="source-line-no">046</span><span id="line-46">  public static 
final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">047</span><span id="line-47">    
HBaseClassTestRule.forClass(TestThreadHandlerUsageQuota.class);</span>
-<span class="source-line-no">048</span><span id="line-48">  private static 
final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">049</span><span id="line-49">  private static 
final TableName TABLE_NAME = 
TableName.valueOf(UUID.randomUUID().toString());</span>
-<span class="source-line-no">050</span><span id="line-50">  private static 
final int REFRESH_TIME = 5;</span>
-<span class="source-line-no">051</span><span id="line-51">  private static 
final byte[] FAMILY = Bytes.toBytes("cf");</span>
-<span class="source-line-no">052</span><span id="line-52">  private static 
final byte[] QUALIFIER = Bytes.toBytes("q");</span>
-<span class="source-line-no">053</span><span id="line-53">  private static 
final int MAX_OPS = 1000;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">  @AfterClass</span>
-<span class="source-line-no">056</span><span id="line-56">  public static void 
tearDown() throws Exception {</span>
-<span class="source-line-no">057</span><span id="line-57">    
ThrottleQuotaTestUtil.clearQuotaCache(TEST_UTIL);</span>
-<span class="source-line-no">058</span><span id="line-58">    
EnvironmentEdgeManager.reset();</span>
-<span class="source-line-no">059</span><span id="line-59">    
TEST_UTIL.deleteTable(TABLE_NAME);</span>
-<span class="source-line-no">060</span><span id="line-60">    
TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">061</span><span id="line-61">  }</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  @BeforeClass</span>
-<span class="source-line-no">064</span><span id="line-64">  public static void 
setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">065</span><span id="line-65">    // Enable 
quotas</span>
-<span class="source-line-no">066</span><span id="line-66">    
TEST_UTIL.getConfiguration().setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);</span>
-<span class="source-line-no">067</span><span id="line-67">    
TEST_UTIL.getConfiguration().setInt(QuotaCache.REFRESH_CONF_KEY, 
REFRESH_TIME);</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">    // Don't cache 
blocks to make IO predictable</span>
-<span class="source-line-no">070</span><span id="line-70">    
TEST_UTIL.getConfiguration().setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 
0.0f);</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">    
TEST_UTIL.startMiniCluster(1);</span>
-<span class="source-line-no">073</span><span id="line-73">    
TEST_UTIL.waitTableAvailable(QuotaTableUtil.QUOTA_TABLE_NAME);</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">    
TEST_UTIL.createTable(TABLE_NAME, FAMILY);</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">  private static 
final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">047</span><span id="line-47">  private static 
final TableName TABLE_NAME = 
TableName.valueOf(UUID.randomUUID().toString());</span>
+<span class="source-line-no">048</span><span id="line-48">  private static 
final byte[] FAMILY = Bytes.toBytes("cf");</span>
+<span class="source-line-no">049</span><span id="line-49">  private static 
final byte[] QUALIFIER = Bytes.toBytes("q");</span>
+<span class="source-line-no">050</span><span id="line-50">  private static 
final int MAX_OPS = 1000;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">  @AfterAll</span>
+<span class="source-line-no">053</span><span id="line-53">  public static void 
tearDown() throws Exception {</span>
+<span class="source-line-no">054</span><span id="line-54">    
ThrottleQuotaTestUtil.clearQuotaCache(TEST_UTIL);</span>
+<span class="source-line-no">055</span><span id="line-55">    
EnvironmentEdgeManager.reset();</span>
+<span class="source-line-no">056</span><span id="line-56">    
TEST_UTIL.deleteTable(TABLE_NAME);</span>
+<span class="source-line-no">057</span><span id="line-57">    
TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">058</span><span id="line-58">  }</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  @BeforeAll</span>
+<span class="source-line-no">061</span><span id="line-61">  public static void 
setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">062</span><span id="line-62">    // Enable 
quotas</span>
+<span class="source-line-no">063</span><span id="line-63">    
TEST_UTIL.getConfiguration().setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65">    // Don't cache 
blocks to make IO predictable</span>
+<span class="source-line-no">066</span><span id="line-66">    
TEST_UTIL.getConfiguration().setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 
0.0f);</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">    
TEST_UTIL.startMiniCluster(1);</span>
+<span class="source-line-no">069</span><span id="line-69">    
TEST_UTIL.waitTableAvailable(QuotaTableUtil.QUOTA_TABLE_NAME);</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">    
TEST_UTIL.createTable(TABLE_NAME, FAMILY);</span>
+<span class="source-line-no">072</span><span id="line-72"></span>
+<span class="source-line-no">073</span><span id="line-73">    
TEST_UTIL.waitTableAvailable(TABLE_NAME);</span>
+<span class="source-line-no">074</span><span id="line-74">    
TEST_UTIL.flush(TABLE_NAME);</span>
+<span class="source-line-no">075</span><span id="line-75">  }</span>
 <span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77">    
TEST_UTIL.waitTableAvailable(TABLE_NAME);</span>
-<span class="source-line-no">078</span><span id="line-78">    
TEST_UTIL.flush(TABLE_NAME);</span>
-<span class="source-line-no">079</span><span id="line-79">  }</span>
-<span class="source-line-no">080</span><span id="line-80"></span>
-<span class="source-line-no">081</span><span id="line-81">  @Test</span>
-<span class="source-line-no">082</span><span id="line-82">  public void 
testHandlerUsageThrottleForReads() throws Exception {</span>
-<span class="source-line-no">083</span><span id="line-83">    try (Table table 
= getTable()) {</span>
-<span class="source-line-no">084</span><span id="line-84">      
unthrottleUser();</span>
-<span class="source-line-no">085</span><span id="line-85">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">      
configureThrottle();</span>
-<span class="source-line-no">088</span><span id="line-88">      long 
throttledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">089</span><span id="line-89">      
assertTrue("Throttled attempts should be less than unthrottled attempts",</span>
-<span class="source-line-no">090</span><span id="line-90">        
throttledAttempts &lt; unthrottledAttempts);</span>
-<span class="source-line-no">091</span><span id="line-91">    }</span>
-<span class="source-line-no">092</span><span id="line-92">  }</span>
-<span class="source-line-no">093</span><span id="line-93"></span>
-<span class="source-line-no">094</span><span id="line-94">  @Test</span>
-<span class="source-line-no">095</span><span id="line-95">  public void 
testHandlerUsageThrottleForWrites() throws Exception {</span>
-<span class="source-line-no">096</span><span id="line-96">    try (Table table 
= getTable()) {</span>
-<span class="source-line-no">097</span><span id="line-97">      
unthrottleUser();</span>
-<span class="source-line-no">098</span><span id="line-98">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">      
configureThrottle();</span>
-<span class="source-line-no">101</span><span id="line-101">      long 
throttledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
-<span class="source-line-no">102</span><span id="line-102">      
assertTrue("Throttled attempts should be less than unthrottled attempts",</span>
-<span class="source-line-no">103</span><span id="line-103">        
throttledAttempts &lt; unthrottledAttempts);</span>
-<span class="source-line-no">104</span><span id="line-104">    }</span>
-<span class="source-line-no">105</span><span id="line-105">  }</span>
-<span class="source-line-no">106</span><span id="line-106"></span>
-<span class="source-line-no">107</span><span id="line-107">  private void 
configureThrottle() throws Exception {</span>
-<span class="source-line-no">108</span><span id="line-108">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
-<span class="source-line-no">109</span><span id="line-109">      
admin.setQuota(QuotaSettingsFactory.throttleUser(getUserName(),</span>
-<span class="source-line-no">110</span><span id="line-110">        
ThrottleType.REQUEST_HANDLER_USAGE_MS, 1, TimeUnit.SECONDS));</span>
-<span class="source-line-no">111</span><span id="line-111">    }</span>
-<span class="source-line-no">112</span><span id="line-112">    
triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAME);</span>
-<span class="source-line-no">113</span><span id="line-113">  }</span>
-<span class="source-line-no">114</span><span id="line-114"></span>
-<span class="source-line-no">115</span><span id="line-115">  private void 
unthrottleUser() throws Exception {</span>
-<span class="source-line-no">116</span><span id="line-116">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
-<span class="source-line-no">117</span><span id="line-117">      
admin.setQuota(QuotaSettingsFactory.unthrottleUserByThrottleType(getUserName(),</span>
-<span class="source-line-no">118</span><span id="line-118">        
ThrottleType.REQUEST_HANDLER_USAGE_MS));</span>
-<span class="source-line-no">119</span><span id="line-119">    }</span>
-<span class="source-line-no">120</span><span id="line-120">    
triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAME);</span>
-<span class="source-line-no">121</span><span id="line-121">  }</span>
-<span class="source-line-no">122</span><span id="line-122"></span>
-<span class="source-line-no">123</span><span id="line-123">  private static 
String getUserName() throws IOException {</span>
-<span class="source-line-no">124</span><span id="line-124">    return 
User.getCurrent().getShortName();</span>
-<span class="source-line-no">125</span><span id="line-125">  }</span>
-<span class="source-line-no">126</span><span id="line-126"></span>
-<span class="source-line-no">127</span><span id="line-127">  private Table 
getTable() throws IOException {</span>
-<span class="source-line-no">128</span><span id="line-128">    
TEST_UTIL.getConfiguration().setInt("hbase.client.pause", 100);</span>
-<span class="source-line-no">129</span><span id="line-129">    
TEST_UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 
1);</span>
-<span class="source-line-no">130</span><span id="line-130">    return 
TEST_UTIL.getConnection().getTableBuilder(TABLE_NAME, 
null).setOperationTimeout(250)</span>
-<span class="source-line-no">131</span><span id="line-131">      
.build();</span>
-<span class="source-line-no">132</span><span id="line-132">  }</span>
-<span class="source-line-no">133</span><span id="line-133">}</span>
+<span class="source-line-no">077</span><span id="line-77">  @Test</span>
+<span class="source-line-no">078</span><span id="line-78">  public void 
testHandlerUsageThrottleForReads() throws Exception {</span>
+<span class="source-line-no">079</span><span id="line-79">    try (Table table 
= getTable()) {</span>
+<span class="source-line-no">080</span><span id="line-80">      
unthrottleUser();</span>
+<span class="source-line-no">081</span><span id="line-81">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">      
configureThrottle();</span>
+<span class="source-line-no">084</span><span id="line-84">      long 
throttledAttempts = ThrottleQuotaTestUtil.doGets(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">085</span><span id="line-85">      
assertThat("Throttled attempts should be less than unthrottled attempts", 
throttledAttempts,</span>
+<span class="source-line-no">086</span><span id="line-86">        
lessThan(unthrottledAttempts));</span>
+<span class="source-line-no">087</span><span id="line-87">    }</span>
+<span class="source-line-no">088</span><span id="line-88">  }</span>
+<span class="source-line-no">089</span><span id="line-89"></span>
+<span class="source-line-no">090</span><span id="line-90">  @Test</span>
+<span class="source-line-no">091</span><span id="line-91">  public void 
testHandlerUsageThrottleForWrites() throws Exception {</span>
+<span class="source-line-no">092</span><span id="line-92">    try (Table table 
= getTable()) {</span>
+<span class="source-line-no">093</span><span id="line-93">      
unthrottleUser();</span>
+<span class="source-line-no">094</span><span id="line-94">      long 
unthrottledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">095</span><span id="line-95"></span>
+<span class="source-line-no">096</span><span id="line-96">      
configureThrottle();</span>
+<span class="source-line-no">097</span><span id="line-97">      long 
throttledAttempts = ThrottleQuotaTestUtil.doPuts(MAX_OPS, FAMILY, QUALIFIER, 
table);</span>
+<span class="source-line-no">098</span><span id="line-98">      
assertThat("Throttled attempts should be less than unthrottled attempts", 
throttledAttempts,</span>
+<span class="source-line-no">099</span><span id="line-99">        
lessThan(unthrottledAttempts));</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"></span>
+<span class="source-line-no">103</span><span id="line-103">  private void 
configureThrottle() throws Exception {</span>
+<span class="source-line-no">104</span><span id="line-104">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
+<span class="source-line-no">105</span><span id="line-105">      
admin.setQuota(QuotaSettingsFactory.throttleUser(getUserName(),</span>
+<span class="source-line-no">106</span><span id="line-106">        
ThrottleType.REQUEST_HANDLER_USAGE_MS, 1, TimeUnit.SECONDS));</span>
+<span class="source-line-no">107</span><span id="line-107">    }</span>
+<span class="source-line-no">108</span><span id="line-108">    
triggerUserCacheRefresh(TEST_UTIL, false, TABLE_NAME);</span>
+<span class="source-line-no">109</span><span id="line-109">    // increase the 
tick so we can calculate a positive rpc request time, and then consume all 
the</span>
+<span class="source-line-no">110</span><span id="line-110">    // available 
quota and make request fail next time</span>
+<span class="source-line-no">111</span><span id="line-111">    
ThrottleQuotaTestUtil.envEdge.setValue(System.currentTimeMillis() + 
10000);</span>
+<span class="source-line-no">112</span><span id="line-112">  }</span>
+<span class="source-line-no">113</span><span id="line-113"></span>
+<span class="source-line-no">114</span><span id="line-114">  private void 
unthrottleUser() throws Exception {</span>
+<span class="source-line-no">115</span><span id="line-115">    try (Admin 
admin = TEST_UTIL.getAdmin()) {</span>
+<span class="source-line-no">116</span><span id="line-116">      
admin.setQuota(QuotaSettingsFactory.unthrottleUserByThrottleType(getUserName(),</span>
+<span class="source-line-no">117</span><span id="line-117">        
ThrottleType.REQUEST_HANDLER_USAGE_MS));</span>
+<span class="source-line-no">118</span><span id="line-118">    }</span>
+<span class="source-line-no">119</span><span id="line-119">    
triggerUserCacheRefresh(TEST_UTIL, true, TABLE_NAME);</span>
+<span class="source-line-no">120</span><span id="line-120">    // increase the 
tick here too to make sure that we truly skip the quota check, not because 
we</span>
+<span class="source-line-no">121</span><span id="line-121">    // pass the 
quota check</span>
+<span class="source-line-no">122</span><span id="line-122">    
ThrottleQuotaTestUtil.envEdge.setValue(System.currentTimeMillis() + 
10000);</span>
+<span class="source-line-no">123</span><span id="line-123">  }</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">  private static 
String getUserName() throws IOException {</span>
+<span class="source-line-no">126</span><span id="line-126">    return 
User.getCurrent().getShortName();</span>
+<span class="source-line-no">127</span><span id="line-127">  }</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">  private Table 
getTable() throws IOException {</span>
+<span class="source-line-no">130</span><span id="line-130">    
TEST_UTIL.getConfiguration().setInt("hbase.client.pause", 100);</span>
+<span class="source-line-no">131</span><span id="line-131">    
TEST_UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 
1);</span>
+<span class="source-line-no">132</span><span id="line-132">    return 
TEST_UTIL.getConnection().getTableBuilder(TABLE_NAME, 
null).setOperationTimeout(250)</span>
+<span class="source-line-no">133</span><span id="line-133">      
.build();</span>
+<span class="source-line-no">134</span><span id="line-134">  }</span>
+<span class="source-line-no">135</span><span id="line-135">}</span>
 
 
 
diff --git 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
index 80209035938..c58768273b8 100644
--- 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
+++ 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/quotas/ThrottleQuotaTestUtil.html
@@ -60,7 +60,7 @@
 <span class="source-line-no">047</span><span id="line-47">public final class 
ThrottleQuotaTestUtil {</span>
 <span class="source-line-no">048</span><span id="line-48"></span>
 <span class="source-line-no">049</span><span id="line-49">  private final 
static Logger LOG = LoggerFactory.getLogger(ThrottleQuotaTestUtil.class);</span>
-<span class="source-line-no">050</span><span id="line-50">  private static 
ManualEnvironmentEdge envEdge = new ManualEnvironmentEdge();</span>
+<span class="source-line-no">050</span><span id="line-50">  static 
ManualEnvironmentEdge envEdge = new ManualEnvironmentEdge();</span>
 <span class="source-line-no">051</span><span id="line-51">  private final 
static int REFRESH_TIME = 30 * 60000;</span>
 <span class="source-line-no">052</span><span id="line-52">  static {</span>
 <span class="source-line-no">053</span><span id="line-53">    
envEdge.setValue(EnvironmentEdgeManager.currentTime());</span>

Reply via email to