You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2026/05/20 23:54:37 UTC

(hbase-site) branch asf-site updated: Published site at 745572b4e3a3aacb21deade6291a1ddf1d52721f.

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

asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 695768f6195 Published site at 745572b4e3a3aacb21deade6291a1ddf1d52721f.
695768f6195 is described below

commit 695768f6195c5bb34cd7bbe9d5227a68a2147c29
Author: HBase <de...@hbase.apache.org>
AuthorDate: Wed May 20 23:50:36 2026 +0000

    Published site at 745572b4e3a3aacb21deade6291a1ddf1d52721f.
---
 books/apache-hbase-reference-guide-dark-mode.pdf   |  Bin 38899975 -> 38899979 bytes
 books/apache-hbase-reference-guide.pdf             |  Bin 38790049 -> 38790049 bytes
 checkstyle-aggregate.html                          |   90 +-
 dependency-convergence.html                        |    2 +-
 dependency-info.html                               |    2 +-
 dependency-management.html                         |    2 +-
 hbase-website/dependency-convergence.html          |    2 +-
 hbase-website/dependency-info.html                 |    2 +-
 hbase-website/dependency-management.html           |    2 +-
 hbase-website/index.html                           |    2 +-
 hbase-website/issue-management.html                |    2 +-
 hbase-website/licenses.html                        |    2 +-
 hbase-website/mailing-lists.html                   |    2 +-
 hbase-website/plugin-management.html               |    2 +-
 hbase-website/plugins.html                         |    2 +-
 hbase-website/project-info.html                    |    2 +-
 hbase-website/scm.html                             |    2 +-
 hbase-website/summary.html                         |    2 +-
 hbase-website/team.html                            |    2 +-
 issue-management.html                              |    2 +-
 licenses.html                                      |    2 +-
 mailing-lists.html                                 |    2 +-
 plugin-management.html                             |    2 +-
 plugins.html                                       |    2 +-
 project-info.html                                  |    2 +-
 project-reports.html                               |    2 +-
 scm.html                                           |    2 +-
 summary.html                                       |    2 +-
 team.html                                          |    2 +-
 testapidocs/index-all.html                         |  212 +--
 testapidocs/member-search-index.js                 |    2 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |  153 ---
 .../class-use/HBaseParameterizedTestTemplate.html  |   39 +-
 .../hadoop/hbase/class-use/TableNameTestRule.html  |   12 -
 .../TestObservedExceptionsInBatch.html             |   80 +-
 .../TestOpenRegionFailedMemoryLeak.html            |  184 ++-
 ...stOpenSeqNumUnexpectedIncrease.MockHRegion.html |  167 ++-
 .../TestOpenSeqNumUnexpectedIncrease.html          |  167 ++-
 .../hbase/regionserver/TestParallelPut.Putter.html |  370 +++---
 .../hadoop/hbase/regionserver/TestParallelPut.html |  370 +++---
 .../regionserver/TestPerColumnFamilyFlush.html     | 1275 +++++++++----------
 .../hadoop/hbase/regionserver/TestPriorityRpc.html |  261 ++--
 .../hbase/regionserver/TestRSChoresScheduled.html  |  171 ++-
 .../regionserver/TestRSKilledWhenInitializing.html |  372 +++---
 .../hbase/regionserver/TestRSQosFunction.html      |  106 +-
 .../hbase/regionserver/TestRSRpcServices.html      |   94 +-
 .../hbase/regionserver/TestRSSnapshotVerifier.html |  178 ++-
 .../TestReadAndWriteRegionInfoFile.html            |  137 +-
 .../hbase/regionserver/TestRecoveredEdits.html     |  409 +++---
 .../TestRecoveredEditsReplayAndAbort.html          |  342 +++--
 .../hbase/regionserver/TestRegionFavoredNodes.html |  273 ++--
 .../hbase/regionserver/TestRegionIncrement.html    |  426 +++----
 .../hadoop/hbase/regionserver/TestRegionInfo.html  |  920 +++++++-------
 .../TestRegionInterrupt.DelayingFilter.html        |  639 +++++-----
 ...gionInterrupt.InterruptInterceptingHRegion.html |  639 +++++-----
 ...egionInterrupt.MutationDelayingCoprocessor.html |  639 +++++-----
 .../hbase/regionserver/TestRegionInterrupt.html    |  639 +++++-----
 ...stRegionMergeTransactionOnCluster.MyMaster.html | 1098 ++++++++--------
 .../TestRegionMergeTransactionOnCluster.html       | 1098 ++++++++--------
 .../hadoop/hbase/regionserver/TestRegionMove.html  |  203 ++-
 .../hadoop/hbase/regionserver/TestRegionOpen.html  |  213 ++--
 .../regionserver/TestRegionReplicaFailover.html    |  649 +++++-----
 ...aReplicationError.ErrorReplayRSRpcServices.html |  298 +++--
 ...estRegionReplicaReplicationError.RSForTest.html |  298 +++--
 .../TestRegionReplicaReplicationError.html         |  298 +++--
 .../TestRegionReplicaWaitForPrimaryFlushConf.html  |  191 ++-
 .../TestRegionReplicasAreDistributed.html          |  317 +++--
 .../TestRegionReplicasWithModifyTable.html         |  276 ++--
 .../TestRegionReplicasWithRestartScenarios.html    |  320 +++--
 ...TestRegionServerAbort.ErrorThrowingHRegion.html |  465 ++++---
 ...gionServerAbort.StopBlockingRegionObserver.html |  465 ++++---
 .../hbase/regionserver/TestRegionServerAbort.html  |  465 ++++---
 ...rverAbortTimeout.SleepWhenCloseCoprocessor.html |  243 ++--
 .../regionserver/TestRegionServerAbortTimeout.html |  243 ++--
 .../regionserver/TestRegionServerAccounting.html   |  186 ++-
 .../TestRegionServerCrashDisableWAL.html           |  163 ++-
 .../regionserver/TestRegionServerHostname.html     |  388 +++---
 .../regionserver/TestRegionServerMetrics.html      | 1147 +++++++++--------
 .../regionserver/TestRegionServerNoMaster.html     |  569 ++++-----
 .../TestRegionServerOnlineConfigChange.html        |  518 ++++----
 ...erReadRequestMetrics.ScanRegionCoprocessor.html |  914 +++++++------
 .../TestRegionServerReadRequestMetrics.html        |  914 +++++++------
 .../TestRegionServerRegionSpaceUseReport.html      |  118 +-
 ...ctDuringAbort.CallQueueTooBigThrowingQueue.html |  433 ++++---
 ...ejectDuringAbort.SleepWhenCloseCoprocessor.html |  433 ++++---
 .../TestRegionServerRejectDuringAbort.html         |  433 ++++---
 ...stRegionServerReportForDuty.MyRegionServer.html |  746 ++++++-----
 ...ServerReportForDuty.NeverInitializedMaster.html |  746 ++++++-----
 .../TestRegionServerReportForDuty.html             |  746 ++++++-----
 .../hbase/regionserver/TestRegionServerScan.html   |  355 +++---
 .../hbase/regionserver/TestRegionServerUseIp.html  |  104 +-
 .../hbase/regionserver/TestRegionSplitPolicy.html  |  817 ++++++------
 .../regionserver/TestRegionSplitRestriction.html   |  274 ++--
 .../regionserver/TestRemoveRegionMetrics.html      |  207 ++-
 .../TestReplicateToReplica.HRegionForTest.html     |  669 +++++-----
 .../hbase/regionserver/TestReplicateToReplica.html |  669 +++++-----
 .../regionserver/TestRequestsPerSecondMetric.html  |  142 +--
 .../hbase/regionserver/TestResettingCounters.html  |  191 ++-
 .../hbase/regionserver/TestReversibleScanners.html | 1344 ++++++++++----------
 .../regionserver/TestRowPrefixBloomFilter.html     |  664 +++++-----
 .../hadoop/hbase/regionserver/TestRowTooBig.html   |  225 ++--
 .../regionserver/TestRpcSchedulerFactory.html      |  124 +-
 testdevapidocs/index-all.html                      |  218 +---
 testdevapidocs/member-search-index.js              |    2 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |  153 ---
 .../class-use/HBaseParameterizedTestTemplate.html  |   39 +-
 .../hadoop/hbase/class-use/TableNameTestRule.html  |   12 -
 .../TestObservedExceptionsInBatch.html             |   29 +-
 .../TestOpenRegionFailedMemoryLeak.html            |   33 +-
 ...stOpenSeqNumUnexpectedIncrease.MockHRegion.html |    8 +-
 .../TestOpenSeqNumUnexpectedIncrease.html          |   43 +-
 .../hbase/regionserver/TestParallelPut.Putter.html |   14 +-
 .../hadoop/hbase/regionserver/TestParallelPut.html |  131 +-
 .../regionserver/TestPerColumnFamilyFlush.html     |   93 +-
 .../hadoop/hbase/regionserver/TestPriorityRpc.html |   31 +-
 .../TestRSChoresScheduled.TestChoreField.html      |    8 +-
 .../hbase/regionserver/TestRSChoresScheduled.html  |   35 +-
 ...henInitializing.RegisterAndDieRegionServer.html |    6 +-
 .../regionserver/TestRSKilledWhenInitializing.html |   57 +-
 .../hbase/regionserver/TestRSQosFunction.html      |   41 +-
 .../hbase/regionserver/TestRSRpcServices.html      |   23 +-
 .../hbase/regionserver/TestRSSnapshotVerifier.html |   55 +-
 .../TestReadAndWriteRegionInfoFile.html            |   49 +-
 .../hbase/regionserver/TestRecoveredEdits.html     |   88 +-
 .../TestRecoveredEditsReplayAndAbort.html          |   66 +-
 .../hbase/regionserver/TestRegionFavoredNodes.html |   67 +-
 ...estRegionIncrement.CrossRowCellIncrementer.html |   12 +-
 .../TestRegionIncrement.SingleCellIncrementer.html |   12 +-
 .../hbase/regionserver/TestRegionIncrement.html    |   73 +-
 .../hadoop/hbase/regionserver/TestRegionInfo.html  |  131 +-
 .../TestRegionInterrupt.DelayingFilter.html        |   12 +-
 ...gionInterrupt.InterruptInterceptingHRegion.html |   14 +-
 ...egionInterrupt.MutationDelayingCoprocessor.html |   20 +-
 .../hbase/regionserver/TestRegionInterrupt.html    |   62 +-
 ...stRegionMergeTransactionOnCluster.MyMaster.html |    6 +-
 ...geTransactionOnCluster.MyMasterRpcServices.html |   10 +-
 .../TestRegionMergeTransactionOnCluster.html       |  169 +--
 .../hadoop/hbase/regionserver/TestRegionMove.html  |   70 +-
 .../hadoop/hbase/regionserver/TestRegionOpen.html  |   55 +-
 .../regionserver/TestRegionReplicaFailover.html    |   93 +-
 ...aReplicationError.ErrorReplayRSRpcServices.html |    8 +-
 ...estRegionReplicaReplicationError.RSForTest.html |    6 +-
 .../TestRegionReplicaReplicationError.html         |   50 +-
 .../TestRegionReplicaWaitForPrimaryFlushConf.html  |   70 +-
 .../TestRegionReplicasAreDistributed.html          |   83 +-
 .../TestRegionReplicasWithModifyTable.html         |  117 +-
 .../TestRegionReplicasWithRestartScenarios.html    |   83 +-
 ...TestRegionServerAbort.ErrorThrowingHRegion.html |    8 +-
 ...gionServerAbort.StopBlockingRegionObserver.html |   22 +-
 .../hbase/regionserver/TestRegionServerAbort.html  |   65 +-
 ...rverAbortTimeout.SleepWhenCloseCoprocessor.html |    8 +-
 ...ionServerAbortTimeout.TestAbortTimeoutTask.html |    6 +-
 .../regionserver/TestRegionServerAbortTimeout.html |   61 +-
 .../regionserver/TestRegionServerAccounting.html   |   47 +-
 .../TestRegionServerCrashDisableWAL.html           |   43 +-
 .../regionserver/TestRegionServerHostname.html     |   59 +-
 .../regionserver/TestRegionServerMetrics.html      |  202 +--
 .../regionserver/TestRegionServerNoMaster.html     |   93 +-
 .../TestRegionServerOnlineConfigChange.html        |  125 +-
 .../TestRegionServerReadRequestMetrics.Metric.html |   16 +-
 ...erReadRequestMetrics.ScanRegionCoprocessor.html |   10 +-
 .../TestRegionServerReadRequestMetrics.html        |  165 +--
 .../TestRegionServerRegionSpaceUseReport.html      |   41 +-
 ...ctDuringAbort.CallQueueTooBigThrowingQueue.html |    6 +-
 ...ejectDuringAbort.SleepWhenCloseCoprocessor.html |    8 +-
 .../TestRegionServerRejectDuringAbort.html         |   67 +-
 .../TestRegionServerReportForDuty.LogCapturer.html |   14 +-
 ...stRegionServerReportForDuty.MyRegionServer.html |   14 +-
 ...ServerReportForDuty.NeverInitializedMaster.html |    6 +-
 .../TestRegionServerReportForDuty.html             |   79 +-
 .../TestRegionServerScan.MyRSRpcServices.html      |   10 +-
 .../TestRegionServerScan.MyRegionServer.html       |    6 +-
 .../hbase/regionserver/TestRegionServerScan.html   |   62 +-
 .../hbase/regionserver/TestRegionServerUseIp.html  |   51 +-
 .../hbase/regionserver/TestRegionSplitPolicy.html  |   78 +-
 .../regionserver/TestRegionSplitRestriction.html   |   62 +-
 .../regionserver/TestRemoveRegionMetrics.html      |   53 +-
 .../TestReplicateToReplica.HRegionForTest.html     |    8 +-
 .../hbase/regionserver/TestReplicateToReplica.html |  123 +-
 .../regionserver/TestRequestsPerSecondMetric.html  |   39 +-
 .../hbase/regionserver/TestResettingCounters.html  |   54 +-
 .../hbase/regionserver/TestReversibleScanners.html |  119 +-
 .../regionserver/TestRowPrefixBloomFilter.html     |  110 +-
 .../hadoop/hbase/regionserver/TestRowTooBig.html   |   44 +-
 .../regionserver/TestRpcSchedulerFactory.html      |   41 +-
 .../TestObservedExceptionsInBatch.html             |   80 +-
 .../TestOpenRegionFailedMemoryLeak.html            |  184 ++-
 ...stOpenSeqNumUnexpectedIncrease.MockHRegion.html |  167 ++-
 .../TestOpenSeqNumUnexpectedIncrease.html          |  167 ++-
 .../hbase/regionserver/TestParallelPut.Putter.html |  370 +++---
 .../hadoop/hbase/regionserver/TestParallelPut.html |  370 +++---
 .../regionserver/TestPerColumnFamilyFlush.html     | 1275 +++++++++----------
 .../hadoop/hbase/regionserver/TestPriorityRpc.html |  261 ++--
 .../TestRSChoresScheduled.TestChoreField.html      |  171 ++-
 .../hbase/regionserver/TestRSChoresScheduled.html  |  171 ++-
 ...henInitializing.RegisterAndDieRegionServer.html |  372 +++---
 .../regionserver/TestRSKilledWhenInitializing.html |  372 +++---
 .../hbase/regionserver/TestRSQosFunction.html      |  106 +-
 .../hbase/regionserver/TestRSRpcServices.html      |   94 +-
 .../hbase/regionserver/TestRSSnapshotVerifier.html |  178 ++-
 .../TestReadAndWriteRegionInfoFile.html            |  137 +-
 .../hbase/regionserver/TestRecoveredEdits.html     |  409 +++---
 .../TestRecoveredEditsReplayAndAbort.html          |  342 +++--
 .../hbase/regionserver/TestRegionFavoredNodes.html |  273 ++--
 ...estRegionIncrement.CrossRowCellIncrementer.html |  426 +++----
 .../TestRegionIncrement.SingleCellIncrementer.html |  426 +++----
 .../hbase/regionserver/TestRegionIncrement.html    |  426 +++----
 .../hadoop/hbase/regionserver/TestRegionInfo.html  |  920 +++++++-------
 .../TestRegionInterrupt.DelayingFilter.html        |  639 +++++-----
 ...gionInterrupt.InterruptInterceptingHRegion.html |  639 +++++-----
 ...egionInterrupt.MutationDelayingCoprocessor.html |  639 +++++-----
 .../hbase/regionserver/TestRegionInterrupt.html    |  639 +++++-----
 ...stRegionMergeTransactionOnCluster.MyMaster.html | 1098 ++++++++--------
 ...geTransactionOnCluster.MyMasterRpcServices.html | 1098 ++++++++--------
 .../TestRegionMergeTransactionOnCluster.html       | 1098 ++++++++--------
 .../hadoop/hbase/regionserver/TestRegionMove.html  |  203 ++-
 .../hadoop/hbase/regionserver/TestRegionOpen.html  |  213 ++--
 .../regionserver/TestRegionReplicaFailover.html    |  649 +++++-----
 ...aReplicationError.ErrorReplayRSRpcServices.html |  298 +++--
 ...estRegionReplicaReplicationError.RSForTest.html |  298 +++--
 .../TestRegionReplicaReplicationError.html         |  298 +++--
 .../TestRegionReplicaWaitForPrimaryFlushConf.html  |  191 ++-
 .../TestRegionReplicasAreDistributed.html          |  317 +++--
 .../TestRegionReplicasWithModifyTable.html         |  276 ++--
 .../TestRegionReplicasWithRestartScenarios.html    |  320 +++--
 ...TestRegionServerAbort.ErrorThrowingHRegion.html |  465 ++++---
 ...gionServerAbort.StopBlockingRegionObserver.html |  465 ++++---
 .../hbase/regionserver/TestRegionServerAbort.html  |  465 ++++---
 ...rverAbortTimeout.SleepWhenCloseCoprocessor.html |  243 ++--
 ...ionServerAbortTimeout.TestAbortTimeoutTask.html |  243 ++--
 .../regionserver/TestRegionServerAbortTimeout.html |  243 ++--
 .../regionserver/TestRegionServerAccounting.html   |  186 ++-
 .../TestRegionServerCrashDisableWAL.html           |  163 ++-
 .../regionserver/TestRegionServerHostname.html     |  388 +++---
 .../regionserver/TestRegionServerMetrics.html      | 1147 +++++++++--------
 .../regionserver/TestRegionServerNoMaster.html     |  569 ++++-----
 .../TestRegionServerOnlineConfigChange.html        |  518 ++++----
 .../TestRegionServerReadRequestMetrics.Metric.html |  914 +++++++------
 ...erReadRequestMetrics.ScanRegionCoprocessor.html |  914 +++++++------
 .../TestRegionServerReadRequestMetrics.html        |  914 +++++++------
 .../TestRegionServerRegionSpaceUseReport.html      |  118 +-
 ...ctDuringAbort.CallQueueTooBigThrowingQueue.html |  433 ++++---
 ...ejectDuringAbort.SleepWhenCloseCoprocessor.html |  433 ++++---
 .../TestRegionServerRejectDuringAbort.html         |  433 ++++---
 .../TestRegionServerReportForDuty.LogCapturer.html |  746 ++++++-----
 ...stRegionServerReportForDuty.MyRegionServer.html |  746 ++++++-----
 ...ServerReportForDuty.NeverInitializedMaster.html |  746 ++++++-----
 .../TestRegionServerReportForDuty.html             |  746 ++++++-----
 .../TestRegionServerScan.MyRSRpcServices.html      |  355 +++---
 .../TestRegionServerScan.MyRegionServer.html       |  355 +++---
 .../hbase/regionserver/TestRegionServerScan.html   |  355 +++---
 .../hbase/regionserver/TestRegionServerUseIp.html  |  104 +-
 .../hbase/regionserver/TestRegionSplitPolicy.html  |  817 ++++++------
 .../regionserver/TestRegionSplitRestriction.html   |  274 ++--
 .../regionserver/TestRemoveRegionMetrics.html      |  207 ++-
 .../TestReplicateToReplica.HRegionForTest.html     |  669 +++++-----
 .../hbase/regionserver/TestReplicateToReplica.html |  669 +++++-----
 .../regionserver/TestRequestsPerSecondMetric.html  |  142 +--
 .../hbase/regionserver/TestResettingCounters.html  |  191 ++-
 .../hbase/regionserver/TestReversibleScanners.html | 1344 ++++++++++----------
 .../regionserver/TestRowPrefixBloomFilter.html     |  664 +++++-----
 .../hadoop/hbase/regionserver/TestRowTooBig.html   |  225 ++--
 .../regionserver/TestRpcSchedulerFactory.html      |  124 +-
 263 files changed, 34405 insertions(+), 36217 deletions(-)

diff --git a/books/apache-hbase-reference-guide-dark-mode.pdf b/books/apache-hbase-reference-guide-dark-mode.pdf
index 38c4a79d121..a4937cca504 100644
Binary files a/books/apache-hbase-reference-guide-dark-mode.pdf and b/books/apache-hbase-reference-guide-dark-mode.pdf differ
diff --git a/books/apache-hbase-reference-guide.pdf b/books/apache-hbase-reference-guide.pdf
index 79723b038b7..ea7b7779fa3 100644
Binary files a/books/apache-hbase-reference-guide.pdf and b/books/apache-hbase-reference-guide.pdf differ
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index c8a067d59dd..9a78fe35db9 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -112,7 +112,7 @@
 <td>5308</td>
 <td>0</td>
 <td>0</td>
-<td>1829</td></tr></table></section><section><a id="Files"></a>
+<td>1827</td></tr></table></section><section><a id="Files"></a>
 <h2>Files</h2>
 <table class="table table-striped">
 <tr class="a">
@@ -2481,16 +2481,6 @@
 <td>0</td>
 <td>5</td></tr>
 <tr class="b">
-<td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRegionReplicasWithRestartScenarios.java">org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
-<tr class="a">
-<td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRegionServerReportForDuty.java">org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
-<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestResettingCounters.java">org/apache/hadoop/hbase/regionserver/TestResettingCounters.java</a></td>
 <td>0</td>
 <td>0</td>
@@ -3694,7 +3684,7 @@
 <tr class="a">
 <td>imports</td>
 <td><a class="externalLink" href="https://checkstyle.org/checks/imports/avoidstarimport.html">AvoidStarImport</a></td>
-<td>8</td>
+<td>6</td>
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -14775,7 +14765,7 @@
 <td>design</td>
 <td>FinalClass</td>
 <td>Class TestChoreField should be declared as final.</td>
-<td>60</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRSKilledWhenInitializing.java"></a>
+<td>57</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRSKilledWhenInitializing.java"></a>
 <h3>org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -14789,13 +14779,13 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>135</td></tr>
+<td>125</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>178</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRegionIncrement.java"></a>
+<td>168</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRegionIncrement.java"></a>
 <h3>org/apache/hadoop/hbase/regionserver/TestRegionIncrement.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -14809,59 +14799,31 @@
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>103</td></tr>
+<td>97</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
-<td>198</td></tr>
+<td>192</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>202</td></tr>
+<td>196</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
-<td>233</td></tr>
+<td>226</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>237</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRegionReplicasWithRestartScenarios.java"></a>
-<h3>org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java</h3>
-<table class="table table-striped">
-<tr class="a">
-<th>Severity</th>
-<th>Category</th>
-<th>Rule</th>
-<th>Message</th>
-<th>Line</th></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" />&#160;Error</td>
-<td>imports</td>
-<td>AvoidStarImport</td>
-<td>Using the '.*' form of import should be avoided - org.junit.Assert.*.</td>
-<td>20</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestRegionServerReportForDuty.java"></a>
-<h3>org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.java</h3>
-<table class="table table-striped">
-<tr class="a">
-<th>Severity</th>
-<th>Category</th>
-<th>Rule</th>
-<th>Message</th>
-<th>Line</th></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" />&#160;Error</td>
-<td>imports</td>
-<td>AvoidStarImport</td>
-<td>Using the '.*' form of import should be avoided - org.junit.Assert.*.</td>
-<td>24</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestResettingCounters.java"></a>
+<td>230</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestResettingCounters.java"></a>
 <h3>org/apache/hadoop/hbase/regionserver/TestResettingCounters.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -14875,37 +14837,37 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>70</td></tr>
+<td>61</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>74</td></tr>
+<td>65</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>99</td></tr>
+<td>90</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
-<td>100</td></tr>
+<td>91</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>105</td></tr>
+<td>96</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>110</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestReversibleScanners.java"></a>
+<td>101</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestReversibleScanners.java"></a>
 <h3>org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -14919,55 +14881,55 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>204</td></tr>
+<td>195</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>209</td></tr>
+<td>200</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>217</td></tr>
+<td>208</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>231</td></tr>
+<td>222</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>344</td></tr>
+<td>336</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>350</td></tr>
+<td>342</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>437</td></tr>
+<td>429</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>610</td></tr>
+<td>602</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>626</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestScanWithBloomError.java"></a>
+<td>618</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestScanWithBloomError.java"></a>
 <h3>org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.java</h3>
 <table class="table table-striped">
 <tr class="a">
diff --git a/dependency-convergence.html b/dependency-convergence.html
index ef32e2e1508..d935cd5c4cf 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-info.html b/dependency-info.html
index deceffa1e0e..b2f04106358 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-management.html b/dependency-management.html
index d4246686059..39252045fd0 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-convergence.html b/hbase-website/dependency-convergence.html
index d4b8d9a5229..5d25a5aa25d 100644
--- a/hbase-website/dependency-convergence.html
+++ b/hbase-website/dependency-convergence.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-info.html b/hbase-website/dependency-info.html
index b8851d1cfc3..63d1266b9ef 100644
--- a/hbase-website/dependency-info.html
+++ b/hbase-website/dependency-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-management.html b/hbase-website/dependency-management.html
index 5d6bbf7b59a..6dda8ac1a6d 100644
--- a/hbase-website/dependency-management.html
+++ b/hbase-website/dependency-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/index.html b/hbase-website/index.html
index 9b3976c966d..4aedbfd6fe6 100644
--- a/hbase-website/index.html
+++ b/hbase-website/index.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/issue-management.html b/hbase-website/issue-management.html
index 65a7d16562c..60c7d8ead13 100644
--- a/hbase-website/issue-management.html
+++ b/hbase-website/issue-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/licenses.html b/hbase-website/licenses.html
index 10cd16d8bbf..5b938ca98f5 100644
--- a/hbase-website/licenses.html
+++ b/hbase-website/licenses.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/mailing-lists.html b/hbase-website/mailing-lists.html
index bdb87d1a755..154b8af1d89 100644
--- a/hbase-website/mailing-lists.html
+++ b/hbase-website/mailing-lists.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/plugin-management.html b/hbase-website/plugin-management.html
index 619e6532cb8..221b2644404 100644
--- a/hbase-website/plugin-management.html
+++ b/hbase-website/plugin-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/plugins.html b/hbase-website/plugins.html
index c11bda0b7fe..6459029ff56 100644
--- a/hbase-website/plugins.html
+++ b/hbase-website/plugins.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/project-info.html b/hbase-website/project-info.html
index 0d96fa30225..675111f35aa 100644
--- a/hbase-website/project-info.html
+++ b/hbase-website/project-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/scm.html b/hbase-website/scm.html
index 3abe6adb257..004f8d05672 100644
--- a/hbase-website/scm.html
+++ b/hbase-website/scm.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/summary.html b/hbase-website/summary.html
index 05be0b694a6..f83b27c0047 100644
--- a/hbase-website/summary.html
+++ b/hbase-website/summary.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/team.html b/hbase-website/team.html
index 46e08524550..101cdeda5aa 100644
--- a/hbase-website/team.html
+++ b/hbase-website/team.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/issue-management.html b/issue-management.html
index 524c1521515..fe2373bd2d5 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/licenses.html b/licenses.html
index 7db7272befd..9dcd7386fd0 100644
--- a/licenses.html
+++ b/licenses.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/mailing-lists.html b/mailing-lists.html
index fcfcb4af605..23e64404440 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/plugin-management.html b/plugin-management.html
index 5013c1413d9..9f270267415 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/plugins.html b/plugins.html
index dac5f0d40b5..e01e92903f3 100644
--- a/plugins.html
+++ b/plugins.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/project-info.html b/project-info.html
index f46eefcc587..03339299eed 100644
--- a/project-info.html
+++ b/project-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/project-reports.html b/project-reports.html
index 2e497db639c..d9f2b763d4b 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/scm.html b/scm.html
index 7e4ecf22eac..3377fe39292 100644
--- a/scm.html
+++ b/scm.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/summary.html b/summary.html
index 03d7161cae7..38a70756656 100644
--- a/summary.html
+++ b/summary.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/team.html b/team.html
index a541ec40dd8..e20ab2b9432 100644
--- a/team.html
+++ b/team.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-05-19
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-05-20
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index c0a4be0852c..b9d378d7e07 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -1311,16 +1311,12 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionOpen</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplicaFailover</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplicas</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplica [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionRepli [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionRe [...]
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerNoMaster</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html#before()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRowTooBig</a></dt>
@@ -1351,6 +1347,10 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/master/AbstractTestDLS.html#before(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.master">before(TestInfo)</a> - Method in class org.apache.hadoop.hbase.master.<a href="../apidocs/org/apache/hadoop/hbase/master/AbstractTestDLS.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">AbstractTestDLS</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#before(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link"> [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#before(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">before(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class or interface in org.apache.hadoop.hbase.regionserv [...]
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/TestRESTApiClusterManager.html#before(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">before(TestInfo)</a> - Method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/TestRESTApiClusterManager.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestRESTApiClusterManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#beforeAll()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.thrift">beforeAll()</a> - Static method in class org.apache.hadoop.hbase.thrift.<a href="../apidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class or interface in org.apache.hadoop.hbase.thrift" class="external-link">TestThriftHttpServer</a></dt>
@@ -1511,7 +1511,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.html#beforeMethod(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rsgroup">beforeMethod(TestInfo)</a> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">Tes [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#beforeTestMethod()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">beforeTestMethod()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerMetric [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#beforeTestMethod(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">beforeTestMethod(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class= [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/FaultyProtobufWALStreamReader.FailureType.html#BEGINNING" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.wal">BEGINNING</a> - Enum constant in enum class org.apache.hadoop.hbase.regionserver.wal.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/FaultyProtobufWALStreamReader.FailureType.html" title="class or interface in org.apache.hadoop.hbase.regionserver [...]
 <dd>&nbsp;</dd>
@@ -2315,108 +2315,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="exte [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestObservedExcep [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestOpenRegionF [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestOpenSeq [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestParallelPut</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestPerColumnFamilyFlush</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestPriorityRpc</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReadAndWrit [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRecoveredEdits</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRecover [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionFavoredNodes</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionIncrement</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionInfo</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionInterrupt</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestR [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionMove</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionOpen</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplicaFailover [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaReplicationError.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaReplicationError.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegio [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionR [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegio [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link" [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-l [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerAbort</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbortTimeout.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbortTimeout.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerAbo [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerAccount [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionSer [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerHostname</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerMetrics</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerNoMaster</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReg [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReg [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">Tes [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerRejectDuringAbort.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerRejectDuringAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegio [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerR [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerScan.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerScan.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerScan</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerUseIp.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerUseIp.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerUseIp</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionSplitPolicy</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitRestriction.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitRestriction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionSplitRestrict [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRemoveRegionMetrics</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReplicateToReplica</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRequestsPerSecondMetric.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRequestsPerSecondMetric.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRequestsPerSecond [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestResettingCounters</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReversibleScanners</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRowPrefixBloomFilter</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRowTooBig</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRpcSchedulerFactory</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRSChoresScheduled</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRSKilledWhenIni [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRSQosFunction</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRSRpcServices</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRSSnapshotVerifier</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.replication">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.replication.<a href="../apidocs/org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestAddToSerialRepli [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/replication/TestBidirectionSerialReplicationStuck.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.replication">CLASS_RULE</a> - Static variable in class org.apache.hadoop.hbase.replication.<a href="../apidocs/org/apache/hadoop/hbase/replication/TestBidirectionSerialReplicationStuck.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestBi [...]
@@ -4966,8 +4864,6 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">The current DirectoryService instance</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#disableBeforeModifying" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">disableBeforeModifying</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="externa [...]
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/mob/TestMobCompactionWithDefaults.html#disableCompactions()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.mob">disableCompactions()</a> - Method in class org.apache.hadoop.hbase.mob.<a href="../apidocs/org/apache/hadoop/hbase/mob/TestMobCompactionWithDefaults.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestMobCompactionWithDefaults</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestScanWildcardColumnTracker.html#DisabledTestCheckColumnWrongOrder()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher">DisabledTestCheckColumnWrongOrder()</a> - Method in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestScanWildcardColumnTracker.html" title="class  [...]
@@ -7687,6 +7583,8 @@ loadScripts(document, 'script');</script>
 <div class="block">Returns a Result object constructed from the given region information simulating a catalog
  table result.</div>
 </dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#getMethodName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">getMethodName()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestParallelPut</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.MethodName.html#getMethodName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rsgroup">getMethodName()</a> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.MethodName.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">TestRSGroupsBase.MethodName</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.ErrorType.html#getMetricName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.thrift">getMetricName()</a> - Method in enum class org.apache.hadoop.hbase.thrift.<a href="../apidocs/org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.ErrorType.html" title="class or interface in org.apache.hadoop.hbase.thrift" class="external-link">ErrorThrowingGetObserver.ErrorT [...]
@@ -7766,8 +7664,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/RegionAsTable.html#getName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">getName()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/RegionAsTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">RegionAsTable</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#getName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">getName()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestParallelPut</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.html#getName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.wal">getName()</a> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">AbstractTestLogRolling [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rest/client/RemoteHTable.html#getName()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rest.client">getName()</a> - Method in class org.apache.hadoop.hbase.rest.client.<a href="../apidocs/org/apache/hadoop/hbase/rest/client/RemoteHTable.html" title="class or interface in org.apache.hadoop.hbase.rest.client" class="external-link">RemoteHTable</a></dt>
@@ -12071,42 +11967,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestNewVersionBehavior [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestParallelPut</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRecoveredEditsReplayAndAbo [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionIncrement</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionInfo</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionInterrupt</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionMergeTransacti [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionMove</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionOpen</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplicaFailover</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplicasWithModify [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplicas [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionRepl [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerScan.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerScan.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerScan</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRemoveRegionMetrics</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReplicateToReplica</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestResettingCounters</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReversibleScanners</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRowPrefixBloomFilter</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.replication">name</a> - Variable in class org.apache.hadoop.hbase.replication.<a href="../apidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">SerialReplicationTestBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.replication">name</a> - Variable in class org.apache.hadoop.hbase.replication.<a href="../apidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestPerTableCFReplication</a></dt>
@@ -12952,6 +12812,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithNoneAndUseDataEncoding.html#parameters()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">parameters()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithNoneAndUseDataEncoding.html" title="class or interface in org.apache.hadoop.hbase.regionserver" [...]
 <dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#parameters()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">parameters()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReg [...]
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#parameters()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">parameters()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestScanWithBloomError</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html#parameters()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">parameters()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestSecureBulkLoadManag [...]
@@ -13046,8 +12908,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html#params()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">params()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestMultiLogThreshold</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#params()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">params()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionRepli [...]
-<dd>&nbsp;</dd>
 <dt>parent() - Method in class org.apache.hadoop.hbase.test.MetricsAssertHelperImpl.MockRecordBuilder</dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestScanCursor.SparseFilter.html#parseFrom(byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">parseFrom(byte[])</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestScanCursor.SparseFilter.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestScanCur [...]
@@ -16300,10 +16160,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html#setup()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestObservedExceptionsInBatch</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#setup()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRecoveredEditsReplayAn [...]
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html#setup()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionMove</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#setup()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerAbort</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#setup()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerHostname</a></dt>
@@ -16400,6 +16256,10 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestSnapshotQuotaObserverChore.html#setup(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.quotas">setup(TestInfo)</a> - Method in class org.apache.hadoop.hbase.quotas.<a href="../apidocs/org/apache/hadoop/hbase/quotas/TestSnapshotQuotaObserverChore.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestSnapshotQuotaObser [...]
 <dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#setup(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="ext [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html#setup(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionMove</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#setup(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setup(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external- [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/TestColumnFamilyDescriptorDefaultVersions.html#setup(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">setup(TestInfo)</a> - Method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/TestColumnFamilyDescriptorDefaultVersions.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestColumnFamilyDescriptorDefaultVe [...]
@@ -16998,12 +16858,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestOpenSeqNumUnexp [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestParallelPut</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReadAndWriteRegionI [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionIncrement</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionInterrupt</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaReplicationError.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaReplicationError.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionReplica [...]
@@ -17018,8 +16874,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerReportForDuty</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReplicateToReplica</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#setUp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRowPrefixBloomFilter</a></dt>
@@ -17404,6 +17258,22 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.storefiletracker">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.storefiletracker.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.html" title="class or interface in or [...]
 <dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestParallelPut</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRecoveredEdi [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionIncr [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionInfo</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" clas [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="e [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html" title="class or interface in org.apache.hadoop.hbase.regionse [...]
+<dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRepl [...]
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSecureBulkloadListener.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSecureBulkloadListener.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link"> [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#setUp(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">setUp(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link [...]
@@ -25169,9 +25039,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html#testCloseInterrupt()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testCloseInterrupt()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#testCloseInterruptMutation()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testCloseInterruptMutation()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegion [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#testCloseInterruptMutation(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testCloseInterruptMutation(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionse [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#testCloseInterruptScanning()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testCloseInterruptScanning()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegion [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#testCloseInterruptScanning(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testCloseInterruptScanning(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html" title="class or interface in org.apache.hadoop.hbase.regionse [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html#testCloseNoInterrupt()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testCloseNoInterrupt()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion</a></dt>
 <dd>&nbsp;</dd>
@@ -34070,7 +33940,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>testMoveRegion() - Method in class org.apache.hadoop.hbase.mttr.IntegrationTestMTTR</dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#testMoveRegion()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testMoveRegion()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRemoveRegionMetrics</a></dt>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#testMoveRegion(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testMoveRegion(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="ext [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/master/TestMaster.html#testMoveRegionWhenNotInitialized()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.master">testMoveRegionWhenNotInitialized()</a> - Method in class org.apache.hadoop.hbase.master.<a href="../apidocs/org/apache/hadoop/hbase/master/TestMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestMaster</a></dt>
 <dd>&nbsp;</dd>
@@ -34641,14 +34511,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#testName" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testName</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestGetClosestAtOrBefore</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#testName" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testName</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRecoveredEdits</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#testName" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testName</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionServerMetrics</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html#testName" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testName</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRpcSchedulerFactory</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#testName" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testName</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRSKilledWhenInitializing</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.html#testName" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.wal">testName</a> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">AbstractTestFSWAL</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.html#testNameConflictWhenSplit0()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.wal">testNameConflictWhenSplit0()</a> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="e [...]
@@ -35018,7 +34880,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitRestriction.html#testNoneRegionSplitRestriction()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testNoneRegionSplitRestriction()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitRestriction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="ext [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#testNonExistentRegionReplica()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testNonExistentRegionReplica()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionOpen</a></dt>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#testNonExistentRegionReplica(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testNonExistentRegionReplica(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class or interface in org.apache.hadoop.hbase.regionserver"  [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.html#testNonexistentRSGroup()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rsgroup">testNonexistentRSGroup()</a> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">TestUpdateRSGroupConf [...]
 <dd>&nbsp;</dd>
@@ -37382,7 +37244,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithModifyTable</a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#%3Cinit%3E()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithModifyTable()</a> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class=" [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#%3Cinit%3E(boolean)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithModifyTable(boolean)</a> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class or interface in org.apache.hadoop.hbase.regions [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithRestartScenarios</a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>&nbsp;</dd>
@@ -38449,7 +38311,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.html#testResetBuffer()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rest">testResetBuffer()</a> - Method in class org.apache.hadoop.hbase.rest.<a href="../apidocs/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGZIPResponseWrapper</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#testResettingCounters()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testResettingCounters()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestResettingCou [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#testResettingCounters(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testResettingCounters(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class or interface in org.apache.hadoop.hbase.regionserver"  [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestResettingCounters</a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>&nbsp;</dd>
@@ -38787,7 +38649,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#testReversibleMemstoreScanner()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testReversibleMemstoreScanner()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#testReversibleRegionScanner()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testReversibleRegionScanner()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">Te [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#testReversibleRegionScanner(org.junit.jupiter.api.TestInfo)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">testReversibleRegionScanner(TestInfo)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class or interface in org.apache.hadoop.hbase. [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>
@@ -44161,8 +44023,6 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html#thrown" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">thrown</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html#thrown" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">thrown</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestRegionMove</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestMetaCache.CallQueueTooBigExceptionInjector.html#throwOnGet(org.apache.hadoop.hbase.client.TestMetaCache.FakeRSRpcServices,org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">throwOnGet(TestMetaCache.FakeRSRpcServices, ClientProtos.GetRequest)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../a [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestMetaCache.ExceptionInjector.html#throwOnGet(org.apache.hadoop.hbase.client.TestMetaCache.FakeRSRpcServices,org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">throwOnGet(TestMetaCache.FakeRSRpcServices, ClientProtos.GetRequest)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apac [...]
diff --git a/testapidocs/member-search-index.js b/testapidocs/member-search-index.js
index b549aeb3f61..cbc9e31336d 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 c6de33a7a88..eae5db5dadd 100644
--- a/testapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -425,159 +425,6 @@ loadScripts(document, 'script');</script>
 <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">TestNotCleanupCompactedFileWhenRegionWarmup.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestObservedExceptionsInBatch.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestOpenRegionFailedMemoryLeak.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestOpenSeqNumUnexpectedIncrease.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestParallelPut.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestPerColumnFamilyFlush.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestPriorityRpc.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestReadAndWriteRegionInfoFile.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRecoveredEdits.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRecoveredEditsReplayAndAbort.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionFavoredNodes.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionIncrement.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionInfo.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionInterrupt.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionMergeTransactionOnCluster.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionMove.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionOpen.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionReplicaFailover.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionReplicaReplicationError.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaReplicationError.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionReplicasAreDistributed.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionReplicasWithModifyTable.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionReplicasWithRestartScenarios.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionReplicaWaitForPrimaryFlushConf.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerAbort.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerAbortTimeout.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbortTimeout.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerAccounting.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerCrashDisableWAL.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerHostname.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerMetrics.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerNoMaster.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerOnlineConfigChange.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerReadRequestMetrics.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerRegionSpaceUseReport.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerRejectDuringAbort.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerRejectDuringAbort.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerReportForDuty.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerScan.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerScan.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionServerUseIp.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerUseIp.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionSplitPolicy.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRegionSplitRestriction.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionSplitRestriction.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRemoveRegionMetrics.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestReplicateToReplica.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRequestsPerSecondMetric.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRequestsPerSecondMetric.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestResettingCounters.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestReversibleScanners.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRowPrefixBloomFilter.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRowTooBig.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRpcSchedulerFactory.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRSChoresScheduled.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRSKilledWhenInitializing.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRSQosFunction.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRSRpcServices.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">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">TestRSSnapshotVerifier.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html#CLASS_RULE" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">CLASS_RULE</a></code></div>
-<div class="col-last even-row-color">&nbsp;</div>
 </div>
 </section>
 </li>
diff --git a/testapidocs/org/apache/hadoop/hbase/class-use/HBaseParameterizedTestTemplate.html b/testapidocs/org/apache/hadoop/hbase/class-use/HBaseParameterizedTestTemplate.html
index e07bbcd97ea..bf18b4bf80d 100644
--- a/testapidocs/org/apache/hadoop/hbase/class-use/HBaseParameterizedTestTemplate.html
+++ b/testapidocs/org/apache/hadoop/hbase/class-use/HBaseParameterizedTestTemplate.html
@@ -757,35 +757,38 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-second">Class</div>
 <div class="table-header col-last">Description</div>
 <div class="col-first even-row-color"><code>class&nbsp;</code></div>
-<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></code></div>
-<div class="col-last even-row-color">
+<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithModifyTable</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></code></div>
+<div class="col-last odd-row-color">
 <div class="block">Test a multi-column scanner when there is a Bloom filter false-positive.</div>
 </div>
-<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
-<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestSecureBulkLoadManager</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code>class&nbsp;</code></div>
-<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></code></div>
-<div class="col-last even-row-color">
-<div class="block">Test various seek optimizations for correctness and check if they are actually saving I/O
- operations.</div>
-</div>
+<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestSecureBulkLoadManager</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>class&nbsp;</code></div>
-<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken</a></code></div>
+<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">See HBASE-19929 for more details.</div>
+<div class="block">Test various seek optimizations for correctness and check if they are actually saving I/O
+ operations.</div>
 </div>
 <div class="col-first even-row-color"><code>class&nbsp;</code></div>
-<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileWriter.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestStoreFileWriter</a></code></div>
+<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">Store file writer does not do any compaction.</div>
+<div class="block">See HBASE-19929 for more details.</div>
 </div>
 <div class="col-first odd-row-color"><code>class&nbsp;</code></div>
-<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestTagsReverseScan.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestTagsReverseScan</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestStoreFileWriter.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestStoreFileWriter</a></code></div>
+<div class="col-last odd-row-color">
+<div class="block">Store file writer does not do any compaction.</div>
+</div>
 <div class="col-first even-row-color"><code>class&nbsp;</code></div>
-<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></code></div>
-<div class="col-last even-row-color">
+<div class="col-second even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestTagsReverseScan.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestTagsReverseScan</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
+<div class="col-second odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></code></div>
+<div class="col-last odd-row-color">
 <div class="block">Test for HBASE-17471.</div>
 </div>
 </div>
diff --git a/testapidocs/org/apache/hadoop/hbase/class-use/TableNameTestRule.html b/testapidocs/org/apache/hadoop/hbase/class-use/TableNameTestRule.html
index 529188fd3c5..4147ed2512a 100644
--- a/testapidocs/org/apache/hadoop/hbase/class-use/TableNameTestRule.html
+++ b/testapidocs/org/apache/hadoop/hbase/class-use/TableNameTestRule.html
@@ -71,18 +71,6 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/TableNameTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TableNameTestRule</a></code></div>
 <div class="col-second even-row-color"><span class="type-name-label">TestMergesSplitsAddToTracker.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestMergesSplitsAddToTracker.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/TableNameTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TableNameTestRule</a></code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">TestRegionInterrupt.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/TableNameTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TableNameTestRule</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">TestRegionReplicasWithModifyTable.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a></code></div>
-<div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>final <a href="../../../../../../apidocs/org/apache/hadoop/hbase/TableNameTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TableNameTestRule</a></code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">TestRegionReplicaWaitForPrimaryFlushConf.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaWaitForPrimaryFlushConf.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a></code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>final <a href="../../../../../../apidocs/org/apache/hadoop/hbase/TableNameTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TableNameTestRule</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">TestReplicateToReplica.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestReplicateToReplica.html#name" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">name</a></code></div>
-<div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>final <a href="../../../../../../apidocs/org/apache/hadoop/hbase/TableNameTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TableNameTestRule</a></code></div>
 <div class="col-second odd-row-color"><span class="type-name-label">TestHRegionTracing.</span><code><a href="../../../../../../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegionTracing.html#tableNameRule" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">tableNameRule</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html
index 3e6a323efc4..403f33f5cf9 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html
@@ -30,51 +30,45 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertFalse;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertFalse;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.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 org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.regionserver.HRegion.ObservedExceptionsInBatch;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.junit.Before;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.junit.ClassRule;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.junit.Test;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">030</span><span id="line-30"></span>
-<span class="source-line-no">031</span><span id="line-31">/**</span>
-<span class="source-line-no">032</span><span id="line-32"> * Test class for {@link ObservedExceptionsInBatch}.</span>
-<span class="source-line-no">033</span><span id="line-33"> */</span>
-<span class="source-line-no">034</span><span id="line-34">@Category(SmallTests.class)</span>
-<span class="source-line-no">035</span><span id="line-35">public class TestObservedExceptionsInBatch {</span>
+<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.hbase.regionserver.HRegion.ObservedExceptionsInBatch;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">028</span><span id="line-28"></span>
+<span class="source-line-no">029</span><span id="line-29">/**</span>
+<span class="source-line-no">030</span><span id="line-30"> * Test class for {@link ObservedExceptionsInBatch}.</span>
+<span class="source-line-no">031</span><span id="line-31"> */</span>
+<span class="source-line-no">032</span><span id="line-32">@Tag(SmallTests.TAG)</span>
+<span class="source-line-no">033</span><span id="line-33">public class TestObservedExceptionsInBatch {</span>
+<span class="source-line-no">034</span><span id="line-34"></span>
+<span class="source-line-no">035</span><span id="line-35">  private ObservedExceptionsInBatch observedExceptions;</span>
 <span class="source-line-no">036</span><span id="line-36"></span>
-<span class="source-line-no">037</span><span id="line-37">  @ClassRule</span>
-<span class="source-line-no">038</span><span id="line-38">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">039</span><span id="line-39">    HBaseClassTestRule.forClass(TestObservedExceptionsInBatch.class);</span>
-<span class="source-line-no">040</span><span id="line-40"></span>
-<span class="source-line-no">041</span><span id="line-41">  private ObservedExceptionsInBatch observedExceptions;</span>
-<span class="source-line-no">042</span><span id="line-42"></span>
-<span class="source-line-no">043</span><span id="line-43">  @Before</span>
-<span class="source-line-no">044</span><span id="line-44">  public void setup() {</span>
-<span class="source-line-no">045</span><span id="line-45">    observedExceptions = new ObservedExceptionsInBatch();</span>
-<span class="source-line-no">046</span><span id="line-46">  }</span>
-<span class="source-line-no">047</span><span id="line-47"></span>
-<span class="source-line-no">048</span><span id="line-48">  @Test</span>
-<span class="source-line-no">049</span><span id="line-49">  public void testNoObservationsOnCreation() {</span>
-<span class="source-line-no">050</span><span id="line-50">    assertFalse(observedExceptions.hasSeenFailedSanityCheck());</span>
-<span class="source-line-no">051</span><span id="line-51">    assertFalse(observedExceptions.hasSeenNoSuchFamily());</span>
-<span class="source-line-no">052</span><span id="line-52">    assertFalse(observedExceptions.hasSeenWrongRegion());</span>
-<span class="source-line-no">053</span><span id="line-53">  }</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">  @Test</span>
-<span class="source-line-no">056</span><span id="line-56">  public void testObservedAfterRecording() {</span>
-<span class="source-line-no">057</span><span id="line-57">    observedExceptions.sawFailedSanityCheck();</span>
-<span class="source-line-no">058</span><span id="line-58">    assertTrue(observedExceptions.hasSeenFailedSanityCheck());</span>
-<span class="source-line-no">059</span><span id="line-59">    observedExceptions.sawNoSuchFamily();</span>
-<span class="source-line-no">060</span><span id="line-60">    assertTrue(observedExceptions.hasSeenNoSuchFamily());</span>
-<span class="source-line-no">061</span><span id="line-61">    observedExceptions.sawWrongRegion();</span>
-<span class="source-line-no">062</span><span id="line-62">    assertTrue(observedExceptions.hasSeenWrongRegion());</span>
-<span class="source-line-no">063</span><span id="line-63">  }</span>
-<span class="source-line-no">064</span><span id="line-64">}</span>
+<span class="source-line-no">037</span><span id="line-37">  @BeforeEach</span>
+<span class="source-line-no">038</span><span id="line-38">  public void setup() {</span>
+<span class="source-line-no">039</span><span id="line-39">    observedExceptions = new ObservedExceptionsInBatch();</span>
+<span class="source-line-no">040</span><span id="line-40">  }</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span id="line-42">  @Test</span>
+<span class="source-line-no">043</span><span id="line-43">  public void testNoObservationsOnCreation() {</span>
+<span class="source-line-no">044</span><span id="line-44">    assertFalse(observedExceptions.hasSeenFailedSanityCheck());</span>
+<span class="source-line-no">045</span><span id="line-45">    assertFalse(observedExceptions.hasSeenNoSuchFamily());</span>
+<span class="source-line-no">046</span><span id="line-46">    assertFalse(observedExceptions.hasSeenWrongRegion());</span>
+<span class="source-line-no">047</span><span id="line-47">  }</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">  @Test</span>
+<span class="source-line-no">050</span><span id="line-50">  public void testObservedAfterRecording() {</span>
+<span class="source-line-no">051</span><span id="line-51">    observedExceptions.sawFailedSanityCheck();</span>
+<span class="source-line-no">052</span><span id="line-52">    assertTrue(observedExceptions.hasSeenFailedSanityCheck());</span>
+<span class="source-line-no">053</span><span id="line-53">    observedExceptions.sawNoSuchFamily();</span>
+<span class="source-line-no">054</span><span id="line-54">    assertTrue(observedExceptions.hasSeenNoSuchFamily());</span>
+<span class="source-line-no">055</span><span id="line-55">    observedExceptions.sawWrongRegion();</span>
+<span class="source-line-no">056</span><span id="line-56">    assertTrue(observedExceptions.hasSeenWrongRegion());</span>
+<span class="source-line-no">057</span><span id="line-57">  }</span>
+<span class="source-line-no">058</span><span id="line-58">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html
index 99cc758ff96..7b38964018d 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenRegionFailedMemoryLeak.html
@@ -31,105 +31,101 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.HBaseTestingUtil.fam1;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.fail;</span>
-<span class="source-line-no">022</span><span id="line-22">import static org.mockito.Mockito.spy;</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.lang.reflect.Field;</span>
-<span class="source-line-no">026</span><span id="line-26">import java.util.concurrent.BlockingQueue;</span>
-<span class="source-line-no">027</span><span id="line-27">import java.util.concurrent.ScheduledExecutorService;</span>
-<span class="source-line-no">028</span><span id="line-28">import java.util.concurrent.ThreadPoolExecutor;</span>
-<span class="source-line-no">029</span><span id="line-29">import java.util.concurrent.TimeUnit;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.CompatibilitySingletonFactory;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.ServerName;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.util.TableDescriptorChecker;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.metrics2.MetricsExecutor;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.junit.AfterClass;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.junit.Assert;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.junit.BeforeClass;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.junit.ClassRule;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.junit.Test;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.slf4j.Logger;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">@Category({ RegionServerTests.class, LargeTests.class })</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
+<span class="source-line-no">023</span><span id="line-23">import static org.junit.jupiter.api.Assertions.fail;</span>
+<span class="source-line-no">024</span><span id="line-24">import static org.mockito.Mockito.spy;</span>
+<span class="source-line-no">025</span><span id="line-25"></span>
+<span class="source-line-no">026</span><span id="line-26">import java.io.IOException;</span>
+<span class="source-line-no">027</span><span id="line-27">import java.lang.reflect.Field;</span>
+<span class="source-line-no">028</span><span id="line-28">import java.util.concurrent.BlockingQueue;</span>
+<span class="source-line-no">029</span><span id="line-29">import java.util.concurrent.ScheduledExecutorService;</span>
+<span class="source-line-no">030</span><span id="line-30">import java.util.concurrent.ThreadPoolExecutor;</span>
+<span class="source-line-no">031</span><span id="line-31">import java.util.concurrent.TimeUnit;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.CompatibilitySingletonFactory;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.ServerName;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.util.TableDescriptorChecker;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.metrics2.MetricsExecutor;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.slf4j.Logger;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">053</span><span id="line-53"></span>
+<span class="source-line-no">054</span><span id="line-54">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">055</span><span id="line-55">@Tag(LargeTests.TAG)</span>
 <span class="source-line-no">056</span><span id="line-56">public class TestOpenRegionFailedMemoryLeak {</span>
 <span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">  @ClassRule</span>
-<span class="source-line-no">059</span><span id="line-59">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">060</span><span id="line-60">    HBaseClassTestRule.forClass(TestOpenRegionFailedMemoryLeak.class);</span>
+<span class="source-line-no">058</span><span id="line-58">  private static final Logger LOG = LoggerFactory.getLogger(TestOpenRegionFailedMemoryLeak.class);</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
 <span class="source-line-no">061</span><span id="line-61"></span>
-<span class="source-line-no">062</span><span id="line-62">  private static final Logger LOG = LoggerFactory.getLogger(TestOpenRegionFailedMemoryLeak.class);</span>
-<span class="source-line-no">063</span><span id="line-63"></span>
-<span class="source-line-no">064</span><span id="line-64">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">062</span><span id="line-62">  @BeforeAll</span>
+<span class="source-line-no">063</span><span id="line-63">  public static void startCluster() throws Exception {</span>
+<span class="source-line-no">064</span><span id="line-64">    Configuration conf = TEST_UTIL.getConfiguration();</span>
 <span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">  @BeforeClass</span>
-<span class="source-line-no">067</span><span id="line-67">  public static void startCluster() throws Exception {</span>
-<span class="source-line-no">068</span><span id="line-68">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">066</span><span id="line-66">    // Enable sanity check for coprocessor</span>
+<span class="source-line-no">067</span><span id="line-67">    conf.setBoolean(TableDescriptorChecker.TABLE_SANITY_CHECKS, true);</span>
+<span class="source-line-no">068</span><span id="line-68">  }</span>
 <span class="source-line-no">069</span><span id="line-69"></span>
-<span class="source-line-no">070</span><span id="line-70">    // Enable sanity check for coprocessor</span>
-<span class="source-line-no">071</span><span id="line-71">    conf.setBoolean(TableDescriptorChecker.TABLE_SANITY_CHECKS, true);</span>
-<span class="source-line-no">072</span><span id="line-72">  }</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">  @AfterClass</span>
-<span class="source-line-no">075</span><span id="line-75">  public static void tearDown() throws IOException {</span>
-<span class="source-line-no">076</span><span id="line-76">    EnvironmentEdgeManagerTestHelper.reset();</span>
-<span class="source-line-no">077</span><span id="line-77">    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());</span>
-<span class="source-line-no">078</span><span id="line-78">    TEST_UTIL.cleanupTestDir();</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">  // make sure the region is successfully closed when the coprocessor config is wrong</span>
-<span class="source-line-no">082</span><span id="line-82">  @Test</span>
-<span class="source-line-no">083</span><span id="line-83">  public void testOpenRegionFailedMemoryLeak() throws Exception {</span>
-<span class="source-line-no">084</span><span id="line-84">    final ServerName serverName = ServerName.valueOf("testOpenRegionFailed", 100, 42);</span>
-<span class="source-line-no">085</span><span id="line-85">    final RegionServerServices rss = spy(TEST_UTIL.createMockRegionServerService(serverName));</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">    TableDescriptor htd =</span>
-<span class="source-line-no">088</span><span id="line-88">      TableDescriptorBuilder.newBuilder(TableName.valueOf("testOpenRegionFailed"))</span>
-<span class="source-line-no">089</span><span id="line-89">        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(fam1))</span>
-<span class="source-line-no">090</span><span id="line-90">        .setValue("COPROCESSOR$1", "hdfs://test/test.jar|test||").build();</span>
-<span class="source-line-no">091</span><span id="line-91"></span>
-<span class="source-line-no">092</span><span id="line-92">    RegionInfo hri = RegionInfoBuilder.newBuilder(htd.getTableName()).build();</span>
-<span class="source-line-no">093</span><span id="line-93">    ScheduledExecutorService executor =</span>
-<span class="source-line-no">094</span><span id="line-94">      CompatibilitySingletonFactory.getInstance(MetricsExecutor.class).getExecutor();</span>
-<span class="source-line-no">095</span><span id="line-95">    for (int i = 0; i &lt; 20; i++) {</span>
-<span class="source-line-no">096</span><span id="line-96">      try {</span>
-<span class="source-line-no">097</span><span id="line-97">        HRegion.openHRegion(hri, htd, rss.getWAL(hri), TEST_UTIL.getConfiguration(), rss, null);</span>
-<span class="source-line-no">098</span><span id="line-98">        fail("Should fail otherwise the test will be useless");</span>
-<span class="source-line-no">099</span><span id="line-99">      } catch (Throwable t) {</span>
-<span class="source-line-no">100</span><span id="line-100">        LOG.info("Expected exception, continue", t);</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">    TimeUnit.SECONDS.sleep(MetricsRegionWrapperImpl.PERIOD);</span>
-<span class="source-line-no">104</span><span id="line-104">    Field[] fields = ThreadPoolExecutor.class.getDeclaredFields();</span>
-<span class="source-line-no">105</span><span id="line-105">    boolean found = false;</span>
-<span class="source-line-no">106</span><span id="line-106">    for (Field field : fields) {</span>
-<span class="source-line-no">107</span><span id="line-107">      if (field.getName().equals("workQueue")) {</span>
-<span class="source-line-no">108</span><span id="line-108">        field.setAccessible(true);</span>
-<span class="source-line-no">109</span><span id="line-109">        BlockingQueue&lt;Runnable&gt; workQueue = (BlockingQueue&lt;Runnable&gt;) field.get(executor);</span>
-<span class="source-line-no">110</span><span id="line-110">        // there are still two task not cancel, can not cause to memory lack</span>
-<span class="source-line-no">111</span><span id="line-111">        Assert.assertTrue("ScheduledExecutor#workQueue should equals 2, now is " + workQueue.size()</span>
-<span class="source-line-no">112</span><span id="line-112">          + ", please check region is close", 2 == workQueue.size());</span>
-<span class="source-line-no">113</span><span id="line-113">        found = true;</span>
-<span class="source-line-no">114</span><span id="line-114">      }</span>
-<span class="source-line-no">115</span><span id="line-115">    }</span>
-<span class="source-line-no">116</span><span id="line-116">    Assert.assertTrue("can not find workQueue, test failed", found);</span>
-<span class="source-line-no">117</span><span id="line-117">  }</span>
-<span class="source-line-no">118</span><span id="line-118"></span>
-<span class="source-line-no">119</span><span id="line-119">}</span>
+<span class="source-line-no">070</span><span id="line-70">  @AfterAll</span>
+<span class="source-line-no">071</span><span id="line-71">  public static void tearDown() throws IOException {</span>
+<span class="source-line-no">072</span><span id="line-72">    EnvironmentEdgeManagerTestHelper.reset();</span>
+<span class="source-line-no">073</span><span id="line-73">    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());</span>
+<span class="source-line-no">074</span><span id="line-74">    TEST_UTIL.cleanupTestDir();</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">  // make sure the region is successfully closed when the coprocessor config is wrong</span>
+<span class="source-line-no">078</span><span id="line-78">  @Test</span>
+<span class="source-line-no">079</span><span id="line-79">  public void testOpenRegionFailedMemoryLeak() throws Exception {</span>
+<span class="source-line-no">080</span><span id="line-80">    final ServerName serverName = ServerName.valueOf("testOpenRegionFailed", 100, 42);</span>
+<span class="source-line-no">081</span><span id="line-81">    final RegionServerServices rss = spy(TEST_UTIL.createMockRegionServerService(serverName));</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">    TableDescriptor htd =</span>
+<span class="source-line-no">084</span><span id="line-84">      TableDescriptorBuilder.newBuilder(TableName.valueOf("testOpenRegionFailed"))</span>
+<span class="source-line-no">085</span><span id="line-85">        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(fam1))</span>
+<span class="source-line-no">086</span><span id="line-86">        .setValue("COPROCESSOR$1", "hdfs://test/test.jar|test||").build();</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88">    RegionInfo hri = RegionInfoBuilder.newBuilder(htd.getTableName()).build();</span>
+<span class="source-line-no">089</span><span id="line-89">    ScheduledExecutorService executor =</span>
+<span class="source-line-no">090</span><span id="line-90">      CompatibilitySingletonFactory.getInstance(MetricsExecutor.class).getExecutor();</span>
+<span class="source-line-no">091</span><span id="line-91">    for (int i = 0; i &lt; 20; i++) {</span>
+<span class="source-line-no">092</span><span id="line-92">      try {</span>
+<span class="source-line-no">093</span><span id="line-93">        HRegion.openHRegion(hri, htd, rss.getWAL(hri), TEST_UTIL.getConfiguration(), rss, null);</span>
+<span class="source-line-no">094</span><span id="line-94">        fail("Should fail otherwise the test will be useless");</span>
+<span class="source-line-no">095</span><span id="line-95">      } catch (Throwable t) {</span>
+<span class="source-line-no">096</span><span id="line-96">        LOG.info("Expected exception, continue", t);</span>
+<span class="source-line-no">097</span><span id="line-97">      }</span>
+<span class="source-line-no">098</span><span id="line-98">    }</span>
+<span class="source-line-no">099</span><span id="line-99">    TimeUnit.SECONDS.sleep(MetricsRegionWrapperImpl.PERIOD);</span>
+<span class="source-line-no">100</span><span id="line-100">    Field[] fields = ThreadPoolExecutor.class.getDeclaredFields();</span>
+<span class="source-line-no">101</span><span id="line-101">    boolean found = false;</span>
+<span class="source-line-no">102</span><span id="line-102">    for (Field field : fields) {</span>
+<span class="source-line-no">103</span><span id="line-103">      if (field.getName().equals("workQueue")) {</span>
+<span class="source-line-no">104</span><span id="line-104">        field.setAccessible(true);</span>
+<span class="source-line-no">105</span><span id="line-105">        BlockingQueue&lt;Runnable&gt; workQueue = (BlockingQueue&lt;Runnable&gt;) field.get(executor);</span>
+<span class="source-line-no">106</span><span id="line-106">        // there are still two task not cancel, can not cause to memory lack</span>
+<span class="source-line-no">107</span><span id="line-107">        assertEquals(2, workQueue.size(), "ScheduledExecutor#workQueue should equals 2, now is "</span>
+<span class="source-line-no">108</span><span id="line-108">          + workQueue.size() + " please check region is close");</span>
+<span class="source-line-no">109</span><span id="line-109">        found = true;</span>
+<span class="source-line-no">110</span><span id="line-110">      }</span>
+<span class="source-line-no">111</span><span id="line-111">    }</span>
+<span class="source-line-no">112</span><span id="line-112">    assertTrue(found, "can not find workQueue, test failed");</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">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
index 7dacfc387a4..adfed4afdbb 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html
@@ -30,7 +30,7 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.util.List;</span>
@@ -39,95 +39,90 @@
 <span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.junit.AfterClass;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.junit.BeforeClass;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.junit.ClassRule;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.junit.Test;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">044</span><span id="line-44"></span>
-<span class="source-line-no">045</span><span id="line-45">/**</span>
-<span class="source-line-no">046</span><span id="line-46"> * Testcase for HBASE-20242</span>
-<span class="source-line-no">047</span><span id="line-47"> */</span>
-<span class="source-line-no">048</span><span id="line-48">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">049</span><span id="line-49">public class TestOpenSeqNumUnexpectedIncrease {</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">  @ClassRule</span>
-<span class="source-line-no">052</span><span id="line-52">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">053</span><span id="line-53">    HBaseClassTestRule.forClass(TestOpenSeqNumUnexpectedIncrease.class);</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">  private static AtomicInteger FAILED_OPEN = new AtomicInteger(0);</span>
-<span class="source-line-no">058</span><span id="line-58"></span>
-<span class="source-line-no">059</span><span id="line-59">  private static TableName TABLE_NAME = TableName.valueOf("test");</span>
-<span class="source-line-no">060</span><span id="line-60"></span>
-<span class="source-line-no">061</span><span id="line-61">  private static byte[] CF = Bytes.toBytes("CF");</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  public static final class MockHRegion extends HRegion {</span>
-<span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">    @SuppressWarnings("deprecation")</span>
-<span class="source-line-no">066</span><span id="line-66">    public MockHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration confParam,</span>
-<span class="source-line-no">067</span><span id="line-67">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">068</span><span id="line-68">      super(tableDir, wal, fs, confParam, regionInfo, htd, rsServices);</span>
-<span class="source-line-no">069</span><span id="line-69">    }</span>
-<span class="source-line-no">070</span><span id="line-70"></span>
-<span class="source-line-no">071</span><span id="line-71">    @Override</span>
-<span class="source-line-no">072</span><span id="line-72">    protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {</span>
-<span class="source-line-no">073</span><span id="line-73">      if (getRegionInfo().getTable().equals(TABLE_NAME) &amp;&amp; FAILED_OPEN.get() &gt; 0) {</span>
-<span class="source-line-no">074</span><span id="line-74">        FAILED_OPEN.decrementAndGet();</span>
-<span class="source-line-no">075</span><span id="line-75">        rsServices.abort("for testing", new Exception("Inject error for testing"));</span>
-<span class="source-line-no">076</span><span id="line-76">        throw new IOException("Inject error for testing");</span>
-<span class="source-line-no">077</span><span id="line-77">      }</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">/**</span>
+<span class="source-line-no">044</span><span id="line-44"> * Testcase for HBASE-20242</span>
+<span class="source-line-no">045</span><span id="line-45"> */</span>
+<span class="source-line-no">046</span><span id="line-46">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">047</span><span id="line-47">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">048</span><span id="line-48">public class TestOpenSeqNumUnexpectedIncrease {</span>
+<span class="source-line-no">049</span><span id="line-49"></span>
+<span class="source-line-no">050</span><span id="line-50">  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">  private static AtomicInteger FAILED_OPEN = new AtomicInteger(0);</span>
+<span class="source-line-no">053</span><span id="line-53"></span>
+<span class="source-line-no">054</span><span id="line-54">  private static TableName TABLE_NAME = TableName.valueOf("test");</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56">  private static byte[] CF = Bytes.toBytes("CF");</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">  public static final class MockHRegion extends HRegion {</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">    @SuppressWarnings("deprecation")</span>
+<span class="source-line-no">061</span><span id="line-61">    public MockHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration confParam,</span>
+<span class="source-line-no">062</span><span id="line-62">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">063</span><span id="line-63">      super(tableDir, wal, fs, confParam, regionInfo, htd, rsServices);</span>
+<span class="source-line-no">064</span><span id="line-64">    }</span>
+<span class="source-line-no">065</span><span id="line-65"></span>
+<span class="source-line-no">066</span><span id="line-66">    @Override</span>
+<span class="source-line-no">067</span><span id="line-67">    protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {</span>
+<span class="source-line-no">068</span><span id="line-68">      if (getRegionInfo().getTable().equals(TABLE_NAME) &amp;&amp; FAILED_OPEN.get() &gt; 0) {</span>
+<span class="source-line-no">069</span><span id="line-69">        FAILED_OPEN.decrementAndGet();</span>
+<span class="source-line-no">070</span><span id="line-70">        rsServices.abort("for testing", new Exception("Inject error for testing"));</span>
+<span class="source-line-no">071</span><span id="line-71">        throw new IOException("Inject error for testing");</span>
+<span class="source-line-no">072</span><span id="line-72">      }</span>
+<span class="source-line-no">073</span><span id="line-73">    }</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">    public Map&lt;byte[], List&lt;HStoreFile&gt;&gt; close() throws IOException {</span>
+<span class="source-line-no">076</span><span id="line-76">      // skip close</span>
+<span class="source-line-no">077</span><span id="line-77">      return null;</span>
 <span class="source-line-no">078</span><span id="line-78">    }</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">    public Map&lt;byte[], List&lt;HStoreFile&gt;&gt; close() throws IOException {</span>
-<span class="source-line-no">081</span><span id="line-81">      // skip close</span>
-<span class="source-line-no">082</span><span id="line-82">      return null;</span>
-<span class="source-line-no">083</span><span id="line-83">    }</span>
-<span class="source-line-no">084</span><span id="line-84">  }</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">  @BeforeClass</span>
-<span class="source-line-no">087</span><span id="line-87">  public static void setUp() throws Exception {</span>
-<span class="source-line-no">088</span><span id="line-88">    UTIL.getConfiguration().setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 600000);</span>
-<span class="source-line-no">089</span><span id="line-89">    UTIL.getConfiguration().setClass(HConstants.REGION_IMPL, MockHRegion.class, HRegion.class);</span>
-<span class="source-line-no">090</span><span id="line-90">    UTIL.startMiniCluster(3);</span>
-<span class="source-line-no">091</span><span id="line-91">    UTIL.createTable(TABLE_NAME, CF);</span>
-<span class="source-line-no">092</span><span id="line-92">    UTIL.getAdmin().balancerSwitch(false, true);</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">  @BeforeAll</span>
+<span class="source-line-no">082</span><span id="line-82">  public static void setUp() throws Exception {</span>
+<span class="source-line-no">083</span><span id="line-83">    UTIL.getConfiguration().setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 600000);</span>
+<span class="source-line-no">084</span><span id="line-84">    UTIL.getConfiguration().setClass(HConstants.REGION_IMPL, MockHRegion.class, HRegion.class);</span>
+<span class="source-line-no">085</span><span id="line-85">    UTIL.startMiniCluster(3);</span>
+<span class="source-line-no">086</span><span id="line-86">    UTIL.createTable(TABLE_NAME, CF);</span>
+<span class="source-line-no">087</span><span id="line-87">    UTIL.getAdmin().balancerSwitch(false, true);</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">  @AfterAll</span>
+<span class="source-line-no">091</span><span id="line-91">  public static void tearDown() throws Exception {</span>
+<span class="source-line-no">092</span><span id="line-92">    UTIL.shutdownMiniCluster();</span>
 <span class="source-line-no">093</span><span id="line-93">  }</span>
 <span class="source-line-no">094</span><span id="line-94"></span>
-<span class="source-line-no">095</span><span id="line-95">  @AfterClass</span>
-<span class="source-line-no">096</span><span id="line-96">  public static void tearDown() throws Exception {</span>
-<span class="source-line-no">097</span><span id="line-97">    UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">098</span><span id="line-98">  }</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">  @Test</span>
-<span class="source-line-no">101</span><span id="line-101">  public void test() throws IOException, InterruptedException {</span>
-<span class="source-line-no">102</span><span id="line-102">    HRegion region = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
-<span class="source-line-no">103</span><span id="line-103">    long openSeqNum = region.getOpenSeqNum();</span>
-<span class="source-line-no">104</span><span id="line-104">    HRegionServer src = UTIL.getRSForFirstRegionInTable(TABLE_NAME);</span>
-<span class="source-line-no">105</span><span id="line-105">    HRegionServer dst = UTIL.getOtherRegionServer(src);</span>
+<span class="source-line-no">095</span><span id="line-95">  @Test</span>
+<span class="source-line-no">096</span><span id="line-96">  public void test() throws IOException, InterruptedException {</span>
+<span class="source-line-no">097</span><span id="line-97">    HRegion region = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
+<span class="source-line-no">098</span><span id="line-98">    long openSeqNum = region.getOpenSeqNum();</span>
+<span class="source-line-no">099</span><span id="line-99">    HRegionServer src = UTIL.getRSForFirstRegionInTable(TABLE_NAME);</span>
+<span class="source-line-no">100</span><span id="line-100">    HRegionServer dst = UTIL.getOtherRegionServer(src);</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">    // will fail two times, and then verify that the open sequence number is still openSeqNum + 2</span>
+<span class="source-line-no">103</span><span id="line-103">    FAILED_OPEN.set(2);</span>
+<span class="source-line-no">104</span><span id="line-104">    UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), dst.getServerName());</span>
+<span class="source-line-no">105</span><span id="line-105">    UTIL.waitTableAvailable(TABLE_NAME);</span>
 <span class="source-line-no">106</span><span id="line-106"></span>
-<span class="source-line-no">107</span><span id="line-107">    // will fail two times, and then verify that the open sequence number is still openSeqNum + 2</span>
-<span class="source-line-no">108</span><span id="line-108">    FAILED_OPEN.set(2);</span>
-<span class="source-line-no">109</span><span id="line-109">    UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), dst.getServerName());</span>
-<span class="source-line-no">110</span><span id="line-110">    UTIL.waitTableAvailable(TABLE_NAME);</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">    HRegion region1 = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
-<span class="source-line-no">113</span><span id="line-113">    long openSeqNum1 = region1.getOpenSeqNum();</span>
-<span class="source-line-no">114</span><span id="line-114"></span>
-<span class="source-line-no">115</span><span id="line-115">    assertEquals(openSeqNum + 2, openSeqNum1);</span>
-<span class="source-line-no">116</span><span id="line-116">  }</span>
-<span class="source-line-no">117</span><span id="line-117">}</span>
+<span class="source-line-no">107</span><span id="line-107">    HRegion region1 = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
+<span class="source-line-no">108</span><span id="line-108">    long openSeqNum1 = region1.getOpenSeqNum();</span>
+<span class="source-line-no">109</span><span id="line-109"></span>
+<span class="source-line-no">110</span><span id="line-110">    assertEquals(openSeqNum + 2, openSeqNum1);</span>
+<span class="source-line-no">111</span><span id="line-111">  }</span>
+<span class="source-line-no">112</span><span id="line-112">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html
index e0feb4bab15..fb3ab956df1 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html
@@ -30,7 +30,7 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.util.List;</span>
@@ -39,95 +39,90 @@
 <span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.junit.AfterClass;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.junit.BeforeClass;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.junit.ClassRule;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.junit.Test;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">044</span><span id="line-44"></span>
-<span class="source-line-no">045</span><span id="line-45">/**</span>
-<span class="source-line-no">046</span><span id="line-46"> * Testcase for HBASE-20242</span>
-<span class="source-line-no">047</span><span id="line-47"> */</span>
-<span class="source-line-no">048</span><span id="line-48">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">049</span><span id="line-49">public class TestOpenSeqNumUnexpectedIncrease {</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">  @ClassRule</span>
-<span class="source-line-no">052</span><span id="line-52">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">053</span><span id="line-53">    HBaseClassTestRule.forClass(TestOpenSeqNumUnexpectedIncrease.class);</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">  private static AtomicInteger FAILED_OPEN = new AtomicInteger(0);</span>
-<span class="source-line-no">058</span><span id="line-58"></span>
-<span class="source-line-no">059</span><span id="line-59">  private static TableName TABLE_NAME = TableName.valueOf("test");</span>
-<span class="source-line-no">060</span><span id="line-60"></span>
-<span class="source-line-no">061</span><span id="line-61">  private static byte[] CF = Bytes.toBytes("CF");</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  public static final class MockHRegion extends HRegion {</span>
-<span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">    @SuppressWarnings("deprecation")</span>
-<span class="source-line-no">066</span><span id="line-66">    public MockHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration confParam,</span>
-<span class="source-line-no">067</span><span id="line-67">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">068</span><span id="line-68">      super(tableDir, wal, fs, confParam, regionInfo, htd, rsServices);</span>
-<span class="source-line-no">069</span><span id="line-69">    }</span>
-<span class="source-line-no">070</span><span id="line-70"></span>
-<span class="source-line-no">071</span><span id="line-71">    @Override</span>
-<span class="source-line-no">072</span><span id="line-72">    protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {</span>
-<span class="source-line-no">073</span><span id="line-73">      if (getRegionInfo().getTable().equals(TABLE_NAME) &amp;&amp; FAILED_OPEN.get() &gt; 0) {</span>
-<span class="source-line-no">074</span><span id="line-74">        FAILED_OPEN.decrementAndGet();</span>
-<span class="source-line-no">075</span><span id="line-75">        rsServices.abort("for testing", new Exception("Inject error for testing"));</span>
-<span class="source-line-no">076</span><span id="line-76">        throw new IOException("Inject error for testing");</span>
-<span class="source-line-no">077</span><span id="line-77">      }</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">/**</span>
+<span class="source-line-no">044</span><span id="line-44"> * Testcase for HBASE-20242</span>
+<span class="source-line-no">045</span><span id="line-45"> */</span>
+<span class="source-line-no">046</span><span id="line-46">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">047</span><span id="line-47">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">048</span><span id="line-48">public class TestOpenSeqNumUnexpectedIncrease {</span>
+<span class="source-line-no">049</span><span id="line-49"></span>
+<span class="source-line-no">050</span><span id="line-50">  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">  private static AtomicInteger FAILED_OPEN = new AtomicInteger(0);</span>
+<span class="source-line-no">053</span><span id="line-53"></span>
+<span class="source-line-no">054</span><span id="line-54">  private static TableName TABLE_NAME = TableName.valueOf("test");</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56">  private static byte[] CF = Bytes.toBytes("CF");</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">  public static final class MockHRegion extends HRegion {</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">    @SuppressWarnings("deprecation")</span>
+<span class="source-line-no">061</span><span id="line-61">    public MockHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration confParam,</span>
+<span class="source-line-no">062</span><span id="line-62">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">063</span><span id="line-63">      super(tableDir, wal, fs, confParam, regionInfo, htd, rsServices);</span>
+<span class="source-line-no">064</span><span id="line-64">    }</span>
+<span class="source-line-no">065</span><span id="line-65"></span>
+<span class="source-line-no">066</span><span id="line-66">    @Override</span>
+<span class="source-line-no">067</span><span id="line-67">    protected void writeRegionOpenMarker(WAL wal, long openSeqId) throws IOException {</span>
+<span class="source-line-no">068</span><span id="line-68">      if (getRegionInfo().getTable().equals(TABLE_NAME) &amp;&amp; FAILED_OPEN.get() &gt; 0) {</span>
+<span class="source-line-no">069</span><span id="line-69">        FAILED_OPEN.decrementAndGet();</span>
+<span class="source-line-no">070</span><span id="line-70">        rsServices.abort("for testing", new Exception("Inject error for testing"));</span>
+<span class="source-line-no">071</span><span id="line-71">        throw new IOException("Inject error for testing");</span>
+<span class="source-line-no">072</span><span id="line-72">      }</span>
+<span class="source-line-no">073</span><span id="line-73">    }</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">    public Map&lt;byte[], List&lt;HStoreFile&gt;&gt; close() throws IOException {</span>
+<span class="source-line-no">076</span><span id="line-76">      // skip close</span>
+<span class="source-line-no">077</span><span id="line-77">      return null;</span>
 <span class="source-line-no">078</span><span id="line-78">    }</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">    public Map&lt;byte[], List&lt;HStoreFile&gt;&gt; close() throws IOException {</span>
-<span class="source-line-no">081</span><span id="line-81">      // skip close</span>
-<span class="source-line-no">082</span><span id="line-82">      return null;</span>
-<span class="source-line-no">083</span><span id="line-83">    }</span>
-<span class="source-line-no">084</span><span id="line-84">  }</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">  @BeforeClass</span>
-<span class="source-line-no">087</span><span id="line-87">  public static void setUp() throws Exception {</span>
-<span class="source-line-no">088</span><span id="line-88">    UTIL.getConfiguration().setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 600000);</span>
-<span class="source-line-no">089</span><span id="line-89">    UTIL.getConfiguration().setClass(HConstants.REGION_IMPL, MockHRegion.class, HRegion.class);</span>
-<span class="source-line-no">090</span><span id="line-90">    UTIL.startMiniCluster(3);</span>
-<span class="source-line-no">091</span><span id="line-91">    UTIL.createTable(TABLE_NAME, CF);</span>
-<span class="source-line-no">092</span><span id="line-92">    UTIL.getAdmin().balancerSwitch(false, true);</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">  @BeforeAll</span>
+<span class="source-line-no">082</span><span id="line-82">  public static void setUp() throws Exception {</span>
+<span class="source-line-no">083</span><span id="line-83">    UTIL.getConfiguration().setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 600000);</span>
+<span class="source-line-no">084</span><span id="line-84">    UTIL.getConfiguration().setClass(HConstants.REGION_IMPL, MockHRegion.class, HRegion.class);</span>
+<span class="source-line-no">085</span><span id="line-85">    UTIL.startMiniCluster(3);</span>
+<span class="source-line-no">086</span><span id="line-86">    UTIL.createTable(TABLE_NAME, CF);</span>
+<span class="source-line-no">087</span><span id="line-87">    UTIL.getAdmin().balancerSwitch(false, true);</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">  @AfterAll</span>
+<span class="source-line-no">091</span><span id="line-91">  public static void tearDown() throws Exception {</span>
+<span class="source-line-no">092</span><span id="line-92">    UTIL.shutdownMiniCluster();</span>
 <span class="source-line-no">093</span><span id="line-93">  }</span>
 <span class="source-line-no">094</span><span id="line-94"></span>
-<span class="source-line-no">095</span><span id="line-95">  @AfterClass</span>
-<span class="source-line-no">096</span><span id="line-96">  public static void tearDown() throws Exception {</span>
-<span class="source-line-no">097</span><span id="line-97">    UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">098</span><span id="line-98">  }</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">  @Test</span>
-<span class="source-line-no">101</span><span id="line-101">  public void test() throws IOException, InterruptedException {</span>
-<span class="source-line-no">102</span><span id="line-102">    HRegion region = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
-<span class="source-line-no">103</span><span id="line-103">    long openSeqNum = region.getOpenSeqNum();</span>
-<span class="source-line-no">104</span><span id="line-104">    HRegionServer src = UTIL.getRSForFirstRegionInTable(TABLE_NAME);</span>
-<span class="source-line-no">105</span><span id="line-105">    HRegionServer dst = UTIL.getOtherRegionServer(src);</span>
+<span class="source-line-no">095</span><span id="line-95">  @Test</span>
+<span class="source-line-no">096</span><span id="line-96">  public void test() throws IOException, InterruptedException {</span>
+<span class="source-line-no">097</span><span id="line-97">    HRegion region = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
+<span class="source-line-no">098</span><span id="line-98">    long openSeqNum = region.getOpenSeqNum();</span>
+<span class="source-line-no">099</span><span id="line-99">    HRegionServer src = UTIL.getRSForFirstRegionInTable(TABLE_NAME);</span>
+<span class="source-line-no">100</span><span id="line-100">    HRegionServer dst = UTIL.getOtherRegionServer(src);</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">    // will fail two times, and then verify that the open sequence number is still openSeqNum + 2</span>
+<span class="source-line-no">103</span><span id="line-103">    FAILED_OPEN.set(2);</span>
+<span class="source-line-no">104</span><span id="line-104">    UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), dst.getServerName());</span>
+<span class="source-line-no">105</span><span id="line-105">    UTIL.waitTableAvailable(TABLE_NAME);</span>
 <span class="source-line-no">106</span><span id="line-106"></span>
-<span class="source-line-no">107</span><span id="line-107">    // will fail two times, and then verify that the open sequence number is still openSeqNum + 2</span>
-<span class="source-line-no">108</span><span id="line-108">    FAILED_OPEN.set(2);</span>
-<span class="source-line-no">109</span><span id="line-109">    UTIL.getAdmin().move(region.getRegionInfo().getEncodedNameAsBytes(), dst.getServerName());</span>
-<span class="source-line-no">110</span><span id="line-110">    UTIL.waitTableAvailable(TABLE_NAME);</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">    HRegion region1 = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
-<span class="source-line-no">113</span><span id="line-113">    long openSeqNum1 = region1.getOpenSeqNum();</span>
-<span class="source-line-no">114</span><span id="line-114"></span>
-<span class="source-line-no">115</span><span id="line-115">    assertEquals(openSeqNum + 2, openSeqNum1);</span>
-<span class="source-line-no">116</span><span id="line-116">  }</span>
-<span class="source-line-no">117</span><span id="line-117">}</span>
+<span class="source-line-no">107</span><span id="line-107">    HRegion region1 = UTIL.getMiniHBaseCluster().getRegions(TABLE_NAME).get(0);</span>
+<span class="source-line-no">108</span><span id="line-108">    long openSeqNum1 = region1.getOpenSeqNum();</span>
+<span class="source-line-no">109</span><span id="line-109"></span>
+<span class="source-line-no">110</span><span id="line-110">    assertEquals(openSeqNum + 2, openSeqNum1);</span>
+<span class="source-line-no">111</span><span id="line-111">  }</span>
+<span class="source-line-no">112</span><span id="line-112">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html
index 27abd019b51..c2e255b968a 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html
@@ -31,13 +31,13 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.HBaseTestingUtil.fam1;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertEquals;</span>
-<span class="source-line-no">022</span><span id="line-22">import static org.junit.Assert.assertTrue;</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 org.apache.hadoop.hbase.Cell;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.CellUtil;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
+<span class="source-line-no">023</span><span id="line-23">import static org.junit.jupiter.api.Assertions.fail;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">import java.io.IOException;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.Cell;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.CellUtil;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HConstants;</span>
 <span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HConstants.OperationStatusCode;</span>
@@ -54,199 +54,191 @@
 <span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
 <span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.util.Bytes;</span>
 <span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.junit.After;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.junit.Before;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.junit.BeforeClass;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.junit.ClassRule;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.junit.Rule;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.junit.Test;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.junit.rules.TestName;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.slf4j.Logger;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">/**</span>
-<span class="source-line-no">056</span><span id="line-56"> * Testing of multiPut in parallel.</span>
-<span class="source-line-no">057</span><span id="line-57"> */</span>
-<span class="source-line-no">058</span><span id="line-58">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">059</span><span id="line-59">public class TestParallelPut {</span>
-<span class="source-line-no">060</span><span id="line-60"></span>
-<span class="source-line-no">061</span><span id="line-61">  @ClassRule</span>
-<span class="source-line-no">062</span><span id="line-62">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">063</span><span id="line-63">    HBaseClassTestRule.forClass(TestParallelPut.class);</span>
-<span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">  private static final Logger LOG = LoggerFactory.getLogger(TestParallelPut.class);</span>
-<span class="source-line-no">066</span><span id="line-66">  @Rule</span>
-<span class="source-line-no">067</span><span id="line-67">  public TestName name = new TestName();</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">  private HRegion region = null;</span>
-<span class="source-line-no">070</span><span id="line-70">  private static HBaseTestingUtil HBTU = new HBaseTestingUtil();</span>
-<span class="source-line-no">071</span><span id="line-71">  private static final int THREADS100 = 100;</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 names</span>
-<span class="source-line-no">074</span><span id="line-74">  static byte[] tableName;</span>
-<span class="source-line-no">075</span><span id="line-75">  static final byte[] qual1 = Bytes.toBytes("qual1");</span>
-<span class="source-line-no">076</span><span id="line-76">  static final byte[] qual2 = Bytes.toBytes("qual2");</span>
-<span class="source-line-no">077</span><span id="line-77">  static final byte[] qual3 = Bytes.toBytes("qual3");</span>
-<span class="source-line-no">078</span><span id="line-78">  static final byte[] value1 = Bytes.toBytes("value1");</span>
-<span class="source-line-no">079</span><span id="line-79">  static final byte[] value2 = Bytes.toBytes("value2");</span>
-<span class="source-line-no">080</span><span id="line-80">  static final byte[] row = Bytes.toBytes("rowA");</span>
-<span class="source-line-no">081</span><span id="line-81">  static final byte[] row2 = Bytes.toBytes("rowB");</span>
+<span class="source-line-no">044</span><span id="line-44">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.slf4j.Logger;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">/**</span>
+<span class="source-line-no">054</span><span id="line-54"> * Testing of multiPut in parallel.</span>
+<span class="source-line-no">055</span><span id="line-55"> */</span>
+<span class="source-line-no">056</span><span id="line-56">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">057</span><span id="line-57">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">058</span><span id="line-58">public class TestParallelPut {</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  private static final Logger LOG = LoggerFactory.getLogger(TestParallelPut.class);</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">  private HRegion region = null;</span>
+<span class="source-line-no">063</span><span id="line-63">  private static HBaseTestingUtil HBTU = new HBaseTestingUtil();</span>
+<span class="source-line-no">064</span><span id="line-64">  private static final int THREADS100 = 100;</span>
+<span class="source-line-no">065</span><span id="line-65">  private String methodName;</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">  // Test names</span>
+<span class="source-line-no">068</span><span id="line-68">  static byte[] tableName;</span>
+<span class="source-line-no">069</span><span id="line-69">  static final byte[] qual1 = Bytes.toBytes("qual1");</span>
+<span class="source-line-no">070</span><span id="line-70">  static final byte[] qual2 = Bytes.toBytes("qual2");</span>
+<span class="source-line-no">071</span><span id="line-71">  static final byte[] qual3 = Bytes.toBytes("qual3");</span>
+<span class="source-line-no">072</span><span id="line-72">  static final byte[] value1 = Bytes.toBytes("value1");</span>
+<span class="source-line-no">073</span><span id="line-73">  static final byte[] value2 = Bytes.toBytes("value2");</span>
+<span class="source-line-no">074</span><span id="line-74">  static final byte[] row = Bytes.toBytes("rowA");</span>
+<span class="source-line-no">075</span><span id="line-75">  static final byte[] row2 = Bytes.toBytes("rowB");</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  @BeforeAll</span>
+<span class="source-line-no">078</span><span id="line-78">  public static void beforeClass() {</span>
+<span class="source-line-no">079</span><span id="line-79">    // Make sure enough handlers.</span>
+<span class="source-line-no">080</span><span id="line-80">    HBTU.getConfiguration().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, THREADS100);</span>
+<span class="source-line-no">081</span><span id="line-81">  }</span>
 <span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  @BeforeClass</span>
-<span class="source-line-no">084</span><span id="line-84">  public static void beforeClass() {</span>
-<span class="source-line-no">085</span><span id="line-85">    // Make sure enough handlers.</span>
-<span class="source-line-no">086</span><span id="line-86">    HBTU.getConfiguration().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, THREADS100);</span>
+<span class="source-line-no">083</span><span id="line-83">  @BeforeEach</span>
+<span class="source-line-no">084</span><span id="line-84">  public void setUp(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">085</span><span id="line-85">    methodName = testInfo.getTestMethod().get().getName();</span>
+<span class="source-line-no">086</span><span id="line-86">    tableName = Bytes.toBytes(methodName);</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">   * @see org.apache.hadoop.hbase.HBaseTestCase#setUp()</span>
-<span class="source-line-no">091</span><span id="line-91">   */</span>
-<span class="source-line-no">092</span><span id="line-92">  @Before</span>
-<span class="source-line-no">093</span><span id="line-93">  public void setUp() throws Exception {</span>
-<span class="source-line-no">094</span><span id="line-94">    tableName = Bytes.toBytes(name.getMethodName());</span>
+<span class="source-line-no">089</span><span id="line-89">  @AfterEach</span>
+<span class="source-line-no">090</span><span id="line-90">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">091</span><span id="line-91">    EnvironmentEdgeManagerTestHelper.reset();</span>
+<span class="source-line-no">092</span><span id="line-92">    if (region != null) {</span>
+<span class="source-line-no">093</span><span id="line-93">      region.close(true);</span>
+<span class="source-line-no">094</span><span id="line-94">    }</span>
 <span class="source-line-no">095</span><span id="line-95">  }</span>
 <span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">  @After</span>
-<span class="source-line-no">098</span><span id="line-98">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">099</span><span id="line-99">    EnvironmentEdgeManagerTestHelper.reset();</span>
-<span class="source-line-no">100</span><span id="line-100">    if (region != null) {</span>
-<span class="source-line-no">101</span><span id="line-101">      region.close(true);</span>
-<span class="source-line-no">102</span><span id="line-102">    }</span>
-<span class="source-line-no">103</span><span id="line-103">  }</span>
-<span class="source-line-no">104</span><span id="line-104"></span>
-<span class="source-line-no">105</span><span id="line-105">  public String getName() {</span>
-<span class="source-line-no">106</span><span id="line-106">    return name.getMethodName();</span>
-<span class="source-line-no">107</span><span id="line-107">  }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">  //////////////////////////////////////////////////////////////////////////////</span>
-<span class="source-line-no">110</span><span id="line-110">  // New tests that don't spin up a mini cluster but rather just test the</span>
-<span class="source-line-no">111</span><span id="line-111">  // individual code pieces in the HRegion.</span>
-<span class="source-line-no">112</span><span id="line-112">  //////////////////////////////////////////////////////////////////////////////</span>
+<span class="source-line-no">097</span><span id="line-97">  public String getMethodName() {</span>
+<span class="source-line-no">098</span><span id="line-98">    return methodName;</span>
+<span class="source-line-no">099</span><span id="line-99">  }</span>
+<span class="source-line-no">100</span><span id="line-100"></span>
+<span class="source-line-no">101</span><span id="line-101">  //////////////////////////////////////////////////////////////////////////////</span>
+<span class="source-line-no">102</span><span id="line-102">  // New tests that don't spin up a mini cluster but rather just test the</span>
+<span class="source-line-no">103</span><span id="line-103">  // individual code pieces in the HRegion.</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">   * Test one put command.</span>
+<span class="source-line-no">108</span><span id="line-108">   */</span>
+<span class="source-line-no">109</span><span id="line-109">  @Test</span>
+<span class="source-line-no">110</span><span id="line-110">  public void testPut() throws IOException {</span>
+<span class="source-line-no">111</span><span id="line-111">    LOG.info("Starting testPut");</span>
+<span class="source-line-no">112</span><span id="line-112">    this.region = initHRegion(tableName, getMethodName(), fam1);</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">   * Test one put command.</span>
-<span class="source-line-no">116</span><span id="line-116">   */</span>
-<span class="source-line-no">117</span><span id="line-117">  @Test</span>
-<span class="source-line-no">118</span><span id="line-118">  public void testPut() throws IOException {</span>
-<span class="source-line-no">119</span><span id="line-119">    LOG.info("Starting testPut");</span>
-<span class="source-line-no">120</span><span id="line-120">    this.region = initHRegion(tableName, getName(), fam1);</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">    long value = 1L;</span>
-<span class="source-line-no">123</span><span id="line-123"></span>
-<span class="source-line-no">124</span><span id="line-124">    Put put = new Put(row);</span>
-<span class="source-line-no">125</span><span id="line-125">    put.addColumn(fam1, qual1, Bytes.toBytes(value));</span>
-<span class="source-line-no">126</span><span id="line-126">    region.put(put);</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128">    assertGet(this.region, row, fam1, qual1, Bytes.toBytes(value));</span>
-<span class="source-line-no">129</span><span id="line-129">  }</span>
+<span class="source-line-no">114</span><span id="line-114">    long value = 1L;</span>
+<span class="source-line-no">115</span><span id="line-115"></span>
+<span class="source-line-no">116</span><span id="line-116">    Put put = new Put(row);</span>
+<span class="source-line-no">117</span><span id="line-117">    put.addColumn(fam1, qual1, Bytes.toBytes(value));</span>
+<span class="source-line-no">118</span><span id="line-118">    region.put(put);</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120">    assertGet(this.region, row, fam1, qual1, Bytes.toBytes(value));</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">   * Test multi-threaded Puts.</span>
+<span class="source-line-no">125</span><span id="line-125">   */</span>
+<span class="source-line-no">126</span><span id="line-126">  @Test</span>
+<span class="source-line-no">127</span><span id="line-127">  public void testParallelPuts() throws IOException {</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">    LOG.info("Starting testParallelPuts");</span>
 <span class="source-line-no">130</span><span id="line-130"></span>
-<span class="source-line-no">131</span><span id="line-131">  /**</span>
-<span class="source-line-no">132</span><span id="line-132">   * Test multi-threaded Puts.</span>
-<span class="source-line-no">133</span><span id="line-133">   */</span>
-<span class="source-line-no">134</span><span id="line-134">  @Test</span>
-<span class="source-line-no">135</span><span id="line-135">  public void testParallelPuts() throws IOException {</span>
+<span class="source-line-no">131</span><span id="line-131">    this.region = initHRegion(tableName, getMethodName(), fam1);</span>
+<span class="source-line-no">132</span><span id="line-132">    int numOps = 1000; // these many operations per thread</span>
+<span class="source-line-no">133</span><span id="line-133"></span>
+<span class="source-line-no">134</span><span id="line-134">    // create 100 threads, each will do its own puts</span>
+<span class="source-line-no">135</span><span id="line-135">    Putter[] all = new Putter[THREADS100];</span>
 <span class="source-line-no">136</span><span id="line-136"></span>
-<span class="source-line-no">137</span><span id="line-137">    LOG.info("Starting testParallelPuts");</span>
-<span class="source-line-no">138</span><span id="line-138"></span>
-<span class="source-line-no">139</span><span id="line-139">    this.region = initHRegion(tableName, getName(), fam1);</span>
-<span class="source-line-no">140</span><span id="line-140">    int numOps = 1000; // these many operations per thread</span>
+<span class="source-line-no">137</span><span id="line-137">    // create all threads</span>
+<span class="source-line-no">138</span><span id="line-138">    for (int i = 0; i &lt; THREADS100; i++) {</span>
+<span class="source-line-no">139</span><span id="line-139">      all[i] = new Putter(region, i, numOps);</span>
+<span class="source-line-no">140</span><span id="line-140">    }</span>
 <span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142">    // create 100 threads, each will do its own puts</span>
-<span class="source-line-no">143</span><span id="line-143">    Putter[] all = new Putter[THREADS100];</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145">    // create all threads</span>
-<span class="source-line-no">146</span><span id="line-146">    for (int i = 0; i &lt; THREADS100; i++) {</span>
-<span class="source-line-no">147</span><span id="line-147">      all[i] = new Putter(region, i, numOps);</span>
-<span class="source-line-no">148</span><span id="line-148">    }</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150">    // run all threads</span>
-<span class="source-line-no">151</span><span id="line-151">    for (int i = 0; i &lt; THREADS100; i++) {</span>
-<span class="source-line-no">152</span><span id="line-152">      all[i].start();</span>
-<span class="source-line-no">153</span><span id="line-153">    }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155">    // wait for all threads to finish</span>
-<span class="source-line-no">156</span><span id="line-156">    for (int i = 0; i &lt; THREADS100; i++) {</span>
-<span class="source-line-no">157</span><span id="line-157">      try {</span>
-<span class="source-line-no">158</span><span id="line-158">        all[i].join();</span>
-<span class="source-line-no">159</span><span id="line-159">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">160</span><span id="line-160">        LOG.warn("testParallelPuts encountered InterruptedException." + " Ignoring....", e);</span>
-<span class="source-line-no">161</span><span id="line-161">      }</span>
-<span class="source-line-no">162</span><span id="line-162">    }</span>
-<span class="source-line-no">163</span><span id="line-163">    LOG</span>
-<span class="source-line-no">164</span><span id="line-164">      .info("testParallelPuts successfully verified " + (numOps * THREADS100) + " put operations.");</span>
-<span class="source-line-no">165</span><span id="line-165">  }</span>
+<span class="source-line-no">142</span><span id="line-142">    // run all threads</span>
+<span class="source-line-no">143</span><span id="line-143">    for (int i = 0; i &lt; THREADS100; i++) {</span>
+<span class="source-line-no">144</span><span id="line-144">      all[i].start();</span>
+<span class="source-line-no">145</span><span id="line-145">    }</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147">    // wait for all threads to finish</span>
+<span class="source-line-no">148</span><span id="line-148">    for (int i = 0; i &lt; THREADS100; i++) {</span>
+<span class="source-line-no">149</span><span id="line-149">      try {</span>
+<span class="source-line-no">150</span><span id="line-150">        all[i].join();</span>
+<span class="source-line-no">151</span><span id="line-151">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">152</span><span id="line-152">        LOG.warn("testParallelPuts encountered InterruptedException." + " Ignoring....", e);</span>
+<span class="source-line-no">153</span><span id="line-153">      }</span>
+<span class="source-line-no">154</span><span id="line-154">    }</span>
+<span class="source-line-no">155</span><span id="line-155">    LOG</span>
+<span class="source-line-no">156</span><span id="line-156">      .info("testParallelPuts successfully verified " + (numOps * THREADS100) + " put operations.");</span>
+<span class="source-line-no">157</span><span id="line-157">  }</span>
+<span class="source-line-no">158</span><span id="line-158"></span>
+<span class="source-line-no">159</span><span id="line-159">  private static void assertGet(final HRegion region, byte[] row, byte[] familiy, byte[] qualifier,</span>
+<span class="source-line-no">160</span><span id="line-160">    byte[] value) throws IOException {</span>
+<span class="source-line-no">161</span><span id="line-161">    // run a get and see if the value matches</span>
+<span class="source-line-no">162</span><span id="line-162">    Get get = new Get(row);</span>
+<span class="source-line-no">163</span><span id="line-163">    get.addColumn(familiy, qualifier);</span>
+<span class="source-line-no">164</span><span id="line-164">    Result result = region.get(get);</span>
+<span class="source-line-no">165</span><span id="line-165">    assertEquals(1, result.size());</span>
 <span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">  private static void assertGet(final HRegion region, byte[] row, byte[] familiy, byte[] qualifier,</span>
-<span class="source-line-no">168</span><span id="line-168">    byte[] value) throws IOException {</span>
-<span class="source-line-no">169</span><span id="line-169">    // run a get and see if the value matches</span>
-<span class="source-line-no">170</span><span id="line-170">    Get get = new Get(row);</span>
-<span class="source-line-no">171</span><span id="line-171">    get.addColumn(familiy, qualifier);</span>
-<span class="source-line-no">172</span><span id="line-172">    Result result = region.get(get);</span>
-<span class="source-line-no">173</span><span id="line-173">    assertEquals(1, result.size());</span>
-<span class="source-line-no">174</span><span id="line-174"></span>
-<span class="source-line-no">175</span><span id="line-175">    Cell kv = result.rawCells()[0];</span>
-<span class="source-line-no">176</span><span id="line-176">    byte[] r = CellUtil.cloneValue(kv);</span>
-<span class="source-line-no">177</span><span id="line-177">    assertTrue(Bytes.compareTo(r, value) == 0);</span>
-<span class="source-line-no">178</span><span id="line-178">  }</span>
-<span class="source-line-no">179</span><span id="line-179"></span>
-<span class="source-line-no">180</span><span id="line-180">  private HRegion initHRegion(byte[] tableName, String callingMethod, byte[]... families)</span>
-<span class="source-line-no">181</span><span id="line-181">    throws IOException {</span>
-<span class="source-line-no">182</span><span id="line-182">    TableDescriptorBuilder builder =</span>
-<span class="source-line-no">183</span><span id="line-183">      TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));</span>
-<span class="source-line-no">184</span><span id="line-184">    for (byte[] family : families) {</span>
-<span class="source-line-no">185</span><span id="line-185">      builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family));</span>
-<span class="source-line-no">186</span><span id="line-186">    }</span>
-<span class="source-line-no">187</span><span id="line-187">    TableDescriptor tableDescriptor = builder.build();</span>
-<span class="source-line-no">188</span><span id="line-188">    RegionInfo info = RegionInfoBuilder.newBuilder(tableDescriptor.getTableName()).build();</span>
-<span class="source-line-no">189</span><span id="line-189">    return HBTU.createLocalHRegion(info, tableDescriptor);</span>
-<span class="source-line-no">190</span><span id="line-190">  }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192">  /**</span>
-<span class="source-line-no">193</span><span id="line-193">   * A thread that makes a few put calls</span>
-<span class="source-line-no">194</span><span id="line-194">   */</span>
-<span class="source-line-no">195</span><span id="line-195">  public static class Putter extends Thread {</span>
-<span class="source-line-no">196</span><span id="line-196"></span>
-<span class="source-line-no">197</span><span id="line-197">    private final HRegion region;</span>
-<span class="source-line-no">198</span><span id="line-198">    private final int threadNumber;</span>
-<span class="source-line-no">199</span><span id="line-199">    private final int numOps;</span>
-<span class="source-line-no">200</span><span id="line-200">    byte[] rowkey = null;</span>
+<span class="source-line-no">167</span><span id="line-167">    Cell kv = result.rawCells()[0];</span>
+<span class="source-line-no">168</span><span id="line-168">    byte[] r = CellUtil.cloneValue(kv);</span>
+<span class="source-line-no">169</span><span id="line-169">    assertTrue(Bytes.compareTo(r, value) == 0);</span>
+<span class="source-line-no">170</span><span id="line-170">  }</span>
+<span class="source-line-no">171</span><span id="line-171"></span>
+<span class="source-line-no">172</span><span id="line-172">  private HRegion initHRegion(byte[] tableName, String callingMethod, byte[]... families)</span>
+<span class="source-line-no">173</span><span id="line-173">    throws IOException {</span>
+<span class="source-line-no">174</span><span id="line-174">    TableDescriptorBuilder builder =</span>
+<span class="source-line-no">175</span><span id="line-175">      TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));</span>
+<span class="source-line-no">176</span><span id="line-176">    for (byte[] family : families) {</span>
+<span class="source-line-no">177</span><span id="line-177">      builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family));</span>
+<span class="source-line-no">178</span><span id="line-178">    }</span>
+<span class="source-line-no">179</span><span id="line-179">    TableDescriptor tableDescriptor = builder.build();</span>
+<span class="source-line-no">180</span><span id="line-180">    RegionInfo info = RegionInfoBuilder.newBuilder(tableDescriptor.getTableName()).build();</span>
+<span class="source-line-no">181</span><span id="line-181">    return HBTU.createLocalHRegion(info, tableDescriptor);</span>
+<span class="source-line-no">182</span><span id="line-182">  }</span>
+<span class="source-line-no">183</span><span id="line-183"></span>
+<span class="source-line-no">184</span><span id="line-184">  /**</span>
+<span class="source-line-no">185</span><span id="line-185">   * A thread that makes a few put calls</span>
+<span class="source-line-no">186</span><span id="line-186">   */</span>
+<span class="source-line-no">187</span><span id="line-187">  public static class Putter extends Thread {</span>
+<span class="source-line-no">188</span><span id="line-188"></span>
+<span class="source-line-no">189</span><span id="line-189">    private final HRegion region;</span>
+<span class="source-line-no">190</span><span id="line-190">    private final int threadNumber;</span>
+<span class="source-line-no">191</span><span id="line-191">    private final int numOps;</span>
+<span class="source-line-no">192</span><span id="line-192">    byte[] rowkey = null;</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194">    public Putter(HRegion region, int threadNumber, int numOps) {</span>
+<span class="source-line-no">195</span><span id="line-195">      this.region = region;</span>
+<span class="source-line-no">196</span><span id="line-196">      this.threadNumber = threadNumber;</span>
+<span class="source-line-no">197</span><span id="line-197">      this.numOps = numOps;</span>
+<span class="source-line-no">198</span><span id="line-198">      this.rowkey = Bytes.toBytes((long) threadNumber); // unique rowid per thread</span>
+<span class="source-line-no">199</span><span id="line-199">      setDaemon(true);</span>
+<span class="source-line-no">200</span><span id="line-200">    }</span>
 <span class="source-line-no">201</span><span id="line-201"></span>
-<span class="source-line-no">202</span><span id="line-202">    public Putter(HRegion region, int threadNumber, int numOps) {</span>
-<span class="source-line-no">203</span><span id="line-203">      this.region = region;</span>
-<span class="source-line-no">204</span><span id="line-204">      this.threadNumber = threadNumber;</span>
-<span class="source-line-no">205</span><span id="line-205">      this.numOps = numOps;</span>
-<span class="source-line-no">206</span><span id="line-206">      this.rowkey = Bytes.toBytes((long) threadNumber); // unique rowid per thread</span>
-<span class="source-line-no">207</span><span id="line-207">      setDaemon(true);</span>
-<span class="source-line-no">208</span><span id="line-208">    }</span>
-<span class="source-line-no">209</span><span id="line-209"></span>
-<span class="source-line-no">210</span><span id="line-210">    @Override</span>
-<span class="source-line-no">211</span><span id="line-211">    public void run() {</span>
-<span class="source-line-no">212</span><span id="line-212">      byte[] value = new byte[100];</span>
-<span class="source-line-no">213</span><span id="line-213">      Put[] in = new Put[1];</span>
-<span class="source-line-no">214</span><span id="line-214"></span>
-<span class="source-line-no">215</span><span id="line-215">      // iterate for the specified number of operations</span>
-<span class="source-line-no">216</span><span id="line-216">      for (int i = 0; i &lt; numOps; i++) {</span>
-<span class="source-line-no">217</span><span id="line-217">        // generate random bytes</span>
-<span class="source-line-no">218</span><span id="line-218">        Bytes.random(value);</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220">        // put the randombytes and verify that we can read it. This is one</span>
-<span class="source-line-no">221</span><span id="line-221">        // way of ensuring that rwcc manipulation in HRegion.put() is fine.</span>
-<span class="source-line-no">222</span><span id="line-222">        Put put = new Put(rowkey);</span>
-<span class="source-line-no">223</span><span id="line-223">        put.addColumn(fam1, qual1, value);</span>
-<span class="source-line-no">224</span><span id="line-224">        in[0] = put;</span>
-<span class="source-line-no">225</span><span id="line-225">        try {</span>
-<span class="source-line-no">226</span><span id="line-226">          OperationStatus[] ret = region.batchMutate(in);</span>
-<span class="source-line-no">227</span><span id="line-227">          assertEquals(1, ret.length);</span>
-<span class="source-line-no">228</span><span id="line-228">          assertEquals(OperationStatusCode.SUCCESS, ret[0].getOperationStatusCode());</span>
-<span class="source-line-no">229</span><span id="line-229">          assertGet(this.region, rowkey, fam1, qual1, value);</span>
-<span class="source-line-no">230</span><span id="line-230">        } catch (IOException e) {</span>
-<span class="source-line-no">231</span><span id="line-231">          assertTrue("Thread id " + threadNumber + " operation " + i + " failed.", false);</span>
-<span class="source-line-no">232</span><span id="line-232">        }</span>
-<span class="source-line-no">233</span><span id="line-233">      }</span>
-<span class="source-line-no">234</span><span id="line-234">    }</span>
-<span class="source-line-no">235</span><span id="line-235">  }</span>
-<span class="source-line-no">236</span><span id="line-236">}</span>
+<span class="source-line-no">202</span><span id="line-202">    @Override</span>
+<span class="source-line-no">203</span><span id="line-203">    public void run() {</span>
+<span class="source-line-no">204</span><span id="line-204">      byte[] value = new byte[100];</span>
+<span class="source-line-no">205</span><span id="line-205">      Put[] in = new Put[1];</span>
+<span class="source-line-no">206</span><span id="line-206"></span>
+<span class="source-line-no">207</span><span id="line-207">      // iterate for the specified number of operations</span>
+<span class="source-line-no">208</span><span id="line-208">      for (int i = 0; i &lt; numOps; i++) {</span>
+<span class="source-line-no">209</span><span id="line-209">        // generate random bytes</span>
+<span class="source-line-no">210</span><span id="line-210">        Bytes.random(value);</span>
+<span class="source-line-no">211</span><span id="line-211"></span>
+<span class="source-line-no">212</span><span id="line-212">        // put the randombytes and verify that we can read it. This is one</span>
+<span class="source-line-no">213</span><span id="line-213">        // way of ensuring that rwcc manipulation in HRegion.put() is fine.</span>
+<span class="source-line-no">214</span><span id="line-214">        Put put = new Put(rowkey);</span>
+<span class="source-line-no">215</span><span id="line-215">        put.addColumn(fam1, qual1, value);</span>
+<span class="source-line-no">216</span><span id="line-216">        in[0] = put;</span>
+<span class="source-line-no">217</span><span id="line-217">        try {</span>
+<span class="source-line-no">218</span><span id="line-218">          OperationStatus[] ret = region.batchMutate(in);</span>
+<span class="source-line-no">219</span><span id="line-219">          assertEquals(1, ret.length);</span>
+<span class="source-line-no">220</span><span id="line-220">          assertEquals(OperationStatusCode.SUCCESS, ret[0].getOperationStatusCode());</span>
+<span class="source-line-no">221</span><span id="line-221">          assertGet(this.region, rowkey, fam1, qual1, value);</span>
+<span class="source-line-no">222</span><span id="line-222">        } catch (IOException e) {</span>
+<span class="source-line-no">223</span><span id="line-223">          fail("Thread id " + threadNumber + " operation " + i + " failed.", e);</span>
+<span class="source-line-no">224</span><span id="line-224">        }</span>
+<span class="source-line-no">225</span><span id="line-225">      }</span>
+<span class="source-line-no">226</span><span id="line-226">    }</span>
+<span class="source-line-no">227</span><span id="line-227">  }</span>
+<span class="source-line-no">228</span><span id="line-228">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.html
index e6116fabbc1..78799caf18f 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestParallelPut.html
@@ -31,13 +31,13 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.HBaseTestingUtil.fam1;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertEquals;</span>
-<span class="source-line-no">022</span><span id="line-22">import static org.junit.Assert.assertTrue;</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 org.apache.hadoop.hbase.Cell;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.CellUtil;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
+<span class="source-line-no">023</span><span id="line-23">import static org.junit.jupiter.api.Assertions.fail;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">import java.io.IOException;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.Cell;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.CellUtil;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HConstants;</span>
 <span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HConstants.OperationStatusCode;</span>
@@ -54,199 +54,191 @@
 <span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
 <span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.util.Bytes;</span>
 <span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.junit.After;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.junit.Before;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.junit.BeforeClass;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.junit.ClassRule;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.junit.Rule;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.junit.Test;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.junit.rules.TestName;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.slf4j.Logger;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">/**</span>
-<span class="source-line-no">056</span><span id="line-56"> * Testing of multiPut in parallel.</span>
-<span class="source-line-no">057</span><span id="line-57"> */</span>
-<span class="source-line-no">058</span><span id="line-58">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">059</span><span id="line-59">public class TestParallelPut {</span>
-<span class="source-line-no">060</span><span id="line-60"></span>
-<span class="source-line-no">061</span><span id="line-61">  @ClassRule</span>
-<span class="source-line-no">062</span><span id="line-62">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">063</span><span id="line-63">    HBaseClassTestRule.forClass(TestParallelPut.class);</span>
-<span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">  private static final Logger LOG = LoggerFactory.getLogger(TestParallelPut.class);</span>
-<span class="source-line-no">066</span><span id="line-66">  @Rule</span>
-<span class="source-line-no">067</span><span id="line-67">  public TestName name = new TestName();</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">  private HRegion region = null;</span>
-<span class="source-line-no">070</span><span id="line-70">  private static HBaseTestingUtil HBTU = new HBaseTestingUtil();</span>
-<span class="source-line-no">071</span><span id="line-71">  private static final int THREADS100 = 100;</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 names</span>
-<span class="source-line-no">074</span><span id="line-74">  static byte[] tableName;</span>
-<span class="source-line-no">075</span><span id="line-75">  static final byte[] qual1 = Bytes.toBytes("qual1");</span>
-<span class="source-line-no">076</span><span id="line-76">  static final byte[] qual2 = Bytes.toBytes("qual2");</span>
-<span class="source-line-no">077</span><span id="line-77">  static final byte[] qual3 = Bytes.toBytes("qual3");</span>
-<span class="source-line-no">078</span><span id="line-78">  static final byte[] value1 = Bytes.toBytes("value1");</span>
-<span class="source-line-no">079</span><span id="line-79">  static final byte[] value2 = Bytes.toBytes("value2");</span>
-<span class="source-line-no">080</span><span id="line-80">  static final byte[] row = Bytes.toBytes("rowA");</span>
-<span class="source-line-no">081</span><span id="line-81">  static final byte[] row2 = Bytes.toBytes("rowB");</span>
+<span class="source-line-no">044</span><span id="line-44">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.slf4j.Logger;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">/**</span>
+<span class="source-line-no">054</span><span id="line-54"> * Testing of multiPut in parallel.</span>
+<span class="source-line-no">055</span><span id="line-55"> */</span>
+<span class="source-line-no">056</span><span id="line-56">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">057</span><span id="line-57">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">058</span><span id="line-58">public class TestParallelPut {</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  private static final Logger LOG = LoggerFactory.getLogger(TestParallelPut.class);</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">  private HRegion region = null;</span>
+<span class="source-line-no">063</span><span id="line-63">  private static HBaseTestingUtil HBTU = new HBaseTestingUtil();</span>
+<span class="source-line-no">064</span><span id="line-64">  private static final int THREADS100 = 100;</span>
+<span class="source-line-no">065</span><span id="line-65">  private String methodName;</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">  // Test names</span>
+<span class="source-line-no">068</span><span id="line-68">  static byte[] tableName;</span>
+<span class="source-line-no">069</span><span id="line-69">  static final byte[] qual1 = Bytes.toBytes("qual1");</span>
+<span class="source-line-no">070</span><span id="line-70">  static final byte[] qual2 = Bytes.toBytes("qual2");</span>
+<span class="source-line-no">071</span><span id="line-71">  static final byte[] qual3 = Bytes.toBytes("qual3");</span>
+<span class="source-line-no">072</span><span id="line-72">  static final byte[] value1 = Bytes.toBytes("value1");</span>
+<span class="source-line-no">073</span><span id="line-73">  static final byte[] value2 = Bytes.toBytes("value2");</span>
+<span class="source-line-no">074</span><span id="line-74">  static final byte[] row = Bytes.toBytes("rowA");</span>
+<span class="source-line-no">075</span><span id="line-75">  static final byte[] row2 = Bytes.toBytes("rowB");</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  @BeforeAll</span>
+<span class="source-line-no">078</span><span id="line-78">  public static void beforeClass() {</span>
+<span class="source-line-no">079</span><span id="line-79">    // Make sure enough handlers.</span>
+<span class="source-line-no">080</span><span id="line-80">    HBTU.getConfiguration().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, THREADS100);</span>
+<span class="source-line-no">081</span><span id="line-81">  }</span>
 <span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  @BeforeClass</span>
-<span class="source-line-no">084</span><span id="line-84">  public static void beforeClass() {</span>
-<span class="source-line-no">085</span><span id="line-85">    // Make sure enough handlers.</span>
-<span class="source-line-no">086</span><span id="line-86">    HBTU.getConfiguration().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, THREADS100);</span>
+<span class="source-line-no">083</span><span id="line-83">  @BeforeEach</span>
+<span class="source-line-no">084</span><span id="line-84">  public void setUp(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">085</span><span id="line-85">    methodName = testInfo.getTestMethod().get().getName();</span>
+<span class="source-line-no">086</span><span id="line-86">    tableName = Bytes.toBytes(methodName);</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">   * @see org.apache.hadoop.hbase.HBaseTestCase#setUp()</span>
-<span class="source-line-no">091</span><span id="line-91">   */</span>
-<span class="source-line-no">092</span><span id="line-92">  @Before</span>
-<span class="source-line-no">093</span><span id="line-93">  public void setUp() throws Exception {</span>
-<span class="source-line-no">094</span><span id="line-94">    tableName = Bytes.toBytes(name.getMethodName());</span>
+<span class="source-line-no">089</span><span id="line-89">  @AfterEach</span>
+<span class="source-line-no">090</span><span id="line-90">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">091</span><span id="line-91">    EnvironmentEdgeManagerTestHelper.reset();</span>
+<span class="source-line-no">092</span><span id="line-92">    if (region != null) {</span>
+<span class="source-line-no">093</span><span id="line-93">      region.close(true);</span>
+<span class="source-line-no">094</span><span id="line-94">    }</span>
 <span class="source-line-no">095</span><span id="line-95">  }</span>
 <span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">  @After</span>
-<span class="source-line-no">098</span><span id="line-98">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">099</span><span id="line-99">    EnvironmentEdgeManagerTestHelper.reset();</span>
-<span class="source-line-no">100</span><span id="line-100">    if (region != null) {</span>
-<span class="source-line-no">101</span><span id="line-101">      region.close(true);</span>
-<span class="source-line-no">102</span><span id="line-102">    }</span>
-<span class="source-line-no">103</span><span id="line-103">  }</span>
-<span class="source-line-no">104</span><span id="line-104"></span>
-<span class="source-line-no">105</span><span id="line-105">  public String getName() {</span>
-<span class="source-line-no">106</span><span id="line-106">    return name.getMethodName();</span>
-<span class="source-line-no">107</span><span id="line-107">  }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">  //////////////////////////////////////////////////////////////////////////////</span>
-<span class="source-line-no">110</span><span id="line-110">  // New tests that don't spin up a mini cluster but rather just test the</span>
-<span class="source-line-no">111</span><span id="line-111">  // individual code pieces in the HRegion.</span>
-<span class="source-line-no">112</span><span id="line-112">  //////////////////////////////////////////////////////////////////////////////</span>
+<span class="source-line-no">097</span><span id="line-97">  public String getMethodName() {</span>
+<span class="source-line-no">098</span><span id="line-98">    return methodName;</span>
+<span class="source-line-no">099</span><span id="line-99">  }</span>
+<span class="source-line-no">100</span><span id="line-100"></span>
+<span class="source-line-no">101</span><span id="line-101">  //////////////////////////////////////////////////////////////////////////////</span>
+<span class="source-line-no">102</span><span id="line-102">  // New tests that don't spin up a mini cluster but rather just test the</span>
+<span class="source-line-no">103</span><span id="line-103">  // individual code pieces in the HRegion.</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">   * Test one put command.</span>
+<span class="source-line-no">108</span><span id="line-108">   */</span>
+<span class="source-line-no">109</span><span id="line-109">  @Test</span>
+<span class="source-line-no">110</span><span id="line-110">  public void testPut() throws IOException {</span>
+<span class="source-line-no">111</span><span id="line-111">    LOG.info("Starting testPut");</span>
+<span class="source-line-no">112</span><span id="line-112">    this.region = initHRegion(tableName, getMethodName(), fam1);</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">   * Test one put command.</span>
-<span class="source-line-no">116</span><span id="line-116">   */</span>
-<span class="source-line-no">117</span><span id="line-117">  @Test</span>
-<span class="source-line-no">118</span><span id="line-118">  public void testPut() throws IOException {</span>
-<span class="source-line-no">119</span><span id="line-119">    LOG.info("Starting testPut");</span>
-<span class="source-line-no">120</span><span id="line-120">    this.region = initHRegion(tableName, getName(), fam1);</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">    long value = 1L;</span>
-<span class="source-line-no">123</span><span id="line-123"></span>
-<span class="source-line-no">124</span><span id="line-124">    Put put = new Put(row);</span>
-<span class="source-line-no">125</span><span id="line-125">    put.addColumn(fam1, qual1, Bytes.toBytes(value));</span>
-<span class="source-line-no">126</span><span id="line-126">    region.put(put);</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128">    assertGet(this.region, row, fam1, qual1, Bytes.toBytes(value));</span>
-<span class="source-line-no">129</span><span id="line-129">  }</span>
+<span class="source-line-no">114</span><span id="line-114">    long value = 1L;</span>
+<span class="source-line-no">115</span><span id="line-115"></span>
+<span class="source-line-no">116</span><span id="line-116">    Put put = new Put(row);</span>
+<span class="source-line-no">117</span><span id="line-117">    put.addColumn(fam1, qual1, Bytes.toBytes(value));</span>
+<span class="source-line-no">118</span><span id="line-118">    region.put(put);</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120">    assertGet(this.region, row, fam1, qual1, Bytes.toBytes(value));</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">   * Test multi-threaded Puts.</span>
+<span class="source-line-no">125</span><span id="line-125">   */</span>
+<span class="source-line-no">126</span><span id="line-126">  @Test</span>
+<span class="source-line-no">127</span><span id="line-127">  public void testParallelPuts() throws IOException {</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">    LOG.info("Starting testParallelPuts");</span>
 <span class="source-line-no">130</span><span id="line-130"></span>
-<span class="source-line-no">131</span><span id="line-131">  /**</span>
-<span class="source-line-no">132</span><span id="line-132">   * Test multi-threaded Puts.</span>
-<span class="source-line-no">133</span><span id="line-133">   */</span>
-<span class="source-line-no">134</span><span id="line-134">  @Test</span>
-<span class="source-line-no">135</span><span id="line-135">  public void testParallelPuts() throws IOException {</span>
+<span class="source-line-no">131</span><span id="line-131">    this.region = initHRegion(tableName, getMethodName(), fam1);</span>
+<span class="source-line-no">132</span><span id="line-132">    int numOps = 1000; // these many operations per thread</span>
+<span class="source-line-no">133</span><span id="line-133"></span>
+<span class="source-line-no">134</span><span id="line-134">    // create 100 threads, each will do its own puts</span>
+<span class="source-line-no">135</span><span id="line-135">    Putter[] all = new Putter[THREADS100];</span>
 <span class="source-line-no">136</span><span id="line-136"></span>
-<span class="source-line-no">137</span><span id="line-137">    LOG.info("Starting testParallelPuts");</span>
-<span class="source-line-no">138</span><span id="line-138"></span>
-<span class="source-line-no">139</span><span id="line-139">    this.region = initHRegion(tableName, getName(), fam1);</span>
-<span class="source-line-no">140</span><span id="line-140">    int numOps = 1000; // these many operations per thread</span>
+<span class="source-line-no">137</span><span id="line-137">    // create all threads</span>
+<span class="source-line-no">138</span><span id="line-138">    for (int i = 0; i &lt; THREADS100; i++) {</span>
+<span class="source-line-no">139</span><span id="line-139">      all[i] = new Putter(region, i, numOps);</span>
+<span class="source-line-no">140</span><span id="line-140">    }</span>
 <span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142">    // create 100 threads, each will do its own puts</span>
-<span class="source-line-no">143</span><span id="line-143">    Putter[] all = new Putter[THREADS100];</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145">    // create all threads</span>
-<span class="source-line-no">146</span><span id="line-146">    for (int i = 0; i &lt; THREADS100; i++) {</span>
-<span class="source-line-no">147</span><span id="line-147">      all[i] = new Putter(region, i, numOps);</span>
-<span class="source-line-no">148</span><span id="line-148">    }</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150">    // run all threads</span>
-<span class="source-line-no">151</span><span id="line-151">    for (int i = 0; i &lt; THREADS100; i++) {</span>
-<span class="source-line-no">152</span><span id="line-152">      all[i].start();</span>
-<span class="source-line-no">153</span><span id="line-153">    }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155">    // wait for all threads to finish</span>
-<span class="source-line-no">156</span><span id="line-156">    for (int i = 0; i &lt; THREADS100; i++) {</span>
-<span class="source-line-no">157</span><span id="line-157">      try {</span>
-<span class="source-line-no">158</span><span id="line-158">        all[i].join();</span>
-<span class="source-line-no">159</span><span id="line-159">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">160</span><span id="line-160">        LOG.warn("testParallelPuts encountered InterruptedException." + " Ignoring....", e);</span>
-<span class="source-line-no">161</span><span id="line-161">      }</span>
-<span class="source-line-no">162</span><span id="line-162">    }</span>
-<span class="source-line-no">163</span><span id="line-163">    LOG</span>
-<span class="source-line-no">164</span><span id="line-164">      .info("testParallelPuts successfully verified " + (numOps * THREADS100) + " put operations.");</span>
-<span class="source-line-no">165</span><span id="line-165">  }</span>
+<span class="source-line-no">142</span><span id="line-142">    // run all threads</span>
+<span class="source-line-no">143</span><span id="line-143">    for (int i = 0; i &lt; THREADS100; i++) {</span>
+<span class="source-line-no">144</span><span id="line-144">      all[i].start();</span>
+<span class="source-line-no">145</span><span id="line-145">    }</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147">    // wait for all threads to finish</span>
+<span class="source-line-no">148</span><span id="line-148">    for (int i = 0; i &lt; THREADS100; i++) {</span>
+<span class="source-line-no">149</span><span id="line-149">      try {</span>
+<span class="source-line-no">150</span><span id="line-150">        all[i].join();</span>
+<span class="source-line-no">151</span><span id="line-151">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">152</span><span id="line-152">        LOG.warn("testParallelPuts encountered InterruptedException." + " Ignoring....", e);</span>
+<span class="source-line-no">153</span><span id="line-153">      }</span>
+<span class="source-line-no">154</span><span id="line-154">    }</span>
+<span class="source-line-no">155</span><span id="line-155">    LOG</span>
+<span class="source-line-no">156</span><span id="line-156">      .info("testParallelPuts successfully verified " + (numOps * THREADS100) + " put operations.");</span>
+<span class="source-line-no">157</span><span id="line-157">  }</span>
+<span class="source-line-no">158</span><span id="line-158"></span>
+<span class="source-line-no">159</span><span id="line-159">  private static void assertGet(final HRegion region, byte[] row, byte[] familiy, byte[] qualifier,</span>
+<span class="source-line-no">160</span><span id="line-160">    byte[] value) throws IOException {</span>
+<span class="source-line-no">161</span><span id="line-161">    // run a get and see if the value matches</span>
+<span class="source-line-no">162</span><span id="line-162">    Get get = new Get(row);</span>
+<span class="source-line-no">163</span><span id="line-163">    get.addColumn(familiy, qualifier);</span>
+<span class="source-line-no">164</span><span id="line-164">    Result result = region.get(get);</span>
+<span class="source-line-no">165</span><span id="line-165">    assertEquals(1, result.size());</span>
 <span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">  private static void assertGet(final HRegion region, byte[] row, byte[] familiy, byte[] qualifier,</span>
-<span class="source-line-no">168</span><span id="line-168">    byte[] value) throws IOException {</span>
-<span class="source-line-no">169</span><span id="line-169">    // run a get and see if the value matches</span>
-<span class="source-line-no">170</span><span id="line-170">    Get get = new Get(row);</span>
-<span class="source-line-no">171</span><span id="line-171">    get.addColumn(familiy, qualifier);</span>
-<span class="source-line-no">172</span><span id="line-172">    Result result = region.get(get);</span>
-<span class="source-line-no">173</span><span id="line-173">    assertEquals(1, result.size());</span>
-<span class="source-line-no">174</span><span id="line-174"></span>
-<span class="source-line-no">175</span><span id="line-175">    Cell kv = result.rawCells()[0];</span>
-<span class="source-line-no">176</span><span id="line-176">    byte[] r = CellUtil.cloneValue(kv);</span>
-<span class="source-line-no">177</span><span id="line-177">    assertTrue(Bytes.compareTo(r, value) == 0);</span>
-<span class="source-line-no">178</span><span id="line-178">  }</span>
-<span class="source-line-no">179</span><span id="line-179"></span>
-<span class="source-line-no">180</span><span id="line-180">  private HRegion initHRegion(byte[] tableName, String callingMethod, byte[]... families)</span>
-<span class="source-line-no">181</span><span id="line-181">    throws IOException {</span>
-<span class="source-line-no">182</span><span id="line-182">    TableDescriptorBuilder builder =</span>
-<span class="source-line-no">183</span><span id="line-183">      TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));</span>
-<span class="source-line-no">184</span><span id="line-184">    for (byte[] family : families) {</span>
-<span class="source-line-no">185</span><span id="line-185">      builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family));</span>
-<span class="source-line-no">186</span><span id="line-186">    }</span>
-<span class="source-line-no">187</span><span id="line-187">    TableDescriptor tableDescriptor = builder.build();</span>
-<span class="source-line-no">188</span><span id="line-188">    RegionInfo info = RegionInfoBuilder.newBuilder(tableDescriptor.getTableName()).build();</span>
-<span class="source-line-no">189</span><span id="line-189">    return HBTU.createLocalHRegion(info, tableDescriptor);</span>
-<span class="source-line-no">190</span><span id="line-190">  }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192">  /**</span>
-<span class="source-line-no">193</span><span id="line-193">   * A thread that makes a few put calls</span>
-<span class="source-line-no">194</span><span id="line-194">   */</span>
-<span class="source-line-no">195</span><span id="line-195">  public static class Putter extends Thread {</span>
-<span class="source-line-no">196</span><span id="line-196"></span>
-<span class="source-line-no">197</span><span id="line-197">    private final HRegion region;</span>
-<span class="source-line-no">198</span><span id="line-198">    private final int threadNumber;</span>
-<span class="source-line-no">199</span><span id="line-199">    private final int numOps;</span>
-<span class="source-line-no">200</span><span id="line-200">    byte[] rowkey = null;</span>
+<span class="source-line-no">167</span><span id="line-167">    Cell kv = result.rawCells()[0];</span>
+<span class="source-line-no">168</span><span id="line-168">    byte[] r = CellUtil.cloneValue(kv);</span>
+<span class="source-line-no">169</span><span id="line-169">    assertTrue(Bytes.compareTo(r, value) == 0);</span>
+<span class="source-line-no">170</span><span id="line-170">  }</span>
+<span class="source-line-no">171</span><span id="line-171"></span>
+<span class="source-line-no">172</span><span id="line-172">  private HRegion initHRegion(byte[] tableName, String callingMethod, byte[]... families)</span>
+<span class="source-line-no">173</span><span id="line-173">    throws IOException {</span>
+<span class="source-line-no">174</span><span id="line-174">    TableDescriptorBuilder builder =</span>
+<span class="source-line-no">175</span><span id="line-175">      TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));</span>
+<span class="source-line-no">176</span><span id="line-176">    for (byte[] family : families) {</span>
+<span class="source-line-no">177</span><span id="line-177">      builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family));</span>
+<span class="source-line-no">178</span><span id="line-178">    }</span>
+<span class="source-line-no">179</span><span id="line-179">    TableDescriptor tableDescriptor = builder.build();</span>
+<span class="source-line-no">180</span><span id="line-180">    RegionInfo info = RegionInfoBuilder.newBuilder(tableDescriptor.getTableName()).build();</span>
+<span class="source-line-no">181</span><span id="line-181">    return HBTU.createLocalHRegion(info, tableDescriptor);</span>
+<span class="source-line-no">182</span><span id="line-182">  }</span>
+<span class="source-line-no">183</span><span id="line-183"></span>
+<span class="source-line-no">184</span><span id="line-184">  /**</span>
+<span class="source-line-no">185</span><span id="line-185">   * A thread that makes a few put calls</span>
+<span class="source-line-no">186</span><span id="line-186">   */</span>
+<span class="source-line-no">187</span><span id="line-187">  public static class Putter extends Thread {</span>
+<span class="source-line-no">188</span><span id="line-188"></span>
+<span class="source-line-no">189</span><span id="line-189">    private final HRegion region;</span>
+<span class="source-line-no">190</span><span id="line-190">    private final int threadNumber;</span>
+<span class="source-line-no">191</span><span id="line-191">    private final int numOps;</span>
+<span class="source-line-no">192</span><span id="line-192">    byte[] rowkey = null;</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194">    public Putter(HRegion region, int threadNumber, int numOps) {</span>
+<span class="source-line-no">195</span><span id="line-195">      this.region = region;</span>
+<span class="source-line-no">196</span><span id="line-196">      this.threadNumber = threadNumber;</span>
+<span class="source-line-no">197</span><span id="line-197">      this.numOps = numOps;</span>
+<span class="source-line-no">198</span><span id="line-198">      this.rowkey = Bytes.toBytes((long) threadNumber); // unique rowid per thread</span>
+<span class="source-line-no">199</span><span id="line-199">      setDaemon(true);</span>
+<span class="source-line-no">200</span><span id="line-200">    }</span>
 <span class="source-line-no">201</span><span id="line-201"></span>
-<span class="source-line-no">202</span><span id="line-202">    public Putter(HRegion region, int threadNumber, int numOps) {</span>
-<span class="source-line-no">203</span><span id="line-203">      this.region = region;</span>
-<span class="source-line-no">204</span><span id="line-204">      this.threadNumber = threadNumber;</span>
-<span class="source-line-no">205</span><span id="line-205">      this.numOps = numOps;</span>
-<span class="source-line-no">206</span><span id="line-206">      this.rowkey = Bytes.toBytes((long) threadNumber); // unique rowid per thread</span>
-<span class="source-line-no">207</span><span id="line-207">      setDaemon(true);</span>
-<span class="source-line-no">208</span><span id="line-208">    }</span>
-<span class="source-line-no">209</span><span id="line-209"></span>
-<span class="source-line-no">210</span><span id="line-210">    @Override</span>
-<span class="source-line-no">211</span><span id="line-211">    public void run() {</span>
-<span class="source-line-no">212</span><span id="line-212">      byte[] value = new byte[100];</span>
-<span class="source-line-no">213</span><span id="line-213">      Put[] in = new Put[1];</span>
-<span class="source-line-no">214</span><span id="line-214"></span>
-<span class="source-line-no">215</span><span id="line-215">      // iterate for the specified number of operations</span>
-<span class="source-line-no">216</span><span id="line-216">      for (int i = 0; i &lt; numOps; i++) {</span>
-<span class="source-line-no">217</span><span id="line-217">        // generate random bytes</span>
-<span class="source-line-no">218</span><span id="line-218">        Bytes.random(value);</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220">        // put the randombytes and verify that we can read it. This is one</span>
-<span class="source-line-no">221</span><span id="line-221">        // way of ensuring that rwcc manipulation in HRegion.put() is fine.</span>
-<span class="source-line-no">222</span><span id="line-222">        Put put = new Put(rowkey);</span>
-<span class="source-line-no">223</span><span id="line-223">        put.addColumn(fam1, qual1, value);</span>
-<span class="source-line-no">224</span><span id="line-224">        in[0] = put;</span>
-<span class="source-line-no">225</span><span id="line-225">        try {</span>
-<span class="source-line-no">226</span><span id="line-226">          OperationStatus[] ret = region.batchMutate(in);</span>
-<span class="source-line-no">227</span><span id="line-227">          assertEquals(1, ret.length);</span>
-<span class="source-line-no">228</span><span id="line-228">          assertEquals(OperationStatusCode.SUCCESS, ret[0].getOperationStatusCode());</span>
-<span class="source-line-no">229</span><span id="line-229">          assertGet(this.region, rowkey, fam1, qual1, value);</span>
-<span class="source-line-no">230</span><span id="line-230">        } catch (IOException e) {</span>
-<span class="source-line-no">231</span><span id="line-231">          assertTrue("Thread id " + threadNumber + " operation " + i + " failed.", false);</span>
-<span class="source-line-no">232</span><span id="line-232">        }</span>
-<span class="source-line-no">233</span><span id="line-233">      }</span>
-<span class="source-line-no">234</span><span id="line-234">    }</span>
-<span class="source-line-no">235</span><span id="line-235">  }</span>
-<span class="source-line-no">236</span><span id="line-236">}</span>
+<span class="source-line-no">202</span><span id="line-202">    @Override</span>
+<span class="source-line-no">203</span><span id="line-203">    public void run() {</span>
+<span class="source-line-no">204</span><span id="line-204">      byte[] value = new byte[100];</span>
+<span class="source-line-no">205</span><span id="line-205">      Put[] in = new Put[1];</span>
+<span class="source-line-no">206</span><span id="line-206"></span>
+<span class="source-line-no">207</span><span id="line-207">      // iterate for the specified number of operations</span>
+<span class="source-line-no">208</span><span id="line-208">      for (int i = 0; i &lt; numOps; i++) {</span>
+<span class="source-line-no">209</span><span id="line-209">        // generate random bytes</span>
+<span class="source-line-no">210</span><span id="line-210">        Bytes.random(value);</span>
+<span class="source-line-no">211</span><span id="line-211"></span>
+<span class="source-line-no">212</span><span id="line-212">        // put the randombytes and verify that we can read it. This is one</span>
+<span class="source-line-no">213</span><span id="line-213">        // way of ensuring that rwcc manipulation in HRegion.put() is fine.</span>
+<span class="source-line-no">214</span><span id="line-214">        Put put = new Put(rowkey);</span>
+<span class="source-line-no">215</span><span id="line-215">        put.addColumn(fam1, qual1, value);</span>
+<span class="source-line-no">216</span><span id="line-216">        in[0] = put;</span>
+<span class="source-line-no">217</span><span id="line-217">        try {</span>
+<span class="source-line-no">218</span><span id="line-218">          OperationStatus[] ret = region.batchMutate(in);</span>
+<span class="source-line-no">219</span><span id="line-219">          assertEquals(1, ret.length);</span>
+<span class="source-line-no">220</span><span id="line-220">          assertEquals(OperationStatusCode.SUCCESS, ret[0].getOperationStatusCode());</span>
+<span class="source-line-no">221</span><span id="line-221">          assertGet(this.region, rowkey, fam1, qual1, value);</span>
+<span class="source-line-no">222</span><span id="line-222">        } catch (IOException e) {</span>
+<span class="source-line-no">223</span><span id="line-223">          fail("Thread id " + threadNumber + " operation " + i + " failed.", e);</span>
+<span class="source-line-no">224</span><span id="line-224">        }</span>
+<span class="source-line-no">225</span><span id="line-225">      }</span>
+<span class="source-line-no">226</span><span id="line-226">    }</span>
+<span class="source-line-no">227</span><span id="line-227">  }</span>
+<span class="source-line-no">228</span><span id="line-228">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html
index ab7eefedd56..4da35550a06 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html
@@ -30,665 +30,660 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertNotNull;</span>
-<span class="source-line-no">022</span><span id="line-22">import static org.junit.Assert.assertNull;</span>
-<span class="source-line-no">023</span><span id="line-23">import static org.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertNotNull;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertNull;</span>
+<span class="source-line-no">023</span><span id="line-23">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
 <span class="source-line-no">024</span><span id="line-24"></span>
 <span class="source-line-no">025</span><span id="line-25">import java.io.IOException;</span>
 <span class="source-line-no">026</span><span id="line-26">import java.util.Arrays;</span>
 <span class="source-line-no">027</span><span id="line-27">import java.util.List;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.conf.Configuration;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.NamespaceDescriptor;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.SingleProcessHBaseCluster;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.Waiter;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Admin;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.Connection;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.ConnectionFactory;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Get;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Result;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.Table;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.regionserver.wal.AbstractTestFSWAL;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.util.JVMClusterUtil;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.util.Pair;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.junit.ClassRule;</span>
-<span class="source-line-no">059</span><span id="line-59">import org.junit.Test;</span>
-<span class="source-line-no">060</span><span id="line-60">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.slf4j.Logger;</span>
-<span class="source-line-no">062</span><span id="line-62">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.NamespaceDescriptor;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.SingleProcessHBaseCluster;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.Waiter;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Admin;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.Connection;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.ConnectionFactory;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Get;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Put;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.Result;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Table;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.regionserver.wal.AbstractTestFSWAL;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.util.JVMClusterUtil;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.util.Pair;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.slf4j.Logger;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">import org.apache.hbase.thirdparty.com.google.common.hash.Hashing;</span>
 <span class="source-line-no">063</span><span id="line-63"></span>
-<span class="source-line-no">064</span><span id="line-64">import org.apache.hbase.thirdparty.com.google.common.hash.Hashing;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">/**</span>
-<span class="source-line-no">067</span><span id="line-67"> * This test verifies the correctness of the Per Column Family flushing strategy</span>
-<span class="source-line-no">068</span><span id="line-68"> */</span>
-<span class="source-line-no">069</span><span id="line-69">@Category({ RegionServerTests.class, LargeTests.class })</span>
-<span class="source-line-no">070</span><span id="line-70">public class TestPerColumnFamilyFlush {</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">  @ClassRule</span>
-<span class="source-line-no">073</span><span id="line-73">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">074</span><span id="line-74">    HBaseClassTestRule.forClass(TestPerColumnFamilyFlush.class);</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  private static final Logger LOG = LoggerFactory.getLogger(TestPerColumnFamilyFlush.class);</span>
-<span class="source-line-no">077</span><span id="line-77"></span>
-<span class="source-line-no">078</span><span id="line-78">  private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">  private static final Path DIR = TEST_UTIL.getDataTestDir("TestHRegion");</span>
+<span class="source-line-no">064</span><span id="line-64">/**</span>
+<span class="source-line-no">065</span><span id="line-65"> * This test verifies the correctness of the Per Column Family flushing strategy</span>
+<span class="source-line-no">066</span><span id="line-66"> */</span>
+<span class="source-line-no">067</span><span id="line-67">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">068</span><span id="line-68">@Tag(LargeTests.TAG)</span>
+<span class="source-line-no">069</span><span id="line-69">public class TestPerColumnFamilyFlush {</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">  private static final Logger LOG = LoggerFactory.getLogger(TestPerColumnFamilyFlush.class);</span>
+<span class="source-line-no">072</span><span id="line-72"></span>
+<span class="source-line-no">073</span><span id="line-73">  private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">  private static final Path DIR = TEST_UTIL.getDataTestDir("TestHRegion");</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  public static final TableName TABLENAME = TableName.valueOf("TestPerColumnFamilyFlush", "t1");</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">  public static final byte[][] FAMILIES = { Bytes.toBytes("f1"), Bytes.toBytes("f2"),</span>
+<span class="source-line-no">080</span><span id="line-80">    Bytes.toBytes("f3"), Bytes.toBytes("f4"), Bytes.toBytes("f5") };</span>
 <span class="source-line-no">081</span><span id="line-81"></span>
-<span class="source-line-no">082</span><span id="line-82">  public static final TableName TABLENAME = TableName.valueOf("TestPerColumnFamilyFlush", "t1");</span>
+<span class="source-line-no">082</span><span id="line-82">  public static final byte[] FAMILY1 = FAMILIES[0];</span>
 <span class="source-line-no">083</span><span id="line-83"></span>
-<span class="source-line-no">084</span><span id="line-84">  public static final byte[][] FAMILIES = { Bytes.toBytes("f1"), Bytes.toBytes("f2"),</span>
-<span class="source-line-no">085</span><span id="line-85">    Bytes.toBytes("f3"), Bytes.toBytes("f4"), Bytes.toBytes("f5") };</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">  public static final byte[] FAMILY1 = FAMILIES[0];</span>
-<span class="source-line-no">088</span><span id="line-88"></span>
-<span class="source-line-no">089</span><span id="line-89">  public static final byte[] FAMILY2 = FAMILIES[1];</span>
-<span class="source-line-no">090</span><span id="line-90"></span>
-<span class="source-line-no">091</span><span id="line-91">  public static final byte[] FAMILY3 = FAMILIES[2];</span>
-<span class="source-line-no">092</span><span id="line-92"></span>
-<span class="source-line-no">093</span><span id="line-93">  private HRegion initHRegion(String callingMethod, Configuration conf) throws IOException {</span>
-<span class="source-line-no">094</span><span id="line-94">    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TABLENAME);</span>
-<span class="source-line-no">095</span><span id="line-95">    for (byte[] family : FAMILIES) {</span>
-<span class="source-line-no">096</span><span id="line-96">      builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family));</span>
-<span class="source-line-no">097</span><span id="line-97">    }</span>
-<span class="source-line-no">098</span><span id="line-98">    RegionInfo info = RegionInfoBuilder.newBuilder(TABLENAME).build();</span>
-<span class="source-line-no">099</span><span id="line-99">    Path path = new Path(DIR, callingMethod);</span>
-<span class="source-line-no">100</span><span id="line-100">    return HBaseTestingUtil.createRegionAndWAL(info, path, conf, builder.build());</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">  // A helper function to create puts.</span>
-<span class="source-line-no">104</span><span id="line-104">  private Put createPut(int familyNum, int putNum) {</span>
-<span class="source-line-no">105</span><span id="line-105">    byte[] qf = Bytes.toBytes("q" + familyNum);</span>
-<span class="source-line-no">106</span><span id="line-106">    byte[] row = Bytes.toBytes("row" + familyNum + "-" + putNum);</span>
-<span class="source-line-no">107</span><span id="line-107">    byte[] val = Bytes.toBytes("val" + familyNum + "-" + putNum);</span>
-<span class="source-line-no">108</span><span id="line-108">    Put p = new Put(row);</span>
-<span class="source-line-no">109</span><span id="line-109">    p.addColumn(FAMILIES[familyNum - 1], qf, val);</span>
-<span class="source-line-no">110</span><span id="line-110">    return p;</span>
-<span class="source-line-no">111</span><span id="line-111">  }</span>
-<span class="source-line-no">112</span><span id="line-112"></span>
-<span class="source-line-no">113</span><span id="line-113">  // A helper function to create puts.</span>
-<span class="source-line-no">114</span><span id="line-114">  private Get createGet(int familyNum, int putNum) {</span>
-<span class="source-line-no">115</span><span id="line-115">    byte[] row = Bytes.toBytes("row" + familyNum + "-" + putNum);</span>
-<span class="source-line-no">116</span><span id="line-116">    return new Get(row);</span>
-<span class="source-line-no">117</span><span id="line-117">  }</span>
-<span class="source-line-no">118</span><span id="line-118"></span>
-<span class="source-line-no">119</span><span id="line-119">  // A helper function to verify edits.</span>
-<span class="source-line-no">120</span><span id="line-120">  void verifyEdit(int familyNum, int putNum, Table table) throws IOException {</span>
-<span class="source-line-no">121</span><span id="line-121">    Result r = table.get(createGet(familyNum, putNum));</span>
-<span class="source-line-no">122</span><span id="line-122">    byte[] family = FAMILIES[familyNum - 1];</span>
-<span class="source-line-no">123</span><span id="line-123">    byte[] qf = Bytes.toBytes("q" + familyNum);</span>
-<span class="source-line-no">124</span><span id="line-124">    byte[] val = Bytes.toBytes("val" + familyNum + "-" + putNum);</span>
-<span class="source-line-no">125</span><span id="line-125">    assertNotNull(("Missing Put#" + putNum + " for CF# " + familyNum), r.getFamilyMap(family));</span>
-<span class="source-line-no">126</span><span id="line-126">    assertNotNull(("Missing Put#" + putNum + " for CF# " + familyNum),</span>
-<span class="source-line-no">127</span><span id="line-127">      r.getFamilyMap(family).get(qf));</span>
-<span class="source-line-no">128</span><span id="line-128">    assertTrue(("Incorrect value for Put#" + putNum + " for CF# " + familyNum),</span>
-<span class="source-line-no">129</span><span id="line-129">      Arrays.equals(r.getFamilyMap(family).get(qf), val));</span>
-<span class="source-line-no">130</span><span id="line-130">  }</span>
-<span class="source-line-no">131</span><span id="line-131"></span>
-<span class="source-line-no">132</span><span id="line-132">  @Test</span>
-<span class="source-line-no">133</span><span id="line-133">  public void testSelectiveFlushWhenEnabled() throws IOException {</span>
-<span class="source-line-no">134</span><span id="line-134">    // Set up the configuration, use new one to not conflict with minicluster in other tests</span>
-<span class="source-line-no">135</span><span id="line-135">    Configuration conf = new HBaseTestingUtil().getConfiguration();</span>
-<span class="source-line-no">136</span><span id="line-136">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 200 * 1024);</span>
-<span class="source-line-no">137</span><span id="line-137">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
-<span class="source-line-no">138</span><span id="line-138">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN, 40 * 1024);</span>
-<span class="source-line-no">139</span><span id="line-139">    // Intialize the region</span>
-<span class="source-line-no">140</span><span id="line-140">    HRegion region = initHRegion("testSelectiveFlushWithDataCompaction", conf);</span>
-<span class="source-line-no">141</span><span id="line-141">    // Add 1200 entries for CF1, 100 for CF2 and 50 for CF3</span>
-<span class="source-line-no">142</span><span id="line-142">    for (int i = 1; i &lt;= 1200; i++) {</span>
-<span class="source-line-no">143</span><span id="line-143">      region.put(createPut(1, i));</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145">      if (i &lt;= 100) {</span>
-<span class="source-line-no">146</span><span id="line-146">        region.put(createPut(2, i));</span>
-<span class="source-line-no">147</span><span id="line-147">        if (i &lt;= 50) {</span>
-<span class="source-line-no">148</span><span id="line-148">          region.put(createPut(3, i));</span>
-<span class="source-line-no">149</span><span id="line-149">        }</span>
-<span class="source-line-no">150</span><span id="line-150">      }</span>
-<span class="source-line-no">151</span><span id="line-151">    }</span>
-<span class="source-line-no">152</span><span id="line-152"></span>
-<span class="source-line-no">153</span><span id="line-153">    long totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">084</span><span id="line-84">  public static final byte[] FAMILY2 = FAMILIES[1];</span>
+<span class="source-line-no">085</span><span id="line-85"></span>
+<span class="source-line-no">086</span><span id="line-86">  public static final byte[] FAMILY3 = FAMILIES[2];</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88">  private HRegion initHRegion(String callingMethod, Configuration conf) throws IOException {</span>
+<span class="source-line-no">089</span><span id="line-89">    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TABLENAME);</span>
+<span class="source-line-no">090</span><span id="line-90">    for (byte[] family : FAMILIES) {</span>
+<span class="source-line-no">091</span><span id="line-91">      builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(family));</span>
+<span class="source-line-no">092</span><span id="line-92">    }</span>
+<span class="source-line-no">093</span><span id="line-93">    RegionInfo info = RegionInfoBuilder.newBuilder(TABLENAME).build();</span>
+<span class="source-line-no">094</span><span id="line-94">    Path path = new Path(DIR, callingMethod);</span>
+<span class="source-line-no">095</span><span id="line-95">    return HBaseTestingUtil.createRegionAndWAL(info, path, conf, builder.build());</span>
+<span class="source-line-no">096</span><span id="line-96">  }</span>
+<span class="source-line-no">097</span><span id="line-97"></span>
+<span class="source-line-no">098</span><span id="line-98">  // A helper function to create puts.</span>
+<span class="source-line-no">099</span><span id="line-99">  private Put createPut(int familyNum, int putNum) {</span>
+<span class="source-line-no">100</span><span id="line-100">    byte[] qf = Bytes.toBytes("q" + familyNum);</span>
+<span class="source-line-no">101</span><span id="line-101">    byte[] row = Bytes.toBytes("row" + familyNum + "-" + putNum);</span>
+<span class="source-line-no">102</span><span id="line-102">    byte[] val = Bytes.toBytes("val" + familyNum + "-" + putNum);</span>
+<span class="source-line-no">103</span><span id="line-103">    Put p = new Put(row);</span>
+<span class="source-line-no">104</span><span id="line-104">    p.addColumn(FAMILIES[familyNum - 1], qf, val);</span>
+<span class="source-line-no">105</span><span id="line-105">    return p;</span>
+<span class="source-line-no">106</span><span id="line-106">  }</span>
+<span class="source-line-no">107</span><span id="line-107"></span>
+<span class="source-line-no">108</span><span id="line-108">  // A helper function to create puts.</span>
+<span class="source-line-no">109</span><span id="line-109">  private Get createGet(int familyNum, int putNum) {</span>
+<span class="source-line-no">110</span><span id="line-110">    byte[] row = Bytes.toBytes("row" + familyNum + "-" + putNum);</span>
+<span class="source-line-no">111</span><span id="line-111">    return new Get(row);</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">  // A helper function to verify edits.</span>
+<span class="source-line-no">115</span><span id="line-115">  void verifyEdit(int familyNum, int putNum, Table table) throws IOException {</span>
+<span class="source-line-no">116</span><span id="line-116">    Result r = table.get(createGet(familyNum, putNum));</span>
+<span class="source-line-no">117</span><span id="line-117">    byte[] family = FAMILIES[familyNum - 1];</span>
+<span class="source-line-no">118</span><span id="line-118">    byte[] qf = Bytes.toBytes("q" + familyNum);</span>
+<span class="source-line-no">119</span><span id="line-119">    byte[] val = Bytes.toBytes("val" + familyNum + "-" + putNum);</span>
+<span class="source-line-no">120</span><span id="line-120">    assertNotNull(r.getFamilyMap(family), "Missing Put#" + putNum + " for CF# " + familyNum);</span>
+<span class="source-line-no">121</span><span id="line-121">    assertNotNull(r.getFamilyMap(family).get(qf),</span>
+<span class="source-line-no">122</span><span id="line-122">      "Missing Put#" + putNum + " for CF# " + familyNum);</span>
+<span class="source-line-no">123</span><span id="line-123">    assertTrue(Arrays.equals(r.getFamilyMap(family).get(qf), val),</span>
+<span class="source-line-no">124</span><span id="line-124">      "Incorrect value for Put#" + putNum + " for CF# " + familyNum);</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">  @Test</span>
+<span class="source-line-no">128</span><span id="line-128">  public void testSelectiveFlushWhenEnabled() throws IOException {</span>
+<span class="source-line-no">129</span><span id="line-129">    // Set up the configuration, use new one to not conflict with minicluster in other tests</span>
+<span class="source-line-no">130</span><span id="line-130">    Configuration conf = new HBaseTestingUtil().getConfiguration();</span>
+<span class="source-line-no">131</span><span id="line-131">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 200 * 1024);</span>
+<span class="source-line-no">132</span><span id="line-132">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
+<span class="source-line-no">133</span><span id="line-133">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN, 40 * 1024);</span>
+<span class="source-line-no">134</span><span id="line-134">    // Intialize the region</span>
+<span class="source-line-no">135</span><span id="line-135">    HRegion region = initHRegion("testSelectiveFlushWithDataCompaction", conf);</span>
+<span class="source-line-no">136</span><span id="line-136">    // Add 1200 entries for CF1, 100 for CF2 and 50 for CF3</span>
+<span class="source-line-no">137</span><span id="line-137">    for (int i = 1; i &lt;= 1200; i++) {</span>
+<span class="source-line-no">138</span><span id="line-138">      region.put(createPut(1, i));</span>
+<span class="source-line-no">139</span><span id="line-139"></span>
+<span class="source-line-no">140</span><span id="line-140">      if (i &lt;= 100) {</span>
+<span class="source-line-no">141</span><span id="line-141">        region.put(createPut(2, i));</span>
+<span class="source-line-no">142</span><span id="line-142">        if (i &lt;= 50) {</span>
+<span class="source-line-no">143</span><span id="line-143">          region.put(createPut(3, i));</span>
+<span class="source-line-no">144</span><span id="line-144">        }</span>
+<span class="source-line-no">145</span><span id="line-145">      }</span>
+<span class="source-line-no">146</span><span id="line-146">    }</span>
+<span class="source-line-no">147</span><span id="line-147"></span>
+<span class="source-line-no">148</span><span id="line-148">    long totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">149</span><span id="line-149"></span>
+<span class="source-line-no">150</span><span id="line-150">    // Find the smallest LSNs for edits wrt to each CF.</span>
+<span class="source-line-no">151</span><span id="line-151">    long smallestSeqCF1 = region.getOldestSeqIdOfStore(FAMILY1);</span>
+<span class="source-line-no">152</span><span id="line-152">    long smallestSeqCF2 = region.getOldestSeqIdOfStore(FAMILY2);</span>
+<span class="source-line-no">153</span><span id="line-153">    long smallestSeqCF3 = region.getOldestSeqIdOfStore(FAMILY3);</span>
 <span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155">    // Find the smallest LSNs for edits wrt to each CF.</span>
-<span class="source-line-no">156</span><span id="line-156">    long smallestSeqCF1 = region.getOldestSeqIdOfStore(FAMILY1);</span>
-<span class="source-line-no">157</span><span id="line-157">    long smallestSeqCF2 = region.getOldestSeqIdOfStore(FAMILY2);</span>
-<span class="source-line-no">158</span><span id="line-158">    long smallestSeqCF3 = region.getOldestSeqIdOfStore(FAMILY3);</span>
+<span class="source-line-no">155</span><span id="line-155">    // Find the sizes of the memstores of each CF.</span>
+<span class="source-line-no">156</span><span id="line-156">    MemStoreSize cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
+<span class="source-line-no">157</span><span id="line-157">    MemStoreSize cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
+<span class="source-line-no">158</span><span id="line-158">    MemStoreSize cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
 <span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160">    // Find the sizes of the memstores of each CF.</span>
-<span class="source-line-no">161</span><span id="line-161">    MemStoreSize cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
-<span class="source-line-no">162</span><span id="line-162">    MemStoreSize cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
-<span class="source-line-no">163</span><span id="line-163">    MemStoreSize cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
-<span class="source-line-no">164</span><span id="line-164"></span>
-<span class="source-line-no">165</span><span id="line-165">    // Get the overall smallest LSN in the region's memstores.</span>
-<span class="source-line-no">166</span><span id="line-166">    long smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL</span>
-<span class="source-line-no">167</span><span id="line-167">      .getEarliestMemStoreSeqNum(getWAL(region), region.getRegionInfo().getEncodedNameAsBytes());</span>
-<span class="source-line-no">168</span><span id="line-168"></span>
-<span class="source-line-no">169</span><span id="line-169">    // The overall smallest LSN in the region's memstores should be the same as</span>
-<span class="source-line-no">170</span><span id="line-170">    // the LSN of the smallest edit in CF1</span>
-<span class="source-line-no">171</span><span id="line-171">    assertEquals(smallestSeqCF1, smallestSeqInRegionCurrentMemstore);</span>
-<span class="source-line-no">172</span><span id="line-172"></span>
-<span class="source-line-no">173</span><span id="line-173">    // Some other sanity checks.</span>
-<span class="source-line-no">174</span><span id="line-174">    assertTrue(smallestSeqCF1 &lt; smallestSeqCF2);</span>
-<span class="source-line-no">175</span><span id="line-175">    assertTrue(smallestSeqCF2 &lt; smallestSeqCF3);</span>
-<span class="source-line-no">176</span><span id="line-176">    assertTrue(cf1MemstoreSize.getDataSize() &gt; 0);</span>
-<span class="source-line-no">177</span><span id="line-177">    assertTrue(cf2MemstoreSize.getDataSize() &gt; 0);</span>
-<span class="source-line-no">178</span><span id="line-178">    assertTrue(cf3MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">160</span><span id="line-160">    // Get the overall smallest LSN in the region's memstores.</span>
+<span class="source-line-no">161</span><span id="line-161">    long smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL</span>
+<span class="source-line-no">162</span><span id="line-162">      .getEarliestMemStoreSeqNum(getWAL(region), region.getRegionInfo().getEncodedNameAsBytes());</span>
+<span class="source-line-no">163</span><span id="line-163"></span>
+<span class="source-line-no">164</span><span id="line-164">    // The overall smallest LSN in the region's memstores should be the same as</span>
+<span class="source-line-no">165</span><span id="line-165">    // the LSN of the smallest edit in CF1</span>
+<span class="source-line-no">166</span><span id="line-166">    assertEquals(smallestSeqCF1, smallestSeqInRegionCurrentMemstore);</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">    // Some other sanity checks.</span>
+<span class="source-line-no">169</span><span id="line-169">    assertTrue(smallestSeqCF1 &lt; smallestSeqCF2);</span>
+<span class="source-line-no">170</span><span id="line-170">    assertTrue(smallestSeqCF2 &lt; smallestSeqCF3);</span>
+<span class="source-line-no">171</span><span id="line-171">    assertTrue(cf1MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">172</span><span id="line-172">    assertTrue(cf2MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">173</span><span id="line-173">    assertTrue(cf3MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">174</span><span id="line-174"></span>
+<span class="source-line-no">175</span><span id="line-175">    // The total memstore size should be the same as the sum of the sizes of</span>
+<span class="source-line-no">176</span><span id="line-176">    // memstores of CF1, CF2 and CF3.</span>
+<span class="source-line-no">177</span><span id="line-177">    assertEquals(totalMemstoreSize, cf1MemstoreSize.getDataSize() + cf2MemstoreSize.getDataSize()</span>
+<span class="source-line-no">178</span><span id="line-178">      + cf3MemstoreSize.getDataSize());</span>
 <span class="source-line-no">179</span><span id="line-179"></span>
-<span class="source-line-no">180</span><span id="line-180">    // The total memstore size should be the same as the sum of the sizes of</span>
-<span class="source-line-no">181</span><span id="line-181">    // memstores of CF1, CF2 and CF3.</span>
-<span class="source-line-no">182</span><span id="line-182">    assertEquals(totalMemstoreSize, cf1MemstoreSize.getDataSize() + cf2MemstoreSize.getDataSize()</span>
-<span class="source-line-no">183</span><span id="line-183">      + cf3MemstoreSize.getDataSize());</span>
-<span class="source-line-no">184</span><span id="line-184"></span>
-<span class="source-line-no">185</span><span id="line-185">    // Flush!</span>
-<span class="source-line-no">186</span><span id="line-186">    region.flush(false);</span>
-<span class="source-line-no">187</span><span id="line-187"></span>
-<span class="source-line-no">188</span><span id="line-188">    // Will use these to check if anything changed.</span>
-<span class="source-line-no">189</span><span id="line-189">    MemStoreSize oldCF2MemstoreSize = cf2MemstoreSize;</span>
-<span class="source-line-no">190</span><span id="line-190">    MemStoreSize oldCF3MemstoreSize = cf3MemstoreSize;</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192">    // Recalculate everything</span>
-<span class="source-line-no">193</span><span id="line-193">    cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
-<span class="source-line-no">194</span><span id="line-194">    cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
-<span class="source-line-no">195</span><span id="line-195">    cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
-<span class="source-line-no">196</span><span id="line-196">    totalMemstoreSize = region.getMemStoreDataSize();</span>
-<span class="source-line-no">197</span><span id="line-197">    smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL.getEarliestMemStoreSeqNum(getWAL(region),</span>
-<span class="source-line-no">198</span><span id="line-198">      region.getRegionInfo().getEncodedNameAsBytes());</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200">    // We should have cleared out only CF1, since we chose the flush thresholds</span>
-<span class="source-line-no">201</span><span id="line-201">    // and number of puts accordingly.</span>
-<span class="source-line-no">202</span><span id="line-202">    assertEquals(0, cf1MemstoreSize.getDataSize());</span>
-<span class="source-line-no">203</span><span id="line-203">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf1MemstoreSize.getHeapSize());</span>
-<span class="source-line-no">204</span><span id="line-204">    // Nothing should have happened to CF2, ...</span>
-<span class="source-line-no">205</span><span id="line-205">    assertEquals(cf2MemstoreSize, oldCF2MemstoreSize);</span>
-<span class="source-line-no">206</span><span id="line-206">    // ... or CF3</span>
-<span class="source-line-no">207</span><span id="line-207">    assertEquals(cf3MemstoreSize, oldCF3MemstoreSize);</span>
-<span class="source-line-no">208</span><span id="line-208">    // Now the smallest LSN in the region should be the same as the smallest</span>
-<span class="source-line-no">209</span><span id="line-209">    // LSN in the memstore of CF2.</span>
-<span class="source-line-no">210</span><span id="line-210">    assertEquals(smallestSeqInRegionCurrentMemstore, smallestSeqCF2);</span>
-<span class="source-line-no">211</span><span id="line-211">    // Of course, this should hold too.</span>
-<span class="source-line-no">212</span><span id="line-212">    assertEquals(totalMemstoreSize, cf2MemstoreSize.getDataSize() + cf3MemstoreSize.getDataSize());</span>
-<span class="source-line-no">213</span><span id="line-213"></span>
-<span class="source-line-no">214</span><span id="line-214">    // Now add more puts (mostly for CF2), so that we only flush CF2 this time.</span>
-<span class="source-line-no">215</span><span id="line-215">    for (int i = 1200; i &lt; 2400; i++) {</span>
-<span class="source-line-no">216</span><span id="line-216">      region.put(createPut(2, i));</span>
-<span class="source-line-no">217</span><span id="line-217"></span>
-<span class="source-line-no">218</span><span id="line-218">      // Add only 100 puts for CF3</span>
-<span class="source-line-no">219</span><span id="line-219">      if (i - 1200 &lt; 100) {</span>
-<span class="source-line-no">220</span><span id="line-220">        region.put(createPut(3, i));</span>
-<span class="source-line-no">221</span><span id="line-221">      }</span>
-<span class="source-line-no">222</span><span id="line-222">    }</span>
-<span class="source-line-no">223</span><span id="line-223"></span>
-<span class="source-line-no">224</span><span id="line-224">    // How much does the CF3 memstore occupy? Will be used later.</span>
-<span class="source-line-no">225</span><span id="line-225">    oldCF3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
-<span class="source-line-no">226</span><span id="line-226"></span>
-<span class="source-line-no">227</span><span id="line-227">    // Flush again</span>
-<span class="source-line-no">228</span><span id="line-228">    region.flush(false);</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230">    // Recalculate everything</span>
-<span class="source-line-no">231</span><span id="line-231">    cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
-<span class="source-line-no">232</span><span id="line-232">    cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
-<span class="source-line-no">233</span><span id="line-233">    cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
-<span class="source-line-no">234</span><span id="line-234">    totalMemstoreSize = region.getMemStoreDataSize();</span>
-<span class="source-line-no">235</span><span id="line-235">    smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL.getEarliestMemStoreSeqNum(getWAL(region),</span>
-<span class="source-line-no">236</span><span id="line-236">      region.getRegionInfo().getEncodedNameAsBytes());</span>
-<span class="source-line-no">237</span><span id="line-237"></span>
-<span class="source-line-no">238</span><span id="line-238">    // CF1 and CF2, both should be absent.</span>
-<span class="source-line-no">239</span><span id="line-239">    assertEquals(0, cf1MemstoreSize.getDataSize());</span>
-<span class="source-line-no">240</span><span id="line-240">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf1MemstoreSize.getHeapSize());</span>
-<span class="source-line-no">241</span><span id="line-241">    assertEquals(0, cf2MemstoreSize.getDataSize());</span>
-<span class="source-line-no">242</span><span id="line-242">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf2MemstoreSize.getHeapSize());</span>
-<span class="source-line-no">243</span><span id="line-243">    // CF3 shouldn't have been touched.</span>
-<span class="source-line-no">244</span><span id="line-244">    assertEquals(cf3MemstoreSize, oldCF3MemstoreSize);</span>
-<span class="source-line-no">245</span><span id="line-245">    assertEquals(totalMemstoreSize, cf3MemstoreSize.getDataSize());</span>
-<span class="source-line-no">246</span><span id="line-246">    assertEquals(smallestSeqInRegionCurrentMemstore, smallestSeqCF3);</span>
-<span class="source-line-no">247</span><span id="line-247"></span>
-<span class="source-line-no">248</span><span id="line-248">    // What happens when we hit the memstore limit, but we are not able to find</span>
-<span class="source-line-no">249</span><span id="line-249">    // any Column Family above the threshold?</span>
-<span class="source-line-no">250</span><span id="line-250">    // In that case, we should flush all the CFs.</span>
-<span class="source-line-no">251</span><span id="line-251"></span>
-<span class="source-line-no">252</span><span id="line-252">    // Clearing the existing memstores.</span>
-<span class="source-line-no">253</span><span id="line-253">    region.flush(true);</span>
-<span class="source-line-no">254</span><span id="line-254"></span>
-<span class="source-line-no">255</span><span id="line-255">    // The memstore limit is 200*1024 and the column family flush threshold is</span>
-<span class="source-line-no">256</span><span id="line-256">    // around 50*1024. We try to just hit the memstore limit with each CF's</span>
-<span class="source-line-no">257</span><span id="line-257">    // memstore being below the CF flush threshold.</span>
-<span class="source-line-no">258</span><span id="line-258">    for (int i = 1; i &lt;= 300; i++) {</span>
-<span class="source-line-no">259</span><span id="line-259">      region.put(createPut(1, i));</span>
-<span class="source-line-no">260</span><span id="line-260">      region.put(createPut(2, i));</span>
-<span class="source-line-no">261</span><span id="line-261">      region.put(createPut(3, i));</span>
-<span class="source-line-no">262</span><span id="line-262">      region.put(createPut(4, i));</span>
-<span class="source-line-no">263</span><span id="line-263">      region.put(createPut(5, i));</span>
-<span class="source-line-no">264</span><span id="line-264">    }</span>
-<span class="source-line-no">265</span><span id="line-265"></span>
-<span class="source-line-no">266</span><span id="line-266">    region.flush(false);</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268">    // Since we won't find any CF above the threshold, and hence no specific</span>
-<span class="source-line-no">269</span><span id="line-269">    // store to flush, we should flush all the memstores.</span>
-<span class="source-line-no">270</span><span id="line-270">    assertEquals(0, region.getMemStoreDataSize());</span>
-<span class="source-line-no">271</span><span id="line-271">    HBaseTestingUtil.closeRegionAndWAL(region);</span>
-<span class="source-line-no">272</span><span id="line-272">  }</span>
-<span class="source-line-no">273</span><span id="line-273"></span>
-<span class="source-line-no">274</span><span id="line-274">  @Test</span>
-<span class="source-line-no">275</span><span id="line-275">  public void testSelectiveFlushWhenNotEnabled() throws IOException {</span>
-<span class="source-line-no">276</span><span id="line-276">    // Set up the configuration, use new one to not conflict with minicluster in other tests</span>
-<span class="source-line-no">277</span><span id="line-277">    Configuration conf = new HBaseTestingUtil().getConfiguration();</span>
-<span class="source-line-no">278</span><span id="line-278">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 200 * 1024);</span>
-<span class="source-line-no">279</span><span id="line-279">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllStoresPolicy.class.getName());</span>
-<span class="source-line-no">280</span><span id="line-280"></span>
-<span class="source-line-no">281</span><span id="line-281">    // Intialize the HRegion</span>
-<span class="source-line-no">282</span><span id="line-282">    HRegion region = initHRegion("testSelectiveFlushWhenNotEnabled", conf);</span>
-<span class="source-line-no">283</span><span id="line-283">    // Add 1200 entries for CF1, 100 for CF2 and 50 for CF3</span>
-<span class="source-line-no">284</span><span id="line-284">    for (int i = 1; i &lt;= 1200; i++) {</span>
-<span class="source-line-no">285</span><span id="line-285">      region.put(createPut(1, i));</span>
-<span class="source-line-no">286</span><span id="line-286">      if (i &lt;= 100) {</span>
-<span class="source-line-no">287</span><span id="line-287">        region.put(createPut(2, i));</span>
-<span class="source-line-no">288</span><span id="line-288">        if (i &lt;= 50) {</span>
-<span class="source-line-no">289</span><span id="line-289">          region.put(createPut(3, i));</span>
-<span class="source-line-no">290</span><span id="line-290">        }</span>
-<span class="source-line-no">291</span><span id="line-291">      }</span>
-<span class="source-line-no">292</span><span id="line-292">    }</span>
-<span class="source-line-no">293</span><span id="line-293"></span>
-<span class="source-line-no">294</span><span id="line-294">    long totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">180</span><span id="line-180">    // Flush!</span>
+<span class="source-line-no">181</span><span id="line-181">    region.flush(false);</span>
+<span class="source-line-no">182</span><span id="line-182"></span>
+<span class="source-line-no">183</span><span id="line-183">    // Will use these to check if anything changed.</span>
+<span class="source-line-no">184</span><span id="line-184">    MemStoreSize oldCF2MemstoreSize = cf2MemstoreSize;</span>
+<span class="source-line-no">185</span><span id="line-185">    MemStoreSize oldCF3MemstoreSize = cf3MemstoreSize;</span>
+<span class="source-line-no">186</span><span id="line-186"></span>
+<span class="source-line-no">187</span><span id="line-187">    // Recalculate everything</span>
+<span class="source-line-no">188</span><span id="line-188">    cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
+<span class="source-line-no">189</span><span id="line-189">    cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
+<span class="source-line-no">190</span><span id="line-190">    cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
+<span class="source-line-no">191</span><span id="line-191">    totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">192</span><span id="line-192">    smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL.getEarliestMemStoreSeqNum(getWAL(region),</span>
+<span class="source-line-no">193</span><span id="line-193">      region.getRegionInfo().getEncodedNameAsBytes());</span>
+<span class="source-line-no">194</span><span id="line-194"></span>
+<span class="source-line-no">195</span><span id="line-195">    // We should have cleared out only CF1, since we chose the flush thresholds</span>
+<span class="source-line-no">196</span><span id="line-196">    // and number of puts accordingly.</span>
+<span class="source-line-no">197</span><span id="line-197">    assertEquals(0, cf1MemstoreSize.getDataSize());</span>
+<span class="source-line-no">198</span><span id="line-198">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf1MemstoreSize.getHeapSize());</span>
+<span class="source-line-no">199</span><span id="line-199">    // Nothing should have happened to CF2, ...</span>
+<span class="source-line-no">200</span><span id="line-200">    assertEquals(cf2MemstoreSize, oldCF2MemstoreSize);</span>
+<span class="source-line-no">201</span><span id="line-201">    // ... or CF3</span>
+<span class="source-line-no">202</span><span id="line-202">    assertEquals(cf3MemstoreSize, oldCF3MemstoreSize);</span>
+<span class="source-line-no">203</span><span id="line-203">    // Now the smallest LSN in the region should be the same as the smallest</span>
+<span class="source-line-no">204</span><span id="line-204">    // LSN in the memstore of CF2.</span>
+<span class="source-line-no">205</span><span id="line-205">    assertEquals(smallestSeqInRegionCurrentMemstore, smallestSeqCF2);</span>
+<span class="source-line-no">206</span><span id="line-206">    // Of course, this should hold too.</span>
+<span class="source-line-no">207</span><span id="line-207">    assertEquals(totalMemstoreSize, cf2MemstoreSize.getDataSize() + cf3MemstoreSize.getDataSize());</span>
+<span class="source-line-no">208</span><span id="line-208"></span>
+<span class="source-line-no">209</span><span id="line-209">    // Now add more puts (mostly for CF2), so that we only flush CF2 this time.</span>
+<span class="source-line-no">210</span><span id="line-210">    for (int i = 1200; i &lt; 2400; i++) {</span>
+<span class="source-line-no">211</span><span id="line-211">      region.put(createPut(2, i));</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">      // Add only 100 puts for CF3</span>
+<span class="source-line-no">214</span><span id="line-214">      if (i - 1200 &lt; 100) {</span>
+<span class="source-line-no">215</span><span id="line-215">        region.put(createPut(3, i));</span>
+<span class="source-line-no">216</span><span id="line-216">      }</span>
+<span class="source-line-no">217</span><span id="line-217">    }</span>
+<span class="source-line-no">218</span><span id="line-218"></span>
+<span class="source-line-no">219</span><span id="line-219">    // How much does the CF3 memstore occupy? Will be used later.</span>
+<span class="source-line-no">220</span><span id="line-220">    oldCF3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222">    // Flush again</span>
+<span class="source-line-no">223</span><span id="line-223">    region.flush(false);</span>
+<span class="source-line-no">224</span><span id="line-224"></span>
+<span class="source-line-no">225</span><span id="line-225">    // Recalculate everything</span>
+<span class="source-line-no">226</span><span id="line-226">    cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
+<span class="source-line-no">227</span><span id="line-227">    cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
+<span class="source-line-no">228</span><span id="line-228">    cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
+<span class="source-line-no">229</span><span id="line-229">    totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">230</span><span id="line-230">    smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL.getEarliestMemStoreSeqNum(getWAL(region),</span>
+<span class="source-line-no">231</span><span id="line-231">      region.getRegionInfo().getEncodedNameAsBytes());</span>
+<span class="source-line-no">232</span><span id="line-232"></span>
+<span class="source-line-no">233</span><span id="line-233">    // CF1 and CF2, both should be absent.</span>
+<span class="source-line-no">234</span><span id="line-234">    assertEquals(0, cf1MemstoreSize.getDataSize());</span>
+<span class="source-line-no">235</span><span id="line-235">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf1MemstoreSize.getHeapSize());</span>
+<span class="source-line-no">236</span><span id="line-236">    assertEquals(0, cf2MemstoreSize.getDataSize());</span>
+<span class="source-line-no">237</span><span id="line-237">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf2MemstoreSize.getHeapSize());</span>
+<span class="source-line-no">238</span><span id="line-238">    // CF3 shouldn't have been touched.</span>
+<span class="source-line-no">239</span><span id="line-239">    assertEquals(cf3MemstoreSize, oldCF3MemstoreSize);</span>
+<span class="source-line-no">240</span><span id="line-240">    assertEquals(totalMemstoreSize, cf3MemstoreSize.getDataSize());</span>
+<span class="source-line-no">241</span><span id="line-241">    assertEquals(smallestSeqInRegionCurrentMemstore, smallestSeqCF3);</span>
+<span class="source-line-no">242</span><span id="line-242"></span>
+<span class="source-line-no">243</span><span id="line-243">    // What happens when we hit the memstore limit, but we are not able to find</span>
+<span class="source-line-no">244</span><span id="line-244">    // any Column Family above the threshold?</span>
+<span class="source-line-no">245</span><span id="line-245">    // In that case, we should flush all the CFs.</span>
+<span class="source-line-no">246</span><span id="line-246"></span>
+<span class="source-line-no">247</span><span id="line-247">    // Clearing the existing memstores.</span>
+<span class="source-line-no">248</span><span id="line-248">    region.flush(true);</span>
+<span class="source-line-no">249</span><span id="line-249"></span>
+<span class="source-line-no">250</span><span id="line-250">    // The memstore limit is 200*1024 and the column family flush threshold is</span>
+<span class="source-line-no">251</span><span id="line-251">    // around 50*1024. We try to just hit the memstore limit with each CF's</span>
+<span class="source-line-no">252</span><span id="line-252">    // memstore being below the CF flush threshold.</span>
+<span class="source-line-no">253</span><span id="line-253">    for (int i = 1; i &lt;= 300; i++) {</span>
+<span class="source-line-no">254</span><span id="line-254">      region.put(createPut(1, i));</span>
+<span class="source-line-no">255</span><span id="line-255">      region.put(createPut(2, i));</span>
+<span class="source-line-no">256</span><span id="line-256">      region.put(createPut(3, i));</span>
+<span class="source-line-no">257</span><span id="line-257">      region.put(createPut(4, i));</span>
+<span class="source-line-no">258</span><span id="line-258">      region.put(createPut(5, i));</span>
+<span class="source-line-no">259</span><span id="line-259">    }</span>
+<span class="source-line-no">260</span><span id="line-260"></span>
+<span class="source-line-no">261</span><span id="line-261">    region.flush(false);</span>
+<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">263</span><span id="line-263">    // Since we won't find any CF above the threshold, and hence no specific</span>
+<span class="source-line-no">264</span><span id="line-264">    // store to flush, we should flush all the memstores.</span>
+<span class="source-line-no">265</span><span id="line-265">    assertEquals(0, region.getMemStoreDataSize());</span>
+<span class="source-line-no">266</span><span id="line-266">    HBaseTestingUtil.closeRegionAndWAL(region);</span>
+<span class="source-line-no">267</span><span id="line-267">  }</span>
+<span class="source-line-no">268</span><span id="line-268"></span>
+<span class="source-line-no">269</span><span id="line-269">  @Test</span>
+<span class="source-line-no">270</span><span id="line-270">  public void testSelectiveFlushWhenNotEnabled() throws IOException {</span>
+<span class="source-line-no">271</span><span id="line-271">    // Set up the configuration, use new one to not conflict with minicluster in other tests</span>
+<span class="source-line-no">272</span><span id="line-272">    Configuration conf = new HBaseTestingUtil().getConfiguration();</span>
+<span class="source-line-no">273</span><span id="line-273">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 200 * 1024);</span>
+<span class="source-line-no">274</span><span id="line-274">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllStoresPolicy.class.getName());</span>
+<span class="source-line-no">275</span><span id="line-275"></span>
+<span class="source-line-no">276</span><span id="line-276">    // Intialize the HRegion</span>
+<span class="source-line-no">277</span><span id="line-277">    HRegion region = initHRegion("testSelectiveFlushWhenNotEnabled", conf);</span>
+<span class="source-line-no">278</span><span id="line-278">    // Add 1200 entries for CF1, 100 for CF2 and 50 for CF3</span>
+<span class="source-line-no">279</span><span id="line-279">    for (int i = 1; i &lt;= 1200; i++) {</span>
+<span class="source-line-no">280</span><span id="line-280">      region.put(createPut(1, i));</span>
+<span class="source-line-no">281</span><span id="line-281">      if (i &lt;= 100) {</span>
+<span class="source-line-no">282</span><span id="line-282">        region.put(createPut(2, i));</span>
+<span class="source-line-no">283</span><span id="line-283">        if (i &lt;= 50) {</span>
+<span class="source-line-no">284</span><span id="line-284">          region.put(createPut(3, i));</span>
+<span class="source-line-no">285</span><span id="line-285">        }</span>
+<span class="source-line-no">286</span><span id="line-286">      }</span>
+<span class="source-line-no">287</span><span id="line-287">    }</span>
+<span class="source-line-no">288</span><span id="line-288"></span>
+<span class="source-line-no">289</span><span id="line-289">    long totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">290</span><span id="line-290"></span>
+<span class="source-line-no">291</span><span id="line-291">    // Find the sizes of the memstores of each CF.</span>
+<span class="source-line-no">292</span><span id="line-292">    MemStoreSize cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
+<span class="source-line-no">293</span><span id="line-293">    MemStoreSize cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
+<span class="source-line-no">294</span><span id="line-294">    MemStoreSize cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
 <span class="source-line-no">295</span><span id="line-295"></span>
-<span class="source-line-no">296</span><span id="line-296">    // Find the sizes of the memstores of each CF.</span>
-<span class="source-line-no">297</span><span id="line-297">    MemStoreSize cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
-<span class="source-line-no">298</span><span id="line-298">    MemStoreSize cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
-<span class="source-line-no">299</span><span id="line-299">    MemStoreSize cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
+<span class="source-line-no">296</span><span id="line-296">    // Some other sanity checks.</span>
+<span class="source-line-no">297</span><span id="line-297">    assertTrue(cf1MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">298</span><span id="line-298">    assertTrue(cf2MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">299</span><span id="line-299">    assertTrue(cf3MemstoreSize.getDataSize() &gt; 0);</span>
 <span class="source-line-no">300</span><span id="line-300"></span>
-<span class="source-line-no">301</span><span id="line-301">    // Some other sanity checks.</span>
-<span class="source-line-no">302</span><span id="line-302">    assertTrue(cf1MemstoreSize.getDataSize() &gt; 0);</span>
-<span class="source-line-no">303</span><span id="line-303">    assertTrue(cf2MemstoreSize.getDataSize() &gt; 0);</span>
-<span class="source-line-no">304</span><span id="line-304">    assertTrue(cf3MemstoreSize.getDataSize() &gt; 0);</span>
+<span class="source-line-no">301</span><span id="line-301">    // The total memstore size should be the same as the sum of the sizes of</span>
+<span class="source-line-no">302</span><span id="line-302">    // memstores of CF1, CF2 and CF3.</span>
+<span class="source-line-no">303</span><span id="line-303">    assertEquals(totalMemstoreSize, cf1MemstoreSize.getDataSize() + cf2MemstoreSize.getDataSize()</span>
+<span class="source-line-no">304</span><span id="line-304">      + cf3MemstoreSize.getDataSize());</span>
 <span class="source-line-no">305</span><span id="line-305"></span>
-<span class="source-line-no">306</span><span id="line-306">    // The total memstore size should be the same as the sum of the sizes of</span>
-<span class="source-line-no">307</span><span id="line-307">    // memstores of CF1, CF2 and CF3.</span>
-<span class="source-line-no">308</span><span id="line-308">    assertEquals(totalMemstoreSize, cf1MemstoreSize.getDataSize() + cf2MemstoreSize.getDataSize()</span>
-<span class="source-line-no">309</span><span id="line-309">      + cf3MemstoreSize.getDataSize());</span>
-<span class="source-line-no">310</span><span id="line-310"></span>
-<span class="source-line-no">311</span><span id="line-311">    // Flush!</span>
-<span class="source-line-no">312</span><span id="line-312">    region.flush(false);</span>
-<span class="source-line-no">313</span><span id="line-313"></span>
-<span class="source-line-no">314</span><span id="line-314">    cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
-<span class="source-line-no">315</span><span id="line-315">    cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
-<span class="source-line-no">316</span><span id="line-316">    cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
-<span class="source-line-no">317</span><span id="line-317">    totalMemstoreSize = region.getMemStoreDataSize();</span>
-<span class="source-line-no">318</span><span id="line-318">    long smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL</span>
-<span class="source-line-no">319</span><span id="line-319">      .getEarliestMemStoreSeqNum(region.getWAL(), region.getRegionInfo().getEncodedNameAsBytes());</span>
-<span class="source-line-no">320</span><span id="line-320"></span>
-<span class="source-line-no">321</span><span id="line-321">    // Everything should have been cleared</span>
-<span class="source-line-no">322</span><span id="line-322">    assertEquals(0, cf1MemstoreSize.getDataSize());</span>
-<span class="source-line-no">323</span><span id="line-323">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf1MemstoreSize.getHeapSize());</span>
-<span class="source-line-no">324</span><span id="line-324">    assertEquals(0, cf2MemstoreSize.getDataSize());</span>
-<span class="source-line-no">325</span><span id="line-325">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf2MemstoreSize.getHeapSize());</span>
-<span class="source-line-no">326</span><span id="line-326">    assertEquals(0, cf3MemstoreSize.getDataSize());</span>
-<span class="source-line-no">327</span><span id="line-327">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf3MemstoreSize.getHeapSize());</span>
-<span class="source-line-no">328</span><span id="line-328">    assertEquals(0, totalMemstoreSize);</span>
-<span class="source-line-no">329</span><span id="line-329">    assertEquals(HConstants.NO_SEQNUM, smallestSeqInRegionCurrentMemstore);</span>
-<span class="source-line-no">330</span><span id="line-330">    HBaseTestingUtil.closeRegionAndWAL(region);</span>
-<span class="source-line-no">331</span><span id="line-331">  }</span>
-<span class="source-line-no">332</span><span id="line-332"></span>
-<span class="source-line-no">333</span><span id="line-333">  // Find the (first) region which has the specified name.</span>
-<span class="source-line-no">334</span><span id="line-334">  private static Pair&lt;HRegion, HRegionServer&gt; getRegionWithName(TableName tableName) {</span>
-<span class="source-line-no">335</span><span id="line-335">    SingleProcessHBaseCluster cluster = TEST_UTIL.getMiniHBaseCluster();</span>
-<span class="source-line-no">336</span><span id="line-336">    List&lt;JVMClusterUtil.RegionServerThread&gt; rsts = cluster.getRegionServerThreads();</span>
-<span class="source-line-no">337</span><span id="line-337">    for (int i = 0; i &lt; cluster.getRegionServerThreads().size(); i++) {</span>
-<span class="source-line-no">338</span><span id="line-338">      HRegionServer hrs = rsts.get(i).getRegionServer();</span>
-<span class="source-line-no">339</span><span id="line-339">      for (HRegion region : hrs.getRegions(tableName)) {</span>
-<span class="source-line-no">340</span><span id="line-340">        return Pair.newPair(region, hrs);</span>
-<span class="source-line-no">341</span><span id="line-341">      }</span>
-<span class="source-line-no">342</span><span id="line-342">    }</span>
-<span class="source-line-no">343</span><span id="line-343">    return null;</span>
-<span class="source-line-no">344</span><span id="line-344">  }</span>
-<span class="source-line-no">345</span><span id="line-345"></span>
-<span class="source-line-no">346</span><span id="line-346">  private void doTestLogReplay() throws Exception {</span>
-<span class="source-line-no">347</span><span id="line-347">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">348</span><span id="line-348">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 10000);</span>
-<span class="source-line-no">349</span><span id="line-349">    // Carefully chosen limits so that the memstore just flushes when we're done</span>
-<span class="source-line-no">350</span><span id="line-350">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
-<span class="source-line-no">351</span><span id="line-351">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN, 2500);</span>
-<span class="source-line-no">352</span><span id="line-352">    final int numRegionServers = 4;</span>
-<span class="source-line-no">353</span><span id="line-353">    try {</span>
-<span class="source-line-no">354</span><span id="line-354">      TEST_UTIL.startMiniCluster(numRegionServers);</span>
-<span class="source-line-no">355</span><span id="line-355">      TEST_UTIL.getAdmin()</span>
-<span class="source-line-no">356</span><span id="line-356">        .createNamespace(NamespaceDescriptor.create(TABLENAME.getNamespaceAsString()).build());</span>
-<span class="source-line-no">357</span><span id="line-357">      Table table = TEST_UTIL.createTable(TABLENAME, FAMILIES);</span>
-<span class="source-line-no">358</span><span id="line-358"></span>
-<span class="source-line-no">359</span><span id="line-359">      // Add 100 edits for CF1, 20 for CF2, 20 for CF3.</span>
-<span class="source-line-no">360</span><span id="line-360">      // These will all be interleaved in the log.</span>
-<span class="source-line-no">361</span><span id="line-361">      for (int i = 1; i &lt;= 80; i++) {</span>
-<span class="source-line-no">362</span><span id="line-362">        table.put(createPut(1, i));</span>
-<span class="source-line-no">363</span><span id="line-363">        if (i &lt;= 10) {</span>
-<span class="source-line-no">364</span><span id="line-364">          table.put(createPut(2, i));</span>
-<span class="source-line-no">365</span><span id="line-365">          table.put(createPut(3, i));</span>
-<span class="source-line-no">366</span><span id="line-366">        }</span>
-<span class="source-line-no">367</span><span id="line-367">      }</span>
-<span class="source-line-no">368</span><span id="line-368">      Thread.sleep(1000);</span>
-<span class="source-line-no">369</span><span id="line-369"></span>
-<span class="source-line-no">370</span><span id="line-370">      Pair&lt;HRegion, HRegionServer&gt; desiredRegionAndServer = getRegionWithName(TABLENAME);</span>
-<span class="source-line-no">371</span><span id="line-371">      HRegion desiredRegion = desiredRegionAndServer.getFirst();</span>
-<span class="source-line-no">372</span><span id="line-372">      assertTrue("Could not find a region which hosts the new region.", desiredRegion != null);</span>
-<span class="source-line-no">373</span><span id="line-373"></span>
-<span class="source-line-no">374</span><span id="line-374">      // Flush the region selectively.</span>
-<span class="source-line-no">375</span><span id="line-375">      desiredRegion.flush(false);</span>
-<span class="source-line-no">376</span><span id="line-376"></span>
-<span class="source-line-no">377</span><span id="line-377">      long totalMemstoreSize;</span>
-<span class="source-line-no">378</span><span id="line-378">      long cf1MemstoreSize, cf2MemstoreSize, cf3MemstoreSize;</span>
-<span class="source-line-no">379</span><span id="line-379">      totalMemstoreSize = desiredRegion.getMemStoreDataSize();</span>
+<span class="source-line-no">306</span><span id="line-306">    // Flush!</span>
+<span class="source-line-no">307</span><span id="line-307">    region.flush(false);</span>
+<span class="source-line-no">308</span><span id="line-308"></span>
+<span class="source-line-no">309</span><span id="line-309">    cf1MemstoreSize = region.getStore(FAMILY1).getMemStoreSize();</span>
+<span class="source-line-no">310</span><span id="line-310">    cf2MemstoreSize = region.getStore(FAMILY2).getMemStoreSize();</span>
+<span class="source-line-no">311</span><span id="line-311">    cf3MemstoreSize = region.getStore(FAMILY3).getMemStoreSize();</span>
+<span class="source-line-no">312</span><span id="line-312">    totalMemstoreSize = region.getMemStoreDataSize();</span>
+<span class="source-line-no">313</span><span id="line-313">    long smallestSeqInRegionCurrentMemstore = AbstractTestFSWAL</span>
+<span class="source-line-no">314</span><span id="line-314">      .getEarliestMemStoreSeqNum(region.getWAL(), region.getRegionInfo().getEncodedNameAsBytes());</span>
+<span class="source-line-no">315</span><span id="line-315"></span>
+<span class="source-line-no">316</span><span id="line-316">    // Everything should have been cleared</span>
+<span class="source-line-no">317</span><span id="line-317">    assertEquals(0, cf1MemstoreSize.getDataSize());</span>
+<span class="source-line-no">318</span><span id="line-318">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf1MemstoreSize.getHeapSize());</span>
+<span class="source-line-no">319</span><span id="line-319">    assertEquals(0, cf2MemstoreSize.getDataSize());</span>
+<span class="source-line-no">320</span><span id="line-320">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf2MemstoreSize.getHeapSize());</span>
+<span class="source-line-no">321</span><span id="line-321">    assertEquals(0, cf3MemstoreSize.getDataSize());</span>
+<span class="source-line-no">322</span><span id="line-322">    assertEquals(MutableSegment.DEEP_OVERHEAD, cf3MemstoreSize.getHeapSize());</span>
+<span class="source-line-no">323</span><span id="line-323">    assertEquals(0, totalMemstoreSize);</span>
+<span class="source-line-no">324</span><span id="line-324">    assertEquals(HConstants.NO_SEQNUM, smallestSeqInRegionCurrentMemstore);</span>
+<span class="source-line-no">325</span><span id="line-325">    HBaseTestingUtil.closeRegionAndWAL(region);</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">  // Find the (first) region which has the specified name.</span>
+<span class="source-line-no">329</span><span id="line-329">  private static Pair&lt;HRegion, HRegionServer&gt; getRegionWithName(TableName tableName) {</span>
+<span class="source-line-no">330</span><span id="line-330">    SingleProcessHBaseCluster cluster = TEST_UTIL.getMiniHBaseCluster();</span>
+<span class="source-line-no">331</span><span id="line-331">    List&lt;JVMClusterUtil.RegionServerThread&gt; rsts = cluster.getRegionServerThreads();</span>
+<span class="source-line-no">332</span><span id="line-332">    for (int i = 0; i &lt; cluster.getRegionServerThreads().size(); i++) {</span>
+<span class="source-line-no">333</span><span id="line-333">      HRegionServer hrs = rsts.get(i).getRegionServer();</span>
+<span class="source-line-no">334</span><span id="line-334">      for (HRegion region : hrs.getRegions(tableName)) {</span>
+<span class="source-line-no">335</span><span id="line-335">        return Pair.newPair(region, hrs);</span>
+<span class="source-line-no">336</span><span id="line-336">      }</span>
+<span class="source-line-no">337</span><span id="line-337">    }</span>
+<span class="source-line-no">338</span><span id="line-338">    return null;</span>
+<span class="source-line-no">339</span><span id="line-339">  }</span>
+<span class="source-line-no">340</span><span id="line-340"></span>
+<span class="source-line-no">341</span><span id="line-341">  private void doTestLogReplay() throws Exception {</span>
+<span class="source-line-no">342</span><span id="line-342">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">343</span><span id="line-343">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 10000);</span>
+<span class="source-line-no">344</span><span id="line-344">    // Carefully chosen limits so that the memstore just flushes when we're done</span>
+<span class="source-line-no">345</span><span id="line-345">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
+<span class="source-line-no">346</span><span id="line-346">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN, 2500);</span>
+<span class="source-line-no">347</span><span id="line-347">    final int numRegionServers = 4;</span>
+<span class="source-line-no">348</span><span id="line-348">    try {</span>
+<span class="source-line-no">349</span><span id="line-349">      TEST_UTIL.startMiniCluster(numRegionServers);</span>
+<span class="source-line-no">350</span><span id="line-350">      TEST_UTIL.getAdmin()</span>
+<span class="source-line-no">351</span><span id="line-351">        .createNamespace(NamespaceDescriptor.create(TABLENAME.getNamespaceAsString()).build());</span>
+<span class="source-line-no">352</span><span id="line-352">      Table table = TEST_UTIL.createTable(TABLENAME, FAMILIES);</span>
+<span class="source-line-no">353</span><span id="line-353"></span>
+<span class="source-line-no">354</span><span id="line-354">      // Add 100 edits for CF1, 20 for CF2, 20 for CF3.</span>
+<span class="source-line-no">355</span><span id="line-355">      // These will all be interleaved in the log.</span>
+<span class="source-line-no">356</span><span id="line-356">      for (int i = 1; i &lt;= 80; i++) {</span>
+<span class="source-line-no">357</span><span id="line-357">        table.put(createPut(1, i));</span>
+<span class="source-line-no">358</span><span id="line-358">        if (i &lt;= 10) {</span>
+<span class="source-line-no">359</span><span id="line-359">          table.put(createPut(2, i));</span>
+<span class="source-line-no">360</span><span id="line-360">          table.put(createPut(3, i));</span>
+<span class="source-line-no">361</span><span id="line-361">        }</span>
+<span class="source-line-no">362</span><span id="line-362">      }</span>
+<span class="source-line-no">363</span><span id="line-363">      Thread.sleep(1000);</span>
+<span class="source-line-no">364</span><span id="line-364"></span>
+<span class="source-line-no">365</span><span id="line-365">      Pair&lt;HRegion, HRegionServer&gt; desiredRegionAndServer = getRegionWithName(TABLENAME);</span>
+<span class="source-line-no">366</span><span id="line-366">      HRegion desiredRegion = desiredRegionAndServer.getFirst();</span>
+<span class="source-line-no">367</span><span id="line-367">      assertNotNull(desiredRegion, "Could not find a region which hosts the new region.");</span>
+<span class="source-line-no">368</span><span id="line-368"></span>
+<span class="source-line-no">369</span><span id="line-369">      // Flush the region selectively.</span>
+<span class="source-line-no">370</span><span id="line-370">      desiredRegion.flush(false);</span>
+<span class="source-line-no">371</span><span id="line-371"></span>
+<span class="source-line-no">372</span><span id="line-372">      long totalMemstoreSize;</span>
+<span class="source-line-no">373</span><span id="line-373">      long cf1MemstoreSize, cf2MemstoreSize, cf3MemstoreSize;</span>
+<span class="source-line-no">374</span><span id="line-374">      totalMemstoreSize = desiredRegion.getMemStoreDataSize();</span>
+<span class="source-line-no">375</span><span id="line-375"></span>
+<span class="source-line-no">376</span><span id="line-376">      // Find the sizes of the memstores of each CF.</span>
+<span class="source-line-no">377</span><span id="line-377">      cf1MemstoreSize = desiredRegion.getStore(FAMILY1).getMemStoreSize().getDataSize();</span>
+<span class="source-line-no">378</span><span id="line-378">      cf2MemstoreSize = desiredRegion.getStore(FAMILY2).getMemStoreSize().getDataSize();</span>
+<span class="source-line-no">379</span><span id="line-379">      cf3MemstoreSize = desiredRegion.getStore(FAMILY3).getMemStoreSize().getDataSize();</span>
 <span class="source-line-no">380</span><span id="line-380"></span>
-<span class="source-line-no">381</span><span id="line-381">      // Find the sizes of the memstores of each CF.</span>
-<span class="source-line-no">382</span><span id="line-382">      cf1MemstoreSize = desiredRegion.getStore(FAMILY1).getMemStoreSize().getDataSize();</span>
-<span class="source-line-no">383</span><span id="line-383">      cf2MemstoreSize = desiredRegion.getStore(FAMILY2).getMemStoreSize().getDataSize();</span>
-<span class="source-line-no">384</span><span id="line-384">      cf3MemstoreSize = desiredRegion.getStore(FAMILY3).getMemStoreSize().getDataSize();</span>
-<span class="source-line-no">385</span><span id="line-385"></span>
-<span class="source-line-no">386</span><span id="line-386">      // CF1 Should have been flushed</span>
-<span class="source-line-no">387</span><span id="line-387">      assertEquals(0, cf1MemstoreSize);</span>
-<span class="source-line-no">388</span><span id="line-388">      // CF2 and CF3 shouldn't have been flushed.</span>
-<span class="source-line-no">389</span><span id="line-389">      // TODO: This test doesn't allow for this case:</span>
-<span class="source-line-no">390</span><span id="line-390">      // " Since none of the CFs were above the size, flushing all."</span>
-<span class="source-line-no">391</span><span id="line-391">      // i.e. a flush happens before we get to here and its a flush-all.</span>
-<span class="source-line-no">392</span><span id="line-392">      assertTrue(cf2MemstoreSize &gt;= 0);</span>
-<span class="source-line-no">393</span><span id="line-393">      assertTrue(cf3MemstoreSize &gt;= 0);</span>
-<span class="source-line-no">394</span><span id="line-394">      assertEquals(totalMemstoreSize, cf2MemstoreSize + cf3MemstoreSize);</span>
-<span class="source-line-no">395</span><span id="line-395"></span>
-<span class="source-line-no">396</span><span id="line-396">      // Wait for the RS report to go across to the master, so that the master</span>
-<span class="source-line-no">397</span><span id="line-397">      // is aware of which sequence ids have been flushed, before we kill the RS.</span>
-<span class="source-line-no">398</span><span id="line-398">      // If in production, the RS dies before the report goes across, we will</span>
-<span class="source-line-no">399</span><span id="line-399">      // safely replay all the edits.</span>
-<span class="source-line-no">400</span><span id="line-400">      Thread.sleep(2000);</span>
-<span class="source-line-no">401</span><span id="line-401"></span>
-<span class="source-line-no">402</span><span id="line-402">      // Abort the region server where we have the region hosted.</span>
-<span class="source-line-no">403</span><span id="line-403">      HRegionServer rs = desiredRegionAndServer.getSecond();</span>
-<span class="source-line-no">404</span><span id="line-404">      rs.abort("testing");</span>
-<span class="source-line-no">405</span><span id="line-405"></span>
-<span class="source-line-no">406</span><span id="line-406">      // The aborted region server's regions will be eventually assigned to some</span>
-<span class="source-line-no">407</span><span id="line-407">      // other region server, and the get RPC call (inside verifyEdit()) will</span>
-<span class="source-line-no">408</span><span id="line-408">      // retry for some time till the regions come back up.</span>
-<span class="source-line-no">409</span><span id="line-409"></span>
-<span class="source-line-no">410</span><span id="line-410">      // Verify that all the edits are safe.</span>
-<span class="source-line-no">411</span><span id="line-411">      for (int i = 1; i &lt;= 80; i++) {</span>
-<span class="source-line-no">412</span><span id="line-412">        verifyEdit(1, i, table);</span>
-<span class="source-line-no">413</span><span id="line-413">        if (i &lt;= 10) {</span>
-<span class="source-line-no">414</span><span id="line-414">          verifyEdit(2, i, table);</span>
-<span class="source-line-no">415</span><span id="line-415">          verifyEdit(3, i, table);</span>
-<span class="source-line-no">416</span><span id="line-416">        }</span>
-<span class="source-line-no">417</span><span id="line-417">      }</span>
-<span class="source-line-no">418</span><span id="line-418">    } finally {</span>
-<span class="source-line-no">419</span><span id="line-419">      TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">420</span><span id="line-420">    }</span>
-<span class="source-line-no">421</span><span id="line-421">  }</span>
-<span class="source-line-no">422</span><span id="line-422"></span>
-<span class="source-line-no">423</span><span id="line-423">  // Test Log Replay with Distributed log split on.</span>
-<span class="source-line-no">424</span><span id="line-424">  @Test</span>
-<span class="source-line-no">425</span><span id="line-425">  public void testLogReplayWithDistributedLogSplit() throws Exception {</span>
-<span class="source-line-no">426</span><span id="line-426">    doTestLogReplay();</span>
-<span class="source-line-no">427</span><span id="line-427">  }</span>
-<span class="source-line-no">428</span><span id="line-428"></span>
-<span class="source-line-no">429</span><span id="line-429">  private WAL getWAL(Region region) {</span>
-<span class="source-line-no">430</span><span id="line-430">    return ((HRegion) region).getWAL();</span>
-<span class="source-line-no">431</span><span id="line-431">  }</span>
-<span class="source-line-no">432</span><span id="line-432"></span>
-<span class="source-line-no">433</span><span id="line-433">  private int getNumRolledLogFiles(Region region) {</span>
-<span class="source-line-no">434</span><span id="line-434">    return AbstractFSWALProvider.getNumRolledLogFiles(getWAL(region));</span>
-<span class="source-line-no">435</span><span id="line-435">  }</span>
-<span class="source-line-no">436</span><span id="line-436"></span>
-<span class="source-line-no">437</span><span id="line-437">  /**</span>
-<span class="source-line-no">438</span><span id="line-438">   * When a log roll is about to happen, we do a flush of the regions who will be affected by the</span>
-<span class="source-line-no">439</span><span id="line-439">   * log roll. These flushes cannot be a selective flushes, otherwise we cannot roll the logs. This</span>
-<span class="source-line-no">440</span><span id="line-440">   * test ensures that we do a full-flush in that scenario.</span>
-<span class="source-line-no">441</span><span id="line-441">   */</span>
-<span class="source-line-no">442</span><span id="line-442">  @Test</span>
-<span class="source-line-no">443</span><span id="line-443">  public void testFlushingWhenLogRolling() throws Exception {</span>
-<span class="source-line-no">444</span><span id="line-444">    TableName tableName = TableName.valueOf("testFlushingWhenLogRolling");</span>
-<span class="source-line-no">445</span><span id="line-445">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">446</span><span id="line-446">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 128 * 1024 * 1024);</span>
-<span class="source-line-no">447</span><span id="line-447">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
-<span class="source-line-no">448</span><span id="line-448">    long cfFlushSizeLowerBound = 2048;</span>
-<span class="source-line-no">449</span><span id="line-449">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN,</span>
-<span class="source-line-no">450</span><span id="line-450">      cfFlushSizeLowerBound);</span>
-<span class="source-line-no">451</span><span id="line-451"></span>
-<span class="source-line-no">452</span><span id="line-452">    // One hour, prevent periodic rolling</span>
-<span class="source-line-no">453</span><span id="line-453">    conf.setLong("hbase.regionserver.logroll.period", 60L * 60 * 1000);</span>
-<span class="source-line-no">454</span><span id="line-454">    // prevent rolling by size</span>
-<span class="source-line-no">455</span><span id="line-455">    conf.setLong("hbase.regionserver.hlog.blocksize", 128L * 1024 * 1024);</span>
-<span class="source-line-no">456</span><span id="line-456">    // Make it 10 as max logs before a flush comes on.</span>
-<span class="source-line-no">457</span><span id="line-457">    final int maxLogs = 10;</span>
-<span class="source-line-no">458</span><span id="line-458">    conf.setInt("hbase.regionserver.maxlogs", maxLogs);</span>
-<span class="source-line-no">459</span><span id="line-459"></span>
-<span class="source-line-no">460</span><span id="line-460">    final int numRegionServers = 1;</span>
-<span class="source-line-no">461</span><span id="line-461">    TEST_UTIL.startMiniCluster(numRegionServers);</span>
-<span class="source-line-no">462</span><span id="line-462">    try {</span>
-<span class="source-line-no">463</span><span id="line-463">      Table table = TEST_UTIL.createTable(tableName, FAMILIES);</span>
-<span class="source-line-no">464</span><span id="line-464">      Pair&lt;HRegion, HRegionServer&gt; desiredRegionAndServer = getRegionWithName(tableName);</span>
-<span class="source-line-no">465</span><span id="line-465">      final HRegion desiredRegion = desiredRegionAndServer.getFirst();</span>
-<span class="source-line-no">466</span><span id="line-466">      assertTrue("Could not find a region which hosts the new region.", desiredRegion != null);</span>
-<span class="source-line-no">467</span><span id="line-467">      LOG.info("Writing to region=" + desiredRegion);</span>
-<span class="source-line-no">468</span><span id="line-468"></span>
-<span class="source-line-no">469</span><span id="line-469">      // Add one row for both CFs.</span>
-<span class="source-line-no">470</span><span id="line-470">      for (int i = 1; i &lt;= 3; i++) {</span>
-<span class="source-line-no">471</span><span id="line-471">        table.put(createPut(i, 0));</span>
-<span class="source-line-no">472</span><span id="line-472">      }</span>
-<span class="source-line-no">473</span><span id="line-473">      // Now only add row to CF1, make sure when we force a flush, CF1 is larger than the lower</span>
-<span class="source-line-no">474</span><span id="line-474">      // bound and CF2 and CF3 are smaller than the lower bound.</span>
-<span class="source-line-no">475</span><span id="line-475">      for (int i = 0; i &lt; maxLogs; i++) {</span>
-<span class="source-line-no">476</span><span id="line-476">        for (int j = 0; j &lt; 100; j++) {</span>
-<span class="source-line-no">477</span><span id="line-477">          table.put(createPut(1, i * 100 + j));</span>
-<span class="source-line-no">478</span><span id="line-478">        }</span>
-<span class="source-line-no">479</span><span id="line-479">        // Roll the WAL. The log file count is less than maxLogs so no flush is triggered.</span>
-<span class="source-line-no">480</span><span id="line-480">        int currentNumRolledLogFiles = getNumRolledLogFiles(desiredRegion);</span>
-<span class="source-line-no">481</span><span id="line-481">        assertNull(getWAL(desiredRegion).rollWriter());</span>
-<span class="source-line-no">482</span><span id="line-482">        TEST_UTIL.waitFor(60000,</span>
-<span class="source-line-no">483</span><span id="line-483">          () -&gt; getNumRolledLogFiles(desiredRegion) &gt; currentNumRolledLogFiles);</span>
-<span class="source-line-no">484</span><span id="line-484">      }</span>
-<span class="source-line-no">485</span><span id="line-485">      assertEquals(maxLogs, getNumRolledLogFiles(desiredRegion));</span>
-<span class="source-line-no">486</span><span id="line-486">      assertTrue(</span>
-<span class="source-line-no">487</span><span id="line-487">        desiredRegion.getStore(FAMILY1).getMemStoreSize().getHeapSize() &gt; cfFlushSizeLowerBound);</span>
-<span class="source-line-no">488</span><span id="line-488">      assertTrue(</span>
-<span class="source-line-no">489</span><span id="line-489">        desiredRegion.getStore(FAMILY2).getMemStoreSize().getHeapSize() &lt; cfFlushSizeLowerBound);</span>
-<span class="source-line-no">490</span><span id="line-490">      assertTrue(</span>
-<span class="source-line-no">491</span><span id="line-491">        desiredRegion.getStore(FAMILY3).getMemStoreSize().getHeapSize() &lt; cfFlushSizeLowerBound);</span>
-<span class="source-line-no">492</span><span id="line-492">      table.put(createPut(1, 12345678));</span>
-<span class="source-line-no">493</span><span id="line-493">      // Make numRolledLogFiles greater than maxLogs</span>
-<span class="source-line-no">494</span><span id="line-494">      desiredRegionAndServer.getSecond().getWalRoller().requestRollAll();</span>
-<span class="source-line-no">495</span><span id="line-495">      // Wait for some time till the flush caused by log rolling happens.</span>
-<span class="source-line-no">496</span><span id="line-496">      TEST_UTIL.waitFor(30000, new Waiter.ExplainingPredicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">381</span><span id="line-381">      // CF1 Should have been flushed</span>
+<span class="source-line-no">382</span><span id="line-382">      assertEquals(0, cf1MemstoreSize);</span>
+<span class="source-line-no">383</span><span id="line-383">      // CF2 and CF3 shouldn't have been flushed.</span>
+<span class="source-line-no">384</span><span id="line-384">      // TODO: This test doesn't allow for this case:</span>
+<span class="source-line-no">385</span><span id="line-385">      // " Since none of the CFs were above the size, flushing all."</span>
+<span class="source-line-no">386</span><span id="line-386">      // i.e. a flush happens before we get to here and its a flush-all.</span>
+<span class="source-line-no">387</span><span id="line-387">      assertTrue(cf2MemstoreSize &gt;= 0);</span>
+<span class="source-line-no">388</span><span id="line-388">      assertTrue(cf3MemstoreSize &gt;= 0);</span>
+<span class="source-line-no">389</span><span id="line-389">      assertEquals(totalMemstoreSize, cf2MemstoreSize + cf3MemstoreSize);</span>
+<span class="source-line-no">390</span><span id="line-390"></span>
+<span class="source-line-no">391</span><span id="line-391">      // Wait for the RS report to go across to the master, so that the master</span>
+<span class="source-line-no">392</span><span id="line-392">      // is aware of which sequence ids have been flushed, before we kill the RS.</span>
+<span class="source-line-no">393</span><span id="line-393">      // If in production, the RS dies before the report goes across, we will</span>
+<span class="source-line-no">394</span><span id="line-394">      // safely replay all the edits.</span>
+<span class="source-line-no">395</span><span id="line-395">      Thread.sleep(2000);</span>
+<span class="source-line-no">396</span><span id="line-396"></span>
+<span class="source-line-no">397</span><span id="line-397">      // Abort the region server where we have the region hosted.</span>
+<span class="source-line-no">398</span><span id="line-398">      HRegionServer rs = desiredRegionAndServer.getSecond();</span>
+<span class="source-line-no">399</span><span id="line-399">      rs.abort("testing");</span>
+<span class="source-line-no">400</span><span id="line-400"></span>
+<span class="source-line-no">401</span><span id="line-401">      // The aborted region server's regions will be eventually assigned to some</span>
+<span class="source-line-no">402</span><span id="line-402">      // other region server, and the get RPC call (inside verifyEdit()) will</span>
+<span class="source-line-no">403</span><span id="line-403">      // retry for some time till the regions come back up.</span>
+<span class="source-line-no">404</span><span id="line-404"></span>
+<span class="source-line-no">405</span><span id="line-405">      // Verify that all the edits are safe.</span>
+<span class="source-line-no">406</span><span id="line-406">      for (int i = 1; i &lt;= 80; i++) {</span>
+<span class="source-line-no">407</span><span id="line-407">        verifyEdit(1, i, table);</span>
+<span class="source-line-no">408</span><span id="line-408">        if (i &lt;= 10) {</span>
+<span class="source-line-no">409</span><span id="line-409">          verifyEdit(2, i, table);</span>
+<span class="source-line-no">410</span><span id="line-410">          verifyEdit(3, i, table);</span>
+<span class="source-line-no">411</span><span id="line-411">        }</span>
+<span class="source-line-no">412</span><span id="line-412">      }</span>
+<span class="source-line-no">413</span><span id="line-413">    } finally {</span>
+<span class="source-line-no">414</span><span id="line-414">      TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">415</span><span id="line-415">    }</span>
+<span class="source-line-no">416</span><span id="line-416">  }</span>
+<span class="source-line-no">417</span><span id="line-417"></span>
+<span class="source-line-no">418</span><span id="line-418">  // Test Log Replay with Distributed log split on.</span>
+<span class="source-line-no">419</span><span id="line-419">  @Test</span>
+<span class="source-line-no">420</span><span id="line-420">  public void testLogReplayWithDistributedLogSplit() throws Exception {</span>
+<span class="source-line-no">421</span><span id="line-421">    doTestLogReplay();</span>
+<span class="source-line-no">422</span><span id="line-422">  }</span>
+<span class="source-line-no">423</span><span id="line-423"></span>
+<span class="source-line-no">424</span><span id="line-424">  private WAL getWAL(Region region) {</span>
+<span class="source-line-no">425</span><span id="line-425">    return ((HRegion) region).getWAL();</span>
+<span class="source-line-no">426</span><span id="line-426">  }</span>
+<span class="source-line-no">427</span><span id="line-427"></span>
+<span class="source-line-no">428</span><span id="line-428">  private int getNumRolledLogFiles(Region region) {</span>
+<span class="source-line-no">429</span><span id="line-429">    return AbstractFSWALProvider.getNumRolledLogFiles(getWAL(region));</span>
+<span class="source-line-no">430</span><span id="line-430">  }</span>
+<span class="source-line-no">431</span><span id="line-431"></span>
+<span class="source-line-no">432</span><span id="line-432">  /**</span>
+<span class="source-line-no">433</span><span id="line-433">   * When a log roll is about to happen, we do a flush of the regions who will be affected by the</span>
+<span class="source-line-no">434</span><span id="line-434">   * log roll. These flushes cannot be a selective flushes, otherwise we cannot roll the logs. This</span>
+<span class="source-line-no">435</span><span id="line-435">   * test ensures that we do a full-flush in that scenario.</span>
+<span class="source-line-no">436</span><span id="line-436">   */</span>
+<span class="source-line-no">437</span><span id="line-437">  @Test</span>
+<span class="source-line-no">438</span><span id="line-438">  public void testFlushingWhenLogRolling() throws Exception {</span>
+<span class="source-line-no">439</span><span id="line-439">    TableName tableName = TableName.valueOf("testFlushingWhenLogRolling");</span>
+<span class="source-line-no">440</span><span id="line-440">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">441</span><span id="line-441">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 128 * 1024 * 1024);</span>
+<span class="source-line-no">442</span><span id="line-442">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
+<span class="source-line-no">443</span><span id="line-443">    long cfFlushSizeLowerBound = 2048;</span>
+<span class="source-line-no">444</span><span id="line-444">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN,</span>
+<span class="source-line-no">445</span><span id="line-445">      cfFlushSizeLowerBound);</span>
+<span class="source-line-no">446</span><span id="line-446"></span>
+<span class="source-line-no">447</span><span id="line-447">    // One hour, prevent periodic rolling</span>
+<span class="source-line-no">448</span><span id="line-448">    conf.setLong("hbase.regionserver.logroll.period", 60L * 60 * 1000);</span>
+<span class="source-line-no">449</span><span id="line-449">    // prevent rolling by size</span>
+<span class="source-line-no">450</span><span id="line-450">    conf.setLong("hbase.regionserver.hlog.blocksize", 128L * 1024 * 1024);</span>
+<span class="source-line-no">451</span><span id="line-451">    // Make it 10 as max logs before a flush comes on.</span>
+<span class="source-line-no">452</span><span id="line-452">    final int maxLogs = 10;</span>
+<span class="source-line-no">453</span><span id="line-453">    conf.setInt("hbase.regionserver.maxlogs", maxLogs);</span>
+<span class="source-line-no">454</span><span id="line-454"></span>
+<span class="source-line-no">455</span><span id="line-455">    final int numRegionServers = 1;</span>
+<span class="source-line-no">456</span><span id="line-456">    TEST_UTIL.startMiniCluster(numRegionServers);</span>
+<span class="source-line-no">457</span><span id="line-457">    try {</span>
+<span class="source-line-no">458</span><span id="line-458">      Table table = TEST_UTIL.createTable(tableName, FAMILIES);</span>
+<span class="source-line-no">459</span><span id="line-459">      Pair&lt;HRegion, HRegionServer&gt; desiredRegionAndServer = getRegionWithName(tableName);</span>
+<span class="source-line-no">460</span><span id="line-460">      final HRegion desiredRegion = desiredRegionAndServer.getFirst();</span>
+<span class="source-line-no">461</span><span id="line-461">      assertNotNull(desiredRegion, "Could not find a region which hosts the new region.");</span>
+<span class="source-line-no">462</span><span id="line-462">      LOG.info("Writing to region=" + desiredRegion);</span>
+<span class="source-line-no">463</span><span id="line-463"></span>
+<span class="source-line-no">464</span><span id="line-464">      // Add one row for both CFs.</span>
+<span class="source-line-no">465</span><span id="line-465">      for (int i = 1; i &lt;= 3; i++) {</span>
+<span class="source-line-no">466</span><span id="line-466">        table.put(createPut(i, 0));</span>
+<span class="source-line-no">467</span><span id="line-467">      }</span>
+<span class="source-line-no">468</span><span id="line-468">      // Now only add row to CF1, make sure when we force a flush, CF1 is larger than the lower</span>
+<span class="source-line-no">469</span><span id="line-469">      // bound and CF2 and CF3 are smaller than the lower bound.</span>
+<span class="source-line-no">470</span><span id="line-470">      for (int i = 0; i &lt; maxLogs; i++) {</span>
+<span class="source-line-no">471</span><span id="line-471">        for (int j = 0; j &lt; 100; j++) {</span>
+<span class="source-line-no">472</span><span id="line-472">          table.put(createPut(1, i * 100 + j));</span>
+<span class="source-line-no">473</span><span id="line-473">        }</span>
+<span class="source-line-no">474</span><span id="line-474">        // Roll the WAL. The log file count is less than maxLogs so no flush is triggered.</span>
+<span class="source-line-no">475</span><span id="line-475">        int currentNumRolledLogFiles = getNumRolledLogFiles(desiredRegion);</span>
+<span class="source-line-no">476</span><span id="line-476">        assertNull(getWAL(desiredRegion).rollWriter());</span>
+<span class="source-line-no">477</span><span id="line-477">        TEST_UTIL.waitFor(60000,</span>
+<span class="source-line-no">478</span><span id="line-478">          () -&gt; getNumRolledLogFiles(desiredRegion) &gt; currentNumRolledLogFiles);</span>
+<span class="source-line-no">479</span><span id="line-479">      }</span>
+<span class="source-line-no">480</span><span id="line-480">      assertEquals(maxLogs, getNumRolledLogFiles(desiredRegion));</span>
+<span class="source-line-no">481</span><span id="line-481">      assertTrue(</span>
+<span class="source-line-no">482</span><span id="line-482">        desiredRegion.getStore(FAMILY1).getMemStoreSize().getHeapSize() &gt; cfFlushSizeLowerBound);</span>
+<span class="source-line-no">483</span><span id="line-483">      assertTrue(</span>
+<span class="source-line-no">484</span><span id="line-484">        desiredRegion.getStore(FAMILY2).getMemStoreSize().getHeapSize() &lt; cfFlushSizeLowerBound);</span>
+<span class="source-line-no">485</span><span id="line-485">      assertTrue(</span>
+<span class="source-line-no">486</span><span id="line-486">        desiredRegion.getStore(FAMILY3).getMemStoreSize().getHeapSize() &lt; cfFlushSizeLowerBound);</span>
+<span class="source-line-no">487</span><span id="line-487">      table.put(createPut(1, 12345678));</span>
+<span class="source-line-no">488</span><span id="line-488">      // Make numRolledLogFiles greater than maxLogs</span>
+<span class="source-line-no">489</span><span id="line-489">      desiredRegionAndServer.getSecond().getWalRoller().requestRollAll();</span>
+<span class="source-line-no">490</span><span id="line-490">      // Wait for some time till the flush caused by log rolling happens.</span>
+<span class="source-line-no">491</span><span id="line-491">      TEST_UTIL.waitFor(30000, new Waiter.ExplainingPredicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">492</span><span id="line-492"></span>
+<span class="source-line-no">493</span><span id="line-493">        @Override</span>
+<span class="source-line-no">494</span><span id="line-494">        public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">495</span><span id="line-495">          return desiredRegion.getMemStoreDataSize() == 0;</span>
+<span class="source-line-no">496</span><span id="line-496">        }</span>
 <span class="source-line-no">497</span><span id="line-497"></span>
 <span class="source-line-no">498</span><span id="line-498">        @Override</span>
-<span class="source-line-no">499</span><span id="line-499">        public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">500</span><span id="line-500">          return desiredRegion.getMemStoreDataSize() == 0;</span>
-<span class="source-line-no">501</span><span id="line-501">        }</span>
-<span class="source-line-no">502</span><span id="line-502"></span>
-<span class="source-line-no">503</span><span id="line-503">        @Override</span>
-<span class="source-line-no">504</span><span id="line-504">        public String explainFailure() throws Exception {</span>
-<span class="source-line-no">505</span><span id="line-505">          long memstoreSize = desiredRegion.getMemStoreDataSize();</span>
-<span class="source-line-no">506</span><span id="line-506">          if (memstoreSize &gt; 0) {</span>
-<span class="source-line-no">507</span><span id="line-507">            return "Still have unflushed entries in memstore, memstore size is " + memstoreSize;</span>
-<span class="source-line-no">508</span><span id="line-508">          }</span>
-<span class="source-line-no">509</span><span id="line-509">          return "Unknown";</span>
-<span class="source-line-no">510</span><span id="line-510">        }</span>
-<span class="source-line-no">511</span><span id="line-511">      });</span>
-<span class="source-line-no">512</span><span id="line-512">      LOG.info("Finished waiting on flush after too many WALs...");</span>
-<span class="source-line-no">513</span><span id="line-513">      // Individual families should have been flushed.</span>
-<span class="source-line-no">514</span><span id="line-514">      assertEquals(MutableSegment.DEEP_OVERHEAD,</span>
-<span class="source-line-no">515</span><span id="line-515">        desiredRegion.getStore(FAMILY1).getMemStoreSize().getHeapSize());</span>
-<span class="source-line-no">516</span><span id="line-516">      assertEquals(MutableSegment.DEEP_OVERHEAD,</span>
-<span class="source-line-no">517</span><span id="line-517">        desiredRegion.getStore(FAMILY2).getMemStoreSize().getHeapSize());</span>
-<span class="source-line-no">518</span><span id="line-518">      assertEquals(MutableSegment.DEEP_OVERHEAD,</span>
-<span class="source-line-no">519</span><span id="line-519">        desiredRegion.getStore(FAMILY3).getMemStoreSize().getHeapSize());</span>
-<span class="source-line-no">520</span><span id="line-520">      // let WAL cleanOldLogs</span>
-<span class="source-line-no">521</span><span id="line-521">      assertNull(getWAL(desiredRegion).rollWriter(true));</span>
-<span class="source-line-no">522</span><span id="line-522">      TEST_UTIL.waitFor(60000, () -&gt; getNumRolledLogFiles(desiredRegion) &lt; maxLogs);</span>
-<span class="source-line-no">523</span><span id="line-523">    } finally {</span>
-<span class="source-line-no">524</span><span id="line-524">      TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">525</span><span id="line-525">    }</span>
-<span class="source-line-no">526</span><span id="line-526">  }</span>
-<span class="source-line-no">527</span><span id="line-527"></span>
-<span class="source-line-no">528</span><span id="line-528">  private void doPut(Table table, long memstoreFlushSize) throws IOException, InterruptedException {</span>
-<span class="source-line-no">529</span><span id="line-529">    Region region = getRegionWithName(table.getName()).getFirst();</span>
-<span class="source-line-no">530</span><span id="line-530">    // cf1 4B per row, cf2 40B per row and cf3 400B per row</span>
-<span class="source-line-no">531</span><span id="line-531">    byte[] qf = Bytes.toBytes("qf");</span>
-<span class="source-line-no">532</span><span id="line-532">    for (int i = 0; i &lt; 10000; i++) {</span>
-<span class="source-line-no">533</span><span id="line-533">      Put put = new Put(Bytes.toBytes("row-" + i));</span>
-<span class="source-line-no">534</span><span id="line-534">      byte[] value1 = new byte[100];</span>
-<span class="source-line-no">535</span><span id="line-535">      Bytes.random(value1);</span>
-<span class="source-line-no">536</span><span id="line-536">      put.addColumn(FAMILY1, qf, value1);</span>
-<span class="source-line-no">537</span><span id="line-537">      byte[] value2 = new byte[200];</span>
-<span class="source-line-no">538</span><span id="line-538">      Bytes.random(value2);</span>
-<span class="source-line-no">539</span><span id="line-539">      put.addColumn(FAMILY2, qf, value2);</span>
-<span class="source-line-no">540</span><span id="line-540">      byte[] value3 = new byte[400];</span>
-<span class="source-line-no">541</span><span id="line-541">      Bytes.random(value3);</span>
-<span class="source-line-no">542</span><span id="line-542">      put.addColumn(FAMILY3, qf, value3);</span>
-<span class="source-line-no">543</span><span id="line-543">      table.put(put);</span>
-<span class="source-line-no">544</span><span id="line-544">      // slow down to let regionserver flush region.</span>
-<span class="source-line-no">545</span><span id="line-545">      while (region.getMemStoreHeapSize() &gt; memstoreFlushSize) {</span>
-<span class="source-line-no">546</span><span id="line-546">        Thread.sleep(100);</span>
-<span class="source-line-no">547</span><span id="line-547">      }</span>
-<span class="source-line-no">548</span><span id="line-548">    }</span>
-<span class="source-line-no">549</span><span id="line-549">  }</span>
-<span class="source-line-no">550</span><span id="line-550"></span>
-<span class="source-line-no">551</span><span id="line-551">  // Under the same write load, small stores should have less store files when</span>
-<span class="source-line-no">552</span><span id="line-552">  // percolumnfamilyflush enabled.</span>
-<span class="source-line-no">553</span><span id="line-553">  @Test</span>
-<span class="source-line-no">554</span><span id="line-554">  public void testCompareStoreFileCount() throws Exception {</span>
-<span class="source-line-no">555</span><span id="line-555">    long memstoreFlushSize = 1024L * 1024;</span>
-<span class="source-line-no">556</span><span id="line-556">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">557</span><span id="line-557">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, memstoreFlushSize);</span>
-<span class="source-line-no">558</span><span id="line-558">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllStoresPolicy.class.getName());</span>
-<span class="source-line-no">559</span><span id="line-559">    conf.setInt(HStore.BLOCKING_STOREFILES_KEY, 10000);</span>
-<span class="source-line-no">560</span><span id="line-560">    conf.set(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,</span>
-<span class="source-line-no">561</span><span id="line-561">      ConstantSizeRegionSplitPolicy.class.getName());</span>
+<span class="source-line-no">499</span><span id="line-499">        public String explainFailure() throws Exception {</span>
+<span class="source-line-no">500</span><span id="line-500">          long memstoreSize = desiredRegion.getMemStoreDataSize();</span>
+<span class="source-line-no">501</span><span id="line-501">          if (memstoreSize &gt; 0) {</span>
+<span class="source-line-no">502</span><span id="line-502">            return "Still have unflushed entries in memstore, memstore size is " + memstoreSize;</span>
+<span class="source-line-no">503</span><span id="line-503">          }</span>
+<span class="source-line-no">504</span><span id="line-504">          return "Unknown";</span>
+<span class="source-line-no">505</span><span id="line-505">        }</span>
+<span class="source-line-no">506</span><span id="line-506">      });</span>
+<span class="source-line-no">507</span><span id="line-507">      LOG.info("Finished waiting on flush after too many WALs...");</span>
+<span class="source-line-no">508</span><span id="line-508">      // Individual families should have been flushed.</span>
+<span class="source-line-no">509</span><span id="line-509">      assertEquals(MutableSegment.DEEP_OVERHEAD,</span>
+<span class="source-line-no">510</span><span id="line-510">        desiredRegion.getStore(FAMILY1).getMemStoreSize().getHeapSize());</span>
+<span class="source-line-no">511</span><span id="line-511">      assertEquals(MutableSegment.DEEP_OVERHEAD,</span>
+<span class="source-line-no">512</span><span id="line-512">        desiredRegion.getStore(FAMILY2).getMemStoreSize().getHeapSize());</span>
+<span class="source-line-no">513</span><span id="line-513">      assertEquals(MutableSegment.DEEP_OVERHEAD,</span>
+<span class="source-line-no">514</span><span id="line-514">        desiredRegion.getStore(FAMILY3).getMemStoreSize().getHeapSize());</span>
+<span class="source-line-no">515</span><span id="line-515">      // let WAL cleanOldLogs</span>
+<span class="source-line-no">516</span><span id="line-516">      assertNull(getWAL(desiredRegion).rollWriter(true));</span>
+<span class="source-line-no">517</span><span id="line-517">      TEST_UTIL.waitFor(60000, () -&gt; getNumRolledLogFiles(desiredRegion) &lt; maxLogs);</span>
+<span class="source-line-no">518</span><span id="line-518">    } finally {</span>
+<span class="source-line-no">519</span><span id="line-519">      TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">520</span><span id="line-520">    }</span>
+<span class="source-line-no">521</span><span id="line-521">  }</span>
+<span class="source-line-no">522</span><span id="line-522"></span>
+<span class="source-line-no">523</span><span id="line-523">  private void doPut(Table table, long memstoreFlushSize) throws IOException, InterruptedException {</span>
+<span class="source-line-no">524</span><span id="line-524">    Region region = getRegionWithName(table.getName()).getFirst();</span>
+<span class="source-line-no">525</span><span id="line-525">    // cf1 4B per row, cf2 40B per row and cf3 400B per row</span>
+<span class="source-line-no">526</span><span id="line-526">    byte[] qf = Bytes.toBytes("qf");</span>
+<span class="source-line-no">527</span><span id="line-527">    for (int i = 0; i &lt; 10000; i++) {</span>
+<span class="source-line-no">528</span><span id="line-528">      Put put = new Put(Bytes.toBytes("row-" + i));</span>
+<span class="source-line-no">529</span><span id="line-529">      byte[] value1 = new byte[100];</span>
+<span class="source-line-no">530</span><span id="line-530">      Bytes.random(value1);</span>
+<span class="source-line-no">531</span><span id="line-531">      put.addColumn(FAMILY1, qf, value1);</span>
+<span class="source-line-no">532</span><span id="line-532">      byte[] value2 = new byte[200];</span>
+<span class="source-line-no">533</span><span id="line-533">      Bytes.random(value2);</span>
+<span class="source-line-no">534</span><span id="line-534">      put.addColumn(FAMILY2, qf, value2);</span>
+<span class="source-line-no">535</span><span id="line-535">      byte[] value3 = new byte[400];</span>
+<span class="source-line-no">536</span><span id="line-536">      Bytes.random(value3);</span>
+<span class="source-line-no">537</span><span id="line-537">      put.addColumn(FAMILY3, qf, value3);</span>
+<span class="source-line-no">538</span><span id="line-538">      table.put(put);</span>
+<span class="source-line-no">539</span><span id="line-539">      // slow down to let regionserver flush region.</span>
+<span class="source-line-no">540</span><span id="line-540">      while (region.getMemStoreHeapSize() &gt; memstoreFlushSize) {</span>
+<span class="source-line-no">541</span><span id="line-541">        Thread.sleep(100);</span>
+<span class="source-line-no">542</span><span id="line-542">      }</span>
+<span class="source-line-no">543</span><span id="line-543">    }</span>
+<span class="source-line-no">544</span><span id="line-544">  }</span>
+<span class="source-line-no">545</span><span id="line-545"></span>
+<span class="source-line-no">546</span><span id="line-546">  // Under the same write load, small stores should have less store files when</span>
+<span class="source-line-no">547</span><span id="line-547">  // percolumnfamilyflush enabled.</span>
+<span class="source-line-no">548</span><span id="line-548">  @Test</span>
+<span class="source-line-no">549</span><span id="line-549">  public void testCompareStoreFileCount() throws Exception {</span>
+<span class="source-line-no">550</span><span id="line-550">    long memstoreFlushSize = 1024L * 1024;</span>
+<span class="source-line-no">551</span><span id="line-551">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">552</span><span id="line-552">    conf.setLong(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, memstoreFlushSize);</span>
+<span class="source-line-no">553</span><span id="line-553">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllStoresPolicy.class.getName());</span>
+<span class="source-line-no">554</span><span id="line-554">    conf.setInt(HStore.BLOCKING_STOREFILES_KEY, 10000);</span>
+<span class="source-line-no">555</span><span id="line-555">    conf.set(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,</span>
+<span class="source-line-no">556</span><span id="line-556">      ConstantSizeRegionSplitPolicy.class.getName());</span>
+<span class="source-line-no">557</span><span id="line-557"></span>
+<span class="source-line-no">558</span><span id="line-558">    TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(TABLENAME)</span>
+<span class="source-line-no">559</span><span id="line-559">      .setCompactionEnabled(false).setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY1))</span>
+<span class="source-line-no">560</span><span id="line-560">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY2))</span>
+<span class="source-line-no">561</span><span id="line-561">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY3)).build();</span>
 <span class="source-line-no">562</span><span id="line-562"></span>
-<span class="source-line-no">563</span><span id="line-563">    TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(TABLENAME)</span>
-<span class="source-line-no">564</span><span id="line-564">      .setCompactionEnabled(false).setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY1))</span>
-<span class="source-line-no">565</span><span id="line-565">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY2))</span>
-<span class="source-line-no">566</span><span id="line-566">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY3)).build();</span>
-<span class="source-line-no">567</span><span id="line-567"></span>
-<span class="source-line-no">568</span><span id="line-568">    LOG.info("==============Test with selective flush disabled===============");</span>
-<span class="source-line-no">569</span><span id="line-569">    int cf1StoreFileCount = -1;</span>
-<span class="source-line-no">570</span><span id="line-570">    int cf2StoreFileCount = -1;</span>
-<span class="source-line-no">571</span><span id="line-571">    int cf3StoreFileCount = -1;</span>
-<span class="source-line-no">572</span><span id="line-572">    int cf1StoreFileCount1 = -1;</span>
-<span class="source-line-no">573</span><span id="line-573">    int cf2StoreFileCount1 = -1;</span>
-<span class="source-line-no">574</span><span id="line-574">    int cf3StoreFileCount1 = -1;</span>
-<span class="source-line-no">575</span><span id="line-575">    try {</span>
-<span class="source-line-no">576</span><span id="line-576">      TEST_UTIL.startMiniCluster(1);</span>
-<span class="source-line-no">577</span><span id="line-577">      TEST_UTIL.getAdmin()</span>
-<span class="source-line-no">578</span><span id="line-578">        .createNamespace(NamespaceDescriptor.create(TABLENAME.getNamespaceAsString()).build());</span>
-<span class="source-line-no">579</span><span id="line-579">      TEST_UTIL.getAdmin().createTable(tableDescriptor);</span>
-<span class="source-line-no">580</span><span id="line-580">      TEST_UTIL.waitTableAvailable(TABLENAME);</span>
-<span class="source-line-no">581</span><span id="line-581">      Connection conn = ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">582</span><span id="line-582">      Table table = conn.getTable(TABLENAME);</span>
-<span class="source-line-no">583</span><span id="line-583">      doPut(table, memstoreFlushSize);</span>
-<span class="source-line-no">584</span><span id="line-584">      table.close();</span>
-<span class="source-line-no">585</span><span id="line-585">      conn.close();</span>
-<span class="source-line-no">586</span><span id="line-586"></span>
-<span class="source-line-no">587</span><span id="line-587">      Region region = getRegionWithName(TABLENAME).getFirst();</span>
-<span class="source-line-no">588</span><span id="line-588">      cf1StoreFileCount = region.getStore(FAMILY1).getStorefilesCount();</span>
-<span class="source-line-no">589</span><span id="line-589">      cf2StoreFileCount = region.getStore(FAMILY2).getStorefilesCount();</span>
-<span class="source-line-no">590</span><span id="line-590">      cf3StoreFileCount = region.getStore(FAMILY3).getStorefilesCount();</span>
-<span class="source-line-no">591</span><span id="line-591">    } finally {</span>
-<span class="source-line-no">592</span><span id="line-592">      TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">593</span><span id="line-593">    }</span>
-<span class="source-line-no">594</span><span id="line-594"></span>
-<span class="source-line-no">595</span><span id="line-595">    LOG.info("==============Test with selective flush enabled===============");</span>
-<span class="source-line-no">596</span><span id="line-596">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
-<span class="source-line-no">597</span><span id="line-597">    // default value of per-cf flush lower bound is too big, set to a small enough value</span>
-<span class="source-line-no">598</span><span id="line-598">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN, 0);</span>
-<span class="source-line-no">599</span><span id="line-599">    try {</span>
-<span class="source-line-no">600</span><span id="line-600">      TEST_UTIL.startMiniCluster(1);</span>
-<span class="source-line-no">601</span><span id="line-601">      TEST_UTIL.getAdmin()</span>
-<span class="source-line-no">602</span><span id="line-602">        .createNamespace(NamespaceDescriptor.create(TABLENAME.getNamespaceAsString()).build());</span>
-<span class="source-line-no">603</span><span id="line-603">      TEST_UTIL.getAdmin().createTable(tableDescriptor);</span>
-<span class="source-line-no">604</span><span id="line-604">      Connection conn = ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">605</span><span id="line-605">      Table table = conn.getTable(TABLENAME);</span>
-<span class="source-line-no">606</span><span id="line-606">      doPut(table, memstoreFlushSize);</span>
-<span class="source-line-no">607</span><span id="line-607">      table.close();</span>
-<span class="source-line-no">608</span><span id="line-608">      conn.close();</span>
-<span class="source-line-no">609</span><span id="line-609"></span>
-<span class="source-line-no">610</span><span id="line-610">      Region region = getRegionWithName(TABLENAME).getFirst();</span>
-<span class="source-line-no">611</span><span id="line-611">      cf1StoreFileCount1 = region.getStore(FAMILY1).getStorefilesCount();</span>
-<span class="source-line-no">612</span><span id="line-612">      cf2StoreFileCount1 = region.getStore(FAMILY2).getStorefilesCount();</span>
-<span class="source-line-no">613</span><span id="line-613">      cf3StoreFileCount1 = region.getStore(FAMILY3).getStorefilesCount();</span>
-<span class="source-line-no">614</span><span id="line-614">    } finally {</span>
-<span class="source-line-no">615</span><span id="line-615">      TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">616</span><span id="line-616">    }</span>
-<span class="source-line-no">617</span><span id="line-617"></span>
-<span class="source-line-no">618</span><span id="line-618">    LOG.info("disable selective flush: " + Bytes.toString(FAMILY1) + "=&gt;" + cf1StoreFileCount + ", "</span>
-<span class="source-line-no">619</span><span id="line-619">      + Bytes.toString(FAMILY2) + "=&gt;" + cf2StoreFileCount + ", " + Bytes.toString(FAMILY3) + "=&gt;"</span>
-<span class="source-line-no">620</span><span id="line-620">      + cf3StoreFileCount);</span>
-<span class="source-line-no">621</span><span id="line-621">    LOG.info("enable selective flush: " + Bytes.toString(FAMILY1) + "=&gt;" + cf1StoreFileCount1 + ", "</span>
-<span class="source-line-no">622</span><span id="line-622">      + Bytes.toString(FAMILY2) + "=&gt;" + cf2StoreFileCount1 + ", " + Bytes.toString(FAMILY3) + "=&gt;"</span>
-<span class="source-line-no">623</span><span id="line-623">      + cf3StoreFileCount1);</span>
-<span class="source-line-no">624</span><span id="line-624">    // small CF will have less store files.</span>
-<span class="source-line-no">625</span><span id="line-625">    assertTrue(cf1StoreFileCount1 &lt; cf1StoreFileCount);</span>
-<span class="source-line-no">626</span><span id="line-626">    assertTrue(cf2StoreFileCount1 &lt; cf2StoreFileCount);</span>
-<span class="source-line-no">627</span><span id="line-627">  }</span>
-<span class="source-line-no">628</span><span id="line-628"></span>
-<span class="source-line-no">629</span><span id="line-629">  public static void main(String[] args) throws Exception {</span>
-<span class="source-line-no">630</span><span id="line-630">    int numRegions = Integer.parseInt(args[0]);</span>
-<span class="source-line-no">631</span><span id="line-631">    long numRows = Long.parseLong(args[1]);</span>
-<span class="source-line-no">632</span><span id="line-632"></span>
-<span class="source-line-no">633</span><span id="line-633">    TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(TABLENAME)</span>
-<span class="source-line-no">634</span><span id="line-634">      .setMaxFileSize(10L * 1024 * 1024 * 1024)</span>
-<span class="source-line-no">635</span><span id="line-635">      .setValue(TableDescriptorBuilder.SPLIT_POLICY, ConstantSizeRegionSplitPolicy.class.getName())</span>
-<span class="source-line-no">636</span><span id="line-636">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY1))</span>
-<span class="source-line-no">637</span><span id="line-637">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY2))</span>
-<span class="source-line-no">638</span><span id="line-638">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY3)).build();</span>
-<span class="source-line-no">639</span><span id="line-639"></span>
-<span class="source-line-no">640</span><span id="line-640">    Configuration conf = HBaseConfiguration.create();</span>
-<span class="source-line-no">641</span><span id="line-641">    Connection conn = ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">642</span><span id="line-642">    Admin admin = conn.getAdmin();</span>
-<span class="source-line-no">643</span><span id="line-643">    if (admin.tableExists(TABLENAME)) {</span>
-<span class="source-line-no">644</span><span id="line-644">      admin.disableTable(TABLENAME);</span>
-<span class="source-line-no">645</span><span id="line-645">      admin.deleteTable(TABLENAME);</span>
-<span class="source-line-no">646</span><span id="line-646">    }</span>
-<span class="source-line-no">647</span><span id="line-647">    if (numRegions &gt;= 3) {</span>
-<span class="source-line-no">648</span><span id="line-648">      byte[] startKey = new byte[16];</span>
-<span class="source-line-no">649</span><span id="line-649">      byte[] endKey = new byte[16];</span>
-<span class="source-line-no">650</span><span id="line-650">      Arrays.fill(endKey, (byte) 0xFF);</span>
-<span class="source-line-no">651</span><span id="line-651">      admin.createTable(tableDescriptor, startKey, endKey, numRegions);</span>
-<span class="source-line-no">652</span><span id="line-652">    } else {</span>
-<span class="source-line-no">653</span><span id="line-653">      admin.createTable(tableDescriptor);</span>
-<span class="source-line-no">654</span><span id="line-654">    }</span>
-<span class="source-line-no">655</span><span id="line-655">    admin.close();</span>
-<span class="source-line-no">656</span><span id="line-656"></span>
-<span class="source-line-no">657</span><span id="line-657">    Table table = conn.getTable(TABLENAME);</span>
-<span class="source-line-no">658</span><span id="line-658">    byte[] qf = Bytes.toBytes("qf");</span>
-<span class="source-line-no">659</span><span id="line-659">    byte[] value1 = new byte[16];</span>
-<span class="source-line-no">660</span><span id="line-660">    byte[] value2 = new byte[256];</span>
-<span class="source-line-no">661</span><span id="line-661">    byte[] value3 = new byte[4096];</span>
-<span class="source-line-no">662</span><span id="line-662">    for (long i = 0; i &lt; numRows; i++) {</span>
-<span class="source-line-no">663</span><span id="line-663">      Put put = new Put(Hashing.md5().hashLong(i).asBytes());</span>
-<span class="source-line-no">664</span><span id="line-664">      Bytes.random(value1);</span>
-<span class="source-line-no">665</span><span id="line-665">      Bytes.random(value2);</span>
-<span class="source-line-no">666</span><span id="line-666">      Bytes.random(value3);</span>
-<span class="source-line-no">667</span><span id="line-667">      put.addColumn(FAMILY1, qf, value1);</span>
-<span class="source-line-no">668</span><span id="line-668">      put.addColumn(FAMILY2, qf, value2);</span>
-<span class="source-line-no">669</span><span id="line-669">      put.addColumn(FAMILY3, qf, value3);</span>
-<span class="source-line-no">670</span><span id="line-670">      table.put(put);</span>
-<span class="source-line-no">671</span><span id="line-671">      if (i % 10000 == 0) {</span>
-<span class="source-line-no">672</span><span id="line-672">        LOG.info(i + " rows put");</span>
-<span class="source-line-no">673</span><span id="line-673">      }</span>
-<span class="source-line-no">674</span><span id="line-674">    }</span>
-<span class="source-line-no">675</span><span id="line-675">    table.close();</span>
-<span class="source-line-no">676</span><span id="line-676">    conn.close();</span>
-<span class="source-line-no">677</span><span id="line-677">  }</span>
-<span class="source-line-no">678</span><span id="line-678">}</span>
+<span class="source-line-no">563</span><span id="line-563">    LOG.info("==============Test with selective flush disabled===============");</span>
+<span class="source-line-no">564</span><span id="line-564">    int cf1StoreFileCount = -1;</span>
+<span class="source-line-no">565</span><span id="line-565">    int cf2StoreFileCount = -1;</span>
+<span class="source-line-no">566</span><span id="line-566">    int cf3StoreFileCount = -1;</span>
+<span class="source-line-no">567</span><span id="line-567">    int cf1StoreFileCount1 = -1;</span>
+<span class="source-line-no">568</span><span id="line-568">    int cf2StoreFileCount1 = -1;</span>
+<span class="source-line-no">569</span><span id="line-569">    int cf3StoreFileCount1 = -1;</span>
+<span class="source-line-no">570</span><span id="line-570">    try {</span>
+<span class="source-line-no">571</span><span id="line-571">      TEST_UTIL.startMiniCluster(1);</span>
+<span class="source-line-no">572</span><span id="line-572">      TEST_UTIL.getAdmin()</span>
+<span class="source-line-no">573</span><span id="line-573">        .createNamespace(NamespaceDescriptor.create(TABLENAME.getNamespaceAsString()).build());</span>
+<span class="source-line-no">574</span><span id="line-574">      TEST_UTIL.getAdmin().createTable(tableDescriptor);</span>
+<span class="source-line-no">575</span><span id="line-575">      TEST_UTIL.waitTableAvailable(TABLENAME);</span>
+<span class="source-line-no">576</span><span id="line-576">      Connection conn = ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">577</span><span id="line-577">      Table table = conn.getTable(TABLENAME);</span>
+<span class="source-line-no">578</span><span id="line-578">      doPut(table, memstoreFlushSize);</span>
+<span class="source-line-no">579</span><span id="line-579">      table.close();</span>
+<span class="source-line-no">580</span><span id="line-580">      conn.close();</span>
+<span class="source-line-no">581</span><span id="line-581"></span>
+<span class="source-line-no">582</span><span id="line-582">      Region region = getRegionWithName(TABLENAME).getFirst();</span>
+<span class="source-line-no">583</span><span id="line-583">      cf1StoreFileCount = region.getStore(FAMILY1).getStorefilesCount();</span>
+<span class="source-line-no">584</span><span id="line-584">      cf2StoreFileCount = region.getStore(FAMILY2).getStorefilesCount();</span>
+<span class="source-line-no">585</span><span id="line-585">      cf3StoreFileCount = region.getStore(FAMILY3).getStorefilesCount();</span>
+<span class="source-line-no">586</span><span id="line-586">    } finally {</span>
+<span class="source-line-no">587</span><span id="line-587">      TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">588</span><span id="line-588">    }</span>
+<span class="source-line-no">589</span><span id="line-589"></span>
+<span class="source-line-no">590</span><span id="line-590">    LOG.info("==============Test with selective flush enabled===============");</span>
+<span class="source-line-no">591</span><span id="line-591">    conf.set(FlushPolicyFactory.HBASE_FLUSH_POLICY_KEY, FlushAllLargeStoresPolicy.class.getName());</span>
+<span class="source-line-no">592</span><span id="line-592">    // default value of per-cf flush lower bound is too big, set to a small enough value</span>
+<span class="source-line-no">593</span><span id="line-593">    conf.setLong(FlushLargeStoresPolicy.HREGION_COLUMNFAMILY_FLUSH_SIZE_LOWER_BOUND_MIN, 0);</span>
+<span class="source-line-no">594</span><span id="line-594">    try {</span>
+<span class="source-line-no">595</span><span id="line-595">      TEST_UTIL.startMiniCluster(1);</span>
+<span class="source-line-no">596</span><span id="line-596">      TEST_UTIL.getAdmin()</span>
+<span class="source-line-no">597</span><span id="line-597">        .createNamespace(NamespaceDescriptor.create(TABLENAME.getNamespaceAsString()).build());</span>
+<span class="source-line-no">598</span><span id="line-598">      TEST_UTIL.getAdmin().createTable(tableDescriptor);</span>
+<span class="source-line-no">599</span><span id="line-599">      Connection conn = ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">600</span><span id="line-600">      Table table = conn.getTable(TABLENAME);</span>
+<span class="source-line-no">601</span><span id="line-601">      doPut(table, memstoreFlushSize);</span>
+<span class="source-line-no">602</span><span id="line-602">      table.close();</span>
+<span class="source-line-no">603</span><span id="line-603">      conn.close();</span>
+<span class="source-line-no">604</span><span id="line-604"></span>
+<span class="source-line-no">605</span><span id="line-605">      Region region = getRegionWithName(TABLENAME).getFirst();</span>
+<span class="source-line-no">606</span><span id="line-606">      cf1StoreFileCount1 = region.getStore(FAMILY1).getStorefilesCount();</span>
+<span class="source-line-no">607</span><span id="line-607">      cf2StoreFileCount1 = region.getStore(FAMILY2).getStorefilesCount();</span>
+<span class="source-line-no">608</span><span id="line-608">      cf3StoreFileCount1 = region.getStore(FAMILY3).getStorefilesCount();</span>
+<span class="source-line-no">609</span><span id="line-609">    } finally {</span>
+<span class="source-line-no">610</span><span id="line-610">      TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">611</span><span id="line-611">    }</span>
+<span class="source-line-no">612</span><span id="line-612"></span>
+<span class="source-line-no">613</span><span id="line-613">    LOG.info("disable selective flush: " + Bytes.toString(FAMILY1) + "=&gt;" + cf1StoreFileCount + ", "</span>
+<span class="source-line-no">614</span><span id="line-614">      + Bytes.toString(FAMILY2) + "=&gt;" + cf2StoreFileCount + ", " + Bytes.toString(FAMILY3) + "=&gt;"</span>
+<span class="source-line-no">615</span><span id="line-615">      + cf3StoreFileCount);</span>
+<span class="source-line-no">616</span><span id="line-616">    LOG.info("enable selective flush: " + Bytes.toString(FAMILY1) + "=&gt;" + cf1StoreFileCount1 + ", "</span>
+<span class="source-line-no">617</span><span id="line-617">      + Bytes.toString(FAMILY2) + "=&gt;" + cf2StoreFileCount1 + ", " + Bytes.toString(FAMILY3) + "=&gt;"</span>
+<span class="source-line-no">618</span><span id="line-618">      + cf3StoreFileCount1);</span>
+<span class="source-line-no">619</span><span id="line-619">    // small CF will have less store files.</span>
+<span class="source-line-no">620</span><span id="line-620">    assertTrue(cf1StoreFileCount1 &lt; cf1StoreFileCount);</span>
+<span class="source-line-no">621</span><span id="line-621">    assertTrue(cf2StoreFileCount1 &lt; cf2StoreFileCount);</span>
+<span class="source-line-no">622</span><span id="line-622">  }</span>
+<span class="source-line-no">623</span><span id="line-623"></span>
+<span class="source-line-no">624</span><span id="line-624">  public static void main(String[] args) throws Exception {</span>
+<span class="source-line-no">625</span><span id="line-625">    int numRegions = Integer.parseInt(args[0]);</span>
+<span class="source-line-no">626</span><span id="line-626">    long numRows = Long.parseLong(args[1]);</span>
+<span class="source-line-no">627</span><span id="line-627"></span>
+<span class="source-line-no">628</span><span id="line-628">    TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(TABLENAME)</span>
+<span class="source-line-no">629</span><span id="line-629">      .setMaxFileSize(10L * 1024 * 1024 * 1024)</span>
+<span class="source-line-no">630</span><span id="line-630">      .setValue(TableDescriptorBuilder.SPLIT_POLICY, ConstantSizeRegionSplitPolicy.class.getName())</span>
+<span class="source-line-no">631</span><span id="line-631">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY1))</span>
+<span class="source-line-no">632</span><span id="line-632">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY2))</span>
+<span class="source-line-no">633</span><span id="line-633">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY3)).build();</span>
+<span class="source-line-no">634</span><span id="line-634"></span>
+<span class="source-line-no">635</span><span id="line-635">    Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">636</span><span id="line-636">    Connection conn = ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">637</span><span id="line-637">    Admin admin = conn.getAdmin();</span>
+<span class="source-line-no">638</span><span id="line-638">    if (admin.tableExists(TABLENAME)) {</span>
+<span class="source-line-no">639</span><span id="line-639">      admin.disableTable(TABLENAME);</span>
+<span class="source-line-no">640</span><span id="line-640">      admin.deleteTable(TABLENAME);</span>
+<span class="source-line-no">641</span><span id="line-641">    }</span>
+<span class="source-line-no">642</span><span id="line-642">    if (numRegions &gt;= 3) {</span>
+<span class="source-line-no">643</span><span id="line-643">      byte[] startKey = new byte[16];</span>
+<span class="source-line-no">644</span><span id="line-644">      byte[] endKey = new byte[16];</span>
+<span class="source-line-no">645</span><span id="line-645">      Arrays.fill(endKey, (byte) 0xFF);</span>
+<span class="source-line-no">646</span><span id="line-646">      admin.createTable(tableDescriptor, startKey, endKey, numRegions);</span>
+<span class="source-line-no">647</span><span id="line-647">    } else {</span>
+<span class="source-line-no">648</span><span id="line-648">      admin.createTable(tableDescriptor);</span>
+<span class="source-line-no">649</span><span id="line-649">    }</span>
+<span class="source-line-no">650</span><span id="line-650">    admin.close();</span>
+<span class="source-line-no">651</span><span id="line-651"></span>
+<span class="source-line-no">652</span><span id="line-652">    Table table = conn.getTable(TABLENAME);</span>
+<span class="source-line-no">653</span><span id="line-653">    byte[] qf = Bytes.toBytes("qf");</span>
+<span class="source-line-no">654</span><span id="line-654">    byte[] value1 = new byte[16];</span>
+<span class="source-line-no">655</span><span id="line-655">    byte[] value2 = new byte[256];</span>
+<span class="source-line-no">656</span><span id="line-656">    byte[] value3 = new byte[4096];</span>
+<span class="source-line-no">657</span><span id="line-657">    for (long i = 0; i &lt; numRows; i++) {</span>
+<span class="source-line-no">658</span><span id="line-658">      Put put = new Put(Hashing.md5().hashLong(i).asBytes());</span>
+<span class="source-line-no">659</span><span id="line-659">      Bytes.random(value1);</span>
+<span class="source-line-no">660</span><span id="line-660">      Bytes.random(value2);</span>
+<span class="source-line-no">661</span><span id="line-661">      Bytes.random(value3);</span>
+<span class="source-line-no">662</span><span id="line-662">      put.addColumn(FAMILY1, qf, value1);</span>
+<span class="source-line-no">663</span><span id="line-663">      put.addColumn(FAMILY2, qf, value2);</span>
+<span class="source-line-no">664</span><span id="line-664">      put.addColumn(FAMILY3, qf, value3);</span>
+<span class="source-line-no">665</span><span id="line-665">      table.put(put);</span>
+<span class="source-line-no">666</span><span id="line-666">      if (i % 10000 == 0) {</span>
+<span class="source-line-no">667</span><span id="line-667">        LOG.info(i + " rows put");</span>
+<span class="source-line-no">668</span><span id="line-668">      }</span>
+<span class="source-line-no">669</span><span id="line-669">    }</span>
+<span class="source-line-no">670</span><span id="line-670">    table.close();</span>
+<span class="source-line-no">671</span><span id="line-671">    conn.close();</span>
+<span class="source-line-no">672</span><span id="line-672">  }</span>
+<span class="source-line-no">673</span><span id="line-673">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html
index 6a86acb9d0c..e1939808f86 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html
@@ -30,146 +30,141 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
 <span class="source-line-no">021</span><span id="line-21">import static org.mockito.ArgumentMatchers.any;</span>
 <span class="source-line-no">022</span><span id="line-22">import static org.mockito.Mockito.mock;</span>
 <span class="source-line-no">023</span><span id="line-23">import static org.mockito.Mockito.when;</span>
 <span class="source-line-no">024</span><span id="line-24"></span>
 <span class="source-line-no">025</span><span id="line-25">import java.io.IOException;</span>
 <span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.security.User;</span>
-<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.testclassification.SmallTests;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.junit.ClassRule;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.junit.Test;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">040</span><span id="line-40"></span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;</span>
-<span class="source-line-no">043</span><span id="line-43"></span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.Get;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">/**</span>
-<span class="source-line-no">052</span><span id="line-52"> * Tests that verify certain RPCs get a higher QoS.</span>
-<span class="source-line-no">053</span><span id="line-53"> */</span>
-<span class="source-line-no">054</span><span id="line-54">@Category({ RegionServerTests.class, SmallTests.class })</span>
-<span class="source-line-no">055</span><span id="line-55">public class TestPriorityRpc {</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">  @ClassRule</span>
-<span class="source-line-no">058</span><span id="line-58">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">059</span><span id="line-59">    HBaseClassTestRule.forClass(TestPriorityRpc.class);</span>
-<span class="source-line-no">060</span><span id="line-60"></span>
-<span class="source-line-no">061</span><span id="line-61">  private static Configuration CONF = HBaseConfiguration.create();</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  @Test</span>
-<span class="source-line-no">064</span><span id="line-64">  public void testQosFunctionForMeta() throws IOException {</span>
-<span class="source-line-no">065</span><span id="line-65">    RequestHeader.Builder headerBuilder = RequestHeader.newBuilder();</span>
-<span class="source-line-no">066</span><span id="line-66">    // create a rpc request that has references to hbase:meta region and also</span>
-<span class="source-line-no">067</span><span id="line-67">    // uses one of the known argument classes (known argument classes are</span>
-<span class="source-line-no">068</span><span id="line-68">    // listed in HRegionServer.QosFunctionImpl.knownArgumentClasses)</span>
-<span class="source-line-no">069</span><span id="line-69">    headerBuilder.setMethodName("foo");</span>
-<span class="source-line-no">070</span><span id="line-70"></span>
-<span class="source-line-no">071</span><span id="line-71">    GetRequest.Builder getRequestBuilder = GetRequest.newBuilder();</span>
-<span class="source-line-no">072</span><span id="line-72">    RegionSpecifier.Builder regionSpecifierBuilder = RegionSpecifier.newBuilder();</span>
-<span class="source-line-no">073</span><span id="line-73">    regionSpecifierBuilder.setType(RegionSpecifierType.REGION_NAME);</span>
-<span class="source-line-no">074</span><span id="line-74">    ByteString name =</span>
-<span class="source-line-no">075</span><span id="line-75">      UnsafeByteOperations.unsafeWrap(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName());</span>
-<span class="source-line-no">076</span><span id="line-76">    regionSpecifierBuilder.setValue(name);</span>
-<span class="source-line-no">077</span><span id="line-77">    RegionSpecifier regionSpecifier = regionSpecifierBuilder.build();</span>
-<span class="source-line-no">078</span><span id="line-78">    getRequestBuilder.setRegion(regionSpecifier);</span>
-<span class="source-line-no">079</span><span id="line-79">    Get.Builder getBuilder = Get.newBuilder();</span>
-<span class="source-line-no">080</span><span id="line-80">    getBuilder.setRow(UnsafeByteOperations.unsafeWrap(Bytes.toBytes("somerow")));</span>
-<span class="source-line-no">081</span><span id="line-81">    getRequestBuilder.setGet(getBuilder.build());</span>
-<span class="source-line-no">082</span><span id="line-82">    GetRequest getRequest = getRequestBuilder.build();</span>
-<span class="source-line-no">083</span><span id="line-83">    RequestHeader header = headerBuilder.build();</span>
-<span class="source-line-no">084</span><span id="line-84">    HRegion mockRegion = mock(HRegion.class);</span>
-<span class="source-line-no">085</span><span id="line-85">    RSRpcServices mockRpc = mock(RSRpcServices.class);</span>
-<span class="source-line-no">086</span><span id="line-86">    when(mockRpc.getConfiguration()).thenReturn(CONF);</span>
-<span class="source-line-no">087</span><span id="line-87">    RegionInfo mockRegionInfo = mock(RegionInfo.class);</span>
-<span class="source-line-no">088</span><span id="line-88">    when(mockRpc.getRegion(any())).thenReturn(mockRegion);</span>
-<span class="source-line-no">089</span><span id="line-89">    when(mockRegion.getRegionInfo()).thenReturn(mockRegionInfo);</span>
-<span class="source-line-no">090</span><span id="line-90">    when(mockRegionInfo.getTable()).thenReturn(RegionInfoBuilder.FIRST_META_REGIONINFO.getTable());</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseConfiguration;</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>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.security.User;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.testclassification.SmallTests;</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.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">038</span><span id="line-38"></span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.Get;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader;</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">/**</span>
+<span class="source-line-no">050</span><span id="line-50"> * Tests that verify certain RPCs get a higher QoS.</span>
+<span class="source-line-no">051</span><span id="line-51"> */</span>
+<span class="source-line-no">052</span><span id="line-52">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">053</span><span id="line-53">@Tag(SmallTests.TAG)</span>
+<span class="source-line-no">054</span><span id="line-54">public class TestPriorityRpc {</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56">  private static Configuration CONF = HBaseConfiguration.create();</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">  @Test</span>
+<span class="source-line-no">059</span><span id="line-59">  public void testQosFunctionForMeta() throws IOException {</span>
+<span class="source-line-no">060</span><span id="line-60">    RequestHeader.Builder headerBuilder = RequestHeader.newBuilder();</span>
+<span class="source-line-no">061</span><span id="line-61">    // create a rpc request that has references to hbase:meta region and also</span>
+<span class="source-line-no">062</span><span id="line-62">    // uses one of the known argument classes (known argument classes are</span>
+<span class="source-line-no">063</span><span id="line-63">    // listed in HRegionServer.QosFunctionImpl.knownArgumentClasses)</span>
+<span class="source-line-no">064</span><span id="line-64">    headerBuilder.setMethodName("foo");</span>
+<span class="source-line-no">065</span><span id="line-65"></span>
+<span class="source-line-no">066</span><span id="line-66">    GetRequest.Builder getRequestBuilder = GetRequest.newBuilder();</span>
+<span class="source-line-no">067</span><span id="line-67">    RegionSpecifier.Builder regionSpecifierBuilder = RegionSpecifier.newBuilder();</span>
+<span class="source-line-no">068</span><span id="line-68">    regionSpecifierBuilder.setType(RegionSpecifierType.REGION_NAME);</span>
+<span class="source-line-no">069</span><span id="line-69">    ByteString name =</span>
+<span class="source-line-no">070</span><span id="line-70">      UnsafeByteOperations.unsafeWrap(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName());</span>
+<span class="source-line-no">071</span><span id="line-71">    regionSpecifierBuilder.setValue(name);</span>
+<span class="source-line-no">072</span><span id="line-72">    RegionSpecifier regionSpecifier = regionSpecifierBuilder.build();</span>
+<span class="source-line-no">073</span><span id="line-73">    getRequestBuilder.setRegion(regionSpecifier);</span>
+<span class="source-line-no">074</span><span id="line-74">    Get.Builder getBuilder = Get.newBuilder();</span>
+<span class="source-line-no">075</span><span id="line-75">    getBuilder.setRow(UnsafeByteOperations.unsafeWrap(Bytes.toBytes("somerow")));</span>
+<span class="source-line-no">076</span><span id="line-76">    getRequestBuilder.setGet(getBuilder.build());</span>
+<span class="source-line-no">077</span><span id="line-77">    GetRequest getRequest = getRequestBuilder.build();</span>
+<span class="source-line-no">078</span><span id="line-78">    RequestHeader header = headerBuilder.build();</span>
+<span class="source-line-no">079</span><span id="line-79">    HRegion mockRegion = mock(HRegion.class);</span>
+<span class="source-line-no">080</span><span id="line-80">    RSRpcServices mockRpc = mock(RSRpcServices.class);</span>
+<span class="source-line-no">081</span><span id="line-81">    when(mockRpc.getConfiguration()).thenReturn(CONF);</span>
+<span class="source-line-no">082</span><span id="line-82">    RegionInfo mockRegionInfo = mock(RegionInfo.class);</span>
+<span class="source-line-no">083</span><span id="line-83">    when(mockRpc.getRegion(any())).thenReturn(mockRegion);</span>
+<span class="source-line-no">084</span><span id="line-84">    when(mockRegion.getRegionInfo()).thenReturn(mockRegionInfo);</span>
+<span class="source-line-no">085</span><span id="line-85">    when(mockRegionInfo.getTable()).thenReturn(RegionInfoBuilder.FIRST_META_REGIONINFO.getTable());</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">    RSAnnotationReadingPriorityFunction qosFunc = new RSAnnotationReadingPriorityFunction(mockRpc);</span>
+<span class="source-line-no">088</span><span id="line-88">    assertEquals(HConstants.SYSTEMTABLE_QOS,</span>
+<span class="source-line-no">089</span><span id="line-89">      qosFunc.getPriority(header, getRequest, createSomeUser()));</span>
+<span class="source-line-no">090</span><span id="line-90">  }</span>
 <span class="source-line-no">091</span><span id="line-91"></span>
-<span class="source-line-no">092</span><span id="line-92">    RSAnnotationReadingPriorityFunction qosFunc = new RSAnnotationReadingPriorityFunction(mockRpc);</span>
-<span class="source-line-no">093</span><span id="line-93">    assertEquals(HConstants.SYSTEMTABLE_QOS,</span>
-<span class="source-line-no">094</span><span id="line-94">      qosFunc.getPriority(header, getRequest, createSomeUser()));</span>
-<span class="source-line-no">095</span><span id="line-95">  }</span>
-<span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">  @Test</span>
-<span class="source-line-no">098</span><span id="line-98">  public void testQosFunctionWithoutKnownArgument() throws IOException {</span>
-<span class="source-line-no">099</span><span id="line-99">    // The request is not using any of the</span>
-<span class="source-line-no">100</span><span id="line-100">    // known argument classes (it uses one random request class)</span>
-<span class="source-line-no">101</span><span id="line-101">    // (known argument classes are listed in</span>
-<span class="source-line-no">102</span><span id="line-102">    // HRegionServer.QosFunctionImpl.knownArgumentClasses)</span>
-<span class="source-line-no">103</span><span id="line-103">    RequestHeader.Builder headerBuilder = RequestHeader.newBuilder();</span>
-<span class="source-line-no">104</span><span id="line-104">    headerBuilder.setMethodName("foo");</span>
-<span class="source-line-no">105</span><span id="line-105">    RequestHeader header = headerBuilder.build();</span>
-<span class="source-line-no">106</span><span id="line-106">    RSRpcServices mockRpc = mock(RSRpcServices.class);</span>
-<span class="source-line-no">107</span><span id="line-107">    when(mockRpc.getConfiguration()).thenReturn(CONF);</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">    RSAnnotationReadingPriorityFunction qosFunc = new RSAnnotationReadingPriorityFunction(mockRpc);</span>
-<span class="source-line-no">110</span><span id="line-110">    assertEquals(HConstants.NORMAL_QOS, qosFunc.getPriority(header, null, createSomeUser()));</span>
-<span class="source-line-no">111</span><span id="line-111">  }</span>
-<span class="source-line-no">112</span><span id="line-112"></span>
-<span class="source-line-no">113</span><span id="line-113">  @Test</span>
-<span class="source-line-no">114</span><span id="line-114">  public void testQosFunctionForScanMethod() throws IOException {</span>
-<span class="source-line-no">115</span><span id="line-115">    RequestHeader.Builder headerBuilder = RequestHeader.newBuilder();</span>
-<span class="source-line-no">116</span><span id="line-116">    headerBuilder.setMethodName("Scan");</span>
-<span class="source-line-no">117</span><span id="line-117">    RequestHeader header = headerBuilder.build();</span>
-<span class="source-line-no">118</span><span id="line-118"></span>
-<span class="source-line-no">119</span><span id="line-119">    // build an empty scan request</span>
-<span class="source-line-no">120</span><span id="line-120">    ScanRequest.Builder scanBuilder = ScanRequest.newBuilder();</span>
-<span class="source-line-no">121</span><span id="line-121">    ScanRequest scanRequest = scanBuilder.build();</span>
-<span class="source-line-no">122</span><span id="line-122">    HRegion mockRegion = mock(HRegion.class);</span>
-<span class="source-line-no">123</span><span id="line-123">    RSRpcServices mockRpc = mock(RSRpcServices.class);</span>
-<span class="source-line-no">124</span><span id="line-124">    when(mockRpc.getConfiguration()).thenReturn(CONF);</span>
-<span class="source-line-no">125</span><span id="line-125">    RegionInfo mockRegionInfo = mock(RegionInfo.class);</span>
-<span class="source-line-no">126</span><span id="line-126">    when(mockRpc.getRegion(any())).thenReturn(mockRegion);</span>
-<span class="source-line-no">127</span><span id="line-127">    when(mockRegion.getRegionInfo()).thenReturn(mockRegionInfo);</span>
-<span class="source-line-no">128</span><span id="line-128">    // make isSystemTable return false</span>
-<span class="source-line-no">129</span><span id="line-129">    when(mockRegionInfo.getTable()).thenReturn(TableName.valueOf("testQosFunctionForScanMethod"));</span>
-<span class="source-line-no">130</span><span id="line-130"></span>
-<span class="source-line-no">131</span><span id="line-131">    RSAnnotationReadingPriorityFunction qosFunc = new RSAnnotationReadingPriorityFunction(mockRpc);</span>
-<span class="source-line-no">132</span><span id="line-132">    final int qos = qosFunc.getPriority(header, scanRequest, createSomeUser());</span>
-<span class="source-line-no">133</span><span id="line-133">    assertEquals(Integer.toString(qos), qos, HConstants.NORMAL_QOS);</span>
-<span class="source-line-no">134</span><span id="line-134"></span>
-<span class="source-line-no">135</span><span id="line-135">    // build a scan request with scannerID</span>
-<span class="source-line-no">136</span><span id="line-136">    scanBuilder = ScanRequest.newBuilder();</span>
-<span class="source-line-no">137</span><span id="line-137">    scanBuilder.setScannerId(12345);</span>
-<span class="source-line-no">138</span><span id="line-138">    scanRequest = scanBuilder.build();</span>
-<span class="source-line-no">139</span><span id="line-139">    // mock out a high priority type handling and see the QoS returned</span>
-<span class="source-line-no">140</span><span id="line-140">    RegionScanner mockRegionScanner = mock(RegionScanner.class);</span>
-<span class="source-line-no">141</span><span id="line-141">    when(mockRpc.getScanner(12345)).thenReturn(mockRegionScanner);</span>
-<span class="source-line-no">142</span><span id="line-142">    when(mockRegionScanner.getRegionInfo()).thenReturn(mockRegionInfo);</span>
-<span class="source-line-no">143</span><span id="line-143">    when(mockRpc.getRegion((RegionSpecifier) any())).thenReturn(mockRegion);</span>
-<span class="source-line-no">144</span><span id="line-144">    when(mockRegion.getRegionInfo()).thenReturn(mockRegionInfo);</span>
-<span class="source-line-no">145</span><span id="line-145">    when(mockRegionInfo.getTable()).thenReturn(RegionInfoBuilder.FIRST_META_REGIONINFO.getTable());</span>
-<span class="source-line-no">146</span><span id="line-146"></span>
-<span class="source-line-no">147</span><span id="line-147">    assertEquals(HConstants.SYSTEMTABLE_QOS,</span>
-<span class="source-line-no">148</span><span id="line-148">      qosFunc.getPriority(header, scanRequest, createSomeUser()));</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150">    // the same as above but with non-meta region</span>
-<span class="source-line-no">151</span><span id="line-151">    // make isSystemTable return false</span>
-<span class="source-line-no">152</span><span id="line-152">    when(mockRegionInfo.getTable()).thenReturn(TableName.valueOf("testQosFunctionForScanMethod"));</span>
-<span class="source-line-no">153</span><span id="line-153">    assertEquals(HConstants.NORMAL_QOS, qosFunc.getPriority(header, scanRequest, createSomeUser()));</span>
-<span class="source-line-no">154</span><span id="line-154">  }</span>
-<span class="source-line-no">155</span><span id="line-155"></span>
-<span class="source-line-no">156</span><span id="line-156">  private static User createSomeUser() {</span>
-<span class="source-line-no">157</span><span id="line-157">    return User.createUserForTesting(CONF, "someuser", new String[] { "somegroup" });</span>
-<span class="source-line-no">158</span><span id="line-158">  }</span>
-<span class="source-line-no">159</span><span id="line-159">}</span>
+<span class="source-line-no">092</span><span id="line-92">  @Test</span>
+<span class="source-line-no">093</span><span id="line-93">  public void testQosFunctionWithoutKnownArgument() throws IOException {</span>
+<span class="source-line-no">094</span><span id="line-94">    // The request is not using any of the</span>
+<span class="source-line-no">095</span><span id="line-95">    // known argument classes (it uses one random request class)</span>
+<span class="source-line-no">096</span><span id="line-96">    // (known argument classes are listed in</span>
+<span class="source-line-no">097</span><span id="line-97">    // HRegionServer.QosFunctionImpl.knownArgumentClasses)</span>
+<span class="source-line-no">098</span><span id="line-98">    RequestHeader.Builder headerBuilder = RequestHeader.newBuilder();</span>
+<span class="source-line-no">099</span><span id="line-99">    headerBuilder.setMethodName("foo");</span>
+<span class="source-line-no">100</span><span id="line-100">    RequestHeader header = headerBuilder.build();</span>
+<span class="source-line-no">101</span><span id="line-101">    RSRpcServices mockRpc = mock(RSRpcServices.class);</span>
+<span class="source-line-no">102</span><span id="line-102">    when(mockRpc.getConfiguration()).thenReturn(CONF);</span>
+<span class="source-line-no">103</span><span id="line-103"></span>
+<span class="source-line-no">104</span><span id="line-104">    RSAnnotationReadingPriorityFunction qosFunc = new RSAnnotationReadingPriorityFunction(mockRpc);</span>
+<span class="source-line-no">105</span><span id="line-105">    assertEquals(HConstants.NORMAL_QOS, qosFunc.getPriority(header, null, createSomeUser()));</span>
+<span class="source-line-no">106</span><span id="line-106">  }</span>
+<span class="source-line-no">107</span><span id="line-107"></span>
+<span class="source-line-no">108</span><span id="line-108">  @Test</span>
+<span class="source-line-no">109</span><span id="line-109">  public void testQosFunctionForScanMethod() throws IOException {</span>
+<span class="source-line-no">110</span><span id="line-110">    RequestHeader.Builder headerBuilder = RequestHeader.newBuilder();</span>
+<span class="source-line-no">111</span><span id="line-111">    headerBuilder.setMethodName("Scan");</span>
+<span class="source-line-no">112</span><span id="line-112">    RequestHeader header = headerBuilder.build();</span>
+<span class="source-line-no">113</span><span id="line-113"></span>
+<span class="source-line-no">114</span><span id="line-114">    // build an empty scan request</span>
+<span class="source-line-no">115</span><span id="line-115">    ScanRequest.Builder scanBuilder = ScanRequest.newBuilder();</span>
+<span class="source-line-no">116</span><span id="line-116">    ScanRequest scanRequest = scanBuilder.build();</span>
+<span class="source-line-no">117</span><span id="line-117">    HRegion mockRegion = mock(HRegion.class);</span>
+<span class="source-line-no">118</span><span id="line-118">    RSRpcServices mockRpc = mock(RSRpcServices.class);</span>
+<span class="source-line-no">119</span><span id="line-119">    when(mockRpc.getConfiguration()).thenReturn(CONF);</span>
+<span class="source-line-no">120</span><span id="line-120">    RegionInfo mockRegionInfo = mock(RegionInfo.class);</span>
+<span class="source-line-no">121</span><span id="line-121">    when(mockRpc.getRegion(any())).thenReturn(mockRegion);</span>
+<span class="source-line-no">122</span><span id="line-122">    when(mockRegion.getRegionInfo()).thenReturn(mockRegionInfo);</span>
+<span class="source-line-no">123</span><span id="line-123">    // make isSystemTable return false</span>
+<span class="source-line-no">124</span><span id="line-124">    when(mockRegionInfo.getTable()).thenReturn(TableName.valueOf("testQosFunctionForScanMethod"));</span>
+<span class="source-line-no">125</span><span id="line-125"></span>
+<span class="source-line-no">126</span><span id="line-126">    RSAnnotationReadingPriorityFunction qosFunc = new RSAnnotationReadingPriorityFunction(mockRpc);</span>
+<span class="source-line-no">127</span><span id="line-127">    final int qos = qosFunc.getPriority(header, scanRequest, createSomeUser());</span>
+<span class="source-line-no">128</span><span id="line-128">    assertEquals(HConstants.NORMAL_QOS, qos, Integer.toString(qos));</span>
+<span class="source-line-no">129</span><span id="line-129"></span>
+<span class="source-line-no">130</span><span id="line-130">    // build a scan request with scannerID</span>
+<span class="source-line-no">131</span><span id="line-131">    scanBuilder = ScanRequest.newBuilder();</span>
+<span class="source-line-no">132</span><span id="line-132">    scanBuilder.setScannerId(12345);</span>
+<span class="source-line-no">133</span><span id="line-133">    scanRequest = scanBuilder.build();</span>
+<span class="source-line-no">134</span><span id="line-134">    // mock out a high priority type handling and see the QoS returned</span>
+<span class="source-line-no">135</span><span id="line-135">    RegionScanner mockRegionScanner = mock(RegionScanner.class);</span>
+<span class="source-line-no">136</span><span id="line-136">    when(mockRpc.getScanner(12345)).thenReturn(mockRegionScanner);</span>
+<span class="source-line-no">137</span><span id="line-137">    when(mockRegionScanner.getRegionInfo()).thenReturn(mockRegionInfo);</span>
+<span class="source-line-no">138</span><span id="line-138">    when(mockRpc.getRegion((RegionSpecifier) any())).thenReturn(mockRegion);</span>
+<span class="source-line-no">139</span><span id="line-139">    when(mockRegion.getRegionInfo()).thenReturn(mockRegionInfo);</span>
+<span class="source-line-no">140</span><span id="line-140">    when(mockRegionInfo.getTable()).thenReturn(RegionInfoBuilder.FIRST_META_REGIONINFO.getTable());</span>
+<span class="source-line-no">141</span><span id="line-141"></span>
+<span class="source-line-no">142</span><span id="line-142">    assertEquals(HConstants.SYSTEMTABLE_QOS,</span>
+<span class="source-line-no">143</span><span id="line-143">      qosFunc.getPriority(header, scanRequest, createSomeUser()));</span>
+<span class="source-line-no">144</span><span id="line-144"></span>
+<span class="source-line-no">145</span><span id="line-145">    // the same as above but with non-meta region</span>
+<span class="source-line-no">146</span><span id="line-146">    // make isSystemTable return false</span>
+<span class="source-line-no">147</span><span id="line-147">    when(mockRegionInfo.getTable()).thenReturn(TableName.valueOf("testQosFunctionForScanMethod"));</span>
+<span class="source-line-no">148</span><span id="line-148">    assertEquals(HConstants.NORMAL_QOS, qosFunc.getPriority(header, scanRequest, createSomeUser()));</span>
+<span class="source-line-no">149</span><span id="line-149">  }</span>
+<span class="source-line-no">150</span><span id="line-150"></span>
+<span class="source-line-no">151</span><span id="line-151">  private static User createSomeUser() {</span>
+<span class="source-line-no">152</span><span id="line-152">    return User.createUserForTesting(CONF, "someuser", new String[] { "somegroup" });</span>
+<span class="source-line-no">153</span><span id="line-153">  }</span>
+<span class="source-line-no">154</span><span id="line-154">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html
index c551a9e9094..05636cc06ac 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSChoresScheduled.html
@@ -30,97 +30,94 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
-<span class="source-line-no">020</span><span id="line-20">import java.lang.reflect.Field;</span>
-<span class="source-line-no">021</span><span id="line-21">import org.apache.hadoop.hbase.ExecutorStatusChore;</span>
-<span class="source-line-no">022</span><span id="line-22">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.ScheduledChore;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.StartTestingClusterOption;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.junit.AfterClass;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.junit.Assert;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.junit.BeforeClass;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.junit.ClassRule;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.junit.Test;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.junit.experimental.categories.Category;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertNotNull;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.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.lang.reflect.Field;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.ExecutorStatusChore;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.ScheduledChore;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.StartTestingClusterOption;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.junit.jupiter.api.Test;</span>
 <span class="source-line-no">034</span><span id="line-34"></span>
 <span class="source-line-no">035</span><span id="line-35">/**</span>
 <span class="source-line-no">036</span><span id="line-36"> * Tests to validate if HRegionServer default chores are scheduled</span>
 <span class="source-line-no">037</span><span id="line-37"> */</span>
-<span class="source-line-no">038</span><span id="line-38">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">039</span><span id="line-39">public class TestRSChoresScheduled {</span>
-<span class="source-line-no">040</span><span id="line-40"></span>
-<span class="source-line-no">041</span><span id="line-41">  @ClassRule</span>
-<span class="source-line-no">042</span><span id="line-42">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">043</span><span id="line-43">    HBaseClassTestRule.forClass(TestRSChoresScheduled.class);</span>
-<span class="source-line-no">044</span><span id="line-44"></span>
-<span class="source-line-no">045</span><span id="line-45">  private static HRegionServer hRegionServer;</span>
-<span class="source-line-no">046</span><span id="line-46"></span>
-<span class="source-line-no">047</span><span id="line-47">  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">048</span><span id="line-48"></span>
-<span class="source-line-no">049</span><span id="line-49">  @BeforeClass</span>
-<span class="source-line-no">050</span><span id="line-50">  public static void setUp() throws Exception {</span>
-<span class="source-line-no">051</span><span id="line-51">    UTIL.startMiniCluster(StartTestingClusterOption.builder().numRegionServers(1).build());</span>
-<span class="source-line-no">052</span><span id="line-52">    hRegionServer = UTIL.getMiniHBaseCluster().getRegionServer(0);</span>
-<span class="source-line-no">053</span><span id="line-53">  }</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">    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">  private static class TestChoreField&lt;E extends ScheduledChore&gt; {</span>
-<span class="source-line-no">061</span><span id="line-61"></span>
-<span class="source-line-no">062</span><span id="line-62">    private E getChoreObj(String fieldName) throws NoSuchFieldException, IllegalAccessException {</span>
-<span class="source-line-no">063</span><span id="line-63">      Field hRegionServerField = HRegionServer.class.getDeclaredField(fieldName);</span>
-<span class="source-line-no">064</span><span id="line-64">      hRegionServerField.setAccessible(true);</span>
-<span class="source-line-no">065</span><span id="line-65">      E choreFieldVal = (E) hRegionServerField.get(hRegionServer);</span>
-<span class="source-line-no">066</span><span id="line-66">      return choreFieldVal;</span>
-<span class="source-line-no">067</span><span id="line-67">    }</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">    private void testIfChoreScheduled(E choreObj) {</span>
-<span class="source-line-no">070</span><span id="line-70">      Assert.assertNotNull(choreObj);</span>
-<span class="source-line-no">071</span><span id="line-71">      Assert.assertTrue(hRegionServer.getChoreService().isChoreScheduled(choreObj));</span>
-<span class="source-line-no">072</span><span id="line-72">    }</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">  }</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  @Test</span>
-<span class="source-line-no">077</span><span id="line-77">  public void testDefaultScheduledChores() throws Exception {</span>
-<span class="source-line-no">078</span><span id="line-78">    // test if compactedHFilesDischarger chore is scheduled by default in HRegionServer init</span>
-<span class="source-line-no">079</span><span id="line-79">    TestChoreField&lt;CompactedHFilesDischarger&gt; compactedHFilesDischargerTestChoreField =</span>
-<span class="source-line-no">080</span><span id="line-80">      new TestChoreField&lt;&gt;();</span>
-<span class="source-line-no">081</span><span id="line-81">    CompactedHFilesDischarger compactedHFilesDischarger =</span>
-<span class="source-line-no">082</span><span id="line-82">      compactedHFilesDischargerTestChoreField.getChoreObj("compactedFileDischarger");</span>
-<span class="source-line-no">083</span><span id="line-83">    compactedHFilesDischargerTestChoreField.testIfChoreScheduled(compactedHFilesDischarger);</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">    // test if compactionChecker chore is scheduled by default in HRegionServer init</span>
-<span class="source-line-no">086</span><span id="line-86">    TestChoreField&lt;ScheduledChore&gt; compactionCheckerTestChoreField = new TestChoreField&lt;&gt;();</span>
-<span class="source-line-no">087</span><span id="line-87">    ScheduledChore compactionChecker =</span>
-<span class="source-line-no">088</span><span id="line-88">      compactionCheckerTestChoreField.getChoreObj("compactionChecker");</span>
-<span class="source-line-no">089</span><span id="line-89">    compactionCheckerTestChoreField.testIfChoreScheduled(compactionChecker);</span>
-<span class="source-line-no">090</span><span id="line-90"></span>
-<span class="source-line-no">091</span><span id="line-91">    // test if periodicFlusher chore is scheduled by default in HRegionServer init</span>
-<span class="source-line-no">092</span><span id="line-92">    TestChoreField&lt;ScheduledChore&gt; periodicMemstoreFlusherTestChoreField = new TestChoreField&lt;&gt;();</span>
-<span class="source-line-no">093</span><span id="line-93">    ScheduledChore periodicFlusher =</span>
-<span class="source-line-no">094</span><span id="line-94">      periodicMemstoreFlusherTestChoreField.getChoreObj("periodicFlusher");</span>
-<span class="source-line-no">095</span><span id="line-95">    periodicMemstoreFlusherTestChoreField.testIfChoreScheduled(periodicFlusher);</span>
-<span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">    // test if nonceManager chore is scheduled by default in HRegionServer init</span>
-<span class="source-line-no">098</span><span id="line-98">    TestChoreField&lt;ScheduledChore&gt; nonceManagerTestChoreField = new TestChoreField&lt;&gt;();</span>
-<span class="source-line-no">099</span><span id="line-99">    ScheduledChore nonceManagerChore = nonceManagerTestChoreField.getChoreObj("nonceManagerChore");</span>
-<span class="source-line-no">100</span><span id="line-100">    nonceManagerTestChoreField.testIfChoreScheduled(nonceManagerChore);</span>
-<span class="source-line-no">101</span><span id="line-101"></span>
-<span class="source-line-no">102</span><span id="line-102">    // test if executorStatusChore chore is scheduled by default in HRegionServer init</span>
-<span class="source-line-no">103</span><span id="line-103">    TestChoreField&lt;ExecutorStatusChore&gt; executorStatusChoreTestChoreField = new TestChoreField&lt;&gt;();</span>
-<span class="source-line-no">104</span><span id="line-104">    ExecutorStatusChore executorStatusChore =</span>
-<span class="source-line-no">105</span><span id="line-105">      executorStatusChoreTestChoreField.getChoreObj("executorStatusChore");</span>
-<span class="source-line-no">106</span><span id="line-106">    executorStatusChoreTestChoreField.testIfChoreScheduled(executorStatusChore);</span>
-<span class="source-line-no">107</span><span id="line-107"></span>
-<span class="source-line-no">108</span><span id="line-108">  }</span>
-<span class="source-line-no">109</span><span id="line-109"></span>
-<span class="source-line-no">110</span><span id="line-110">}</span>
+<span class="source-line-no">038</span><span id="line-38">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">039</span><span id="line-39">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">040</span><span id="line-40">public class TestRSChoresScheduled {</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span id="line-42">  private static HRegionServer hRegionServer;</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">  @BeforeAll</span>
+<span class="source-line-no">047</span><span id="line-47">  public static void setUp() throws Exception {</span>
+<span class="source-line-no">048</span><span id="line-48">    UTIL.startMiniCluster(StartTestingClusterOption.builder().numRegionServers(1).build());</span>
+<span class="source-line-no">049</span><span id="line-49">    hRegionServer = UTIL.getMiniHBaseCluster().getRegionServer(0);</span>
+<span class="source-line-no">050</span><span id="line-50">  }</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">    UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">055</span><span id="line-55">  }</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57">  private static class TestChoreField&lt;E extends ScheduledChore&gt; {</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59">    private E getChoreObj(String fieldName) throws NoSuchFieldException, IllegalAccessException {</span>
+<span class="source-line-no">060</span><span id="line-60">      Field hRegionServerField = HRegionServer.class.getDeclaredField(fieldName);</span>
+<span class="source-line-no">061</span><span id="line-61">      hRegionServerField.setAccessible(true);</span>
+<span class="source-line-no">062</span><span id="line-62">      E choreFieldVal = (E) hRegionServerField.get(hRegionServer);</span>
+<span class="source-line-no">063</span><span id="line-63">      return choreFieldVal;</span>
+<span class="source-line-no">064</span><span id="line-64">    }</span>
+<span class="source-line-no">065</span><span id="line-65"></span>
+<span class="source-line-no">066</span><span id="line-66">    private void testIfChoreScheduled(E choreObj) {</span>
+<span class="source-line-no">067</span><span id="line-67">      assertNotNull(choreObj);</span>
+<span class="source-line-no">068</span><span id="line-68">      assertTrue(hRegionServer.getChoreService().isChoreScheduled(choreObj));</span>
+<span class="source-line-no">069</span><span id="line-69">    }</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">  }</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</span>
+<span class="source-line-no">074</span><span id="line-74">  public void testDefaultScheduledChores() throws Exception {</span>
+<span class="source-line-no">075</span><span id="line-75">    // test if compactedHFilesDischarger chore is scheduled by default in HRegionServer init</span>
+<span class="source-line-no">076</span><span id="line-76">    TestChoreField&lt;CompactedHFilesDischarger&gt; compactedHFilesDischargerTestChoreField =</span>
+<span class="source-line-no">077</span><span id="line-77">      new TestChoreField&lt;&gt;();</span>
+<span class="source-line-no">078</span><span id="line-78">    CompactedHFilesDischarger compactedHFilesDischarger =</span>
+<span class="source-line-no">079</span><span id="line-79">      compactedHFilesDischargerTestChoreField.getChoreObj("compactedFileDischarger");</span>
+<span class="source-line-no">080</span><span id="line-80">    compactedHFilesDischargerTestChoreField.testIfChoreScheduled(compactedHFilesDischarger);</span>
+<span class="source-line-no">081</span><span id="line-81"></span>
+<span class="source-line-no">082</span><span id="line-82">    // test if compactionChecker chore is scheduled by default in HRegionServer init</span>
+<span class="source-line-no">083</span><span id="line-83">    TestChoreField&lt;ScheduledChore&gt; compactionCheckerTestChoreField = new TestChoreField&lt;&gt;();</span>
+<span class="source-line-no">084</span><span id="line-84">    ScheduledChore compactionChecker =</span>
+<span class="source-line-no">085</span><span id="line-85">      compactionCheckerTestChoreField.getChoreObj("compactionChecker");</span>
+<span class="source-line-no">086</span><span id="line-86">    compactionCheckerTestChoreField.testIfChoreScheduled(compactionChecker);</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88">    // test if periodicFlusher chore is scheduled by default in HRegionServer init</span>
+<span class="source-line-no">089</span><span id="line-89">    TestChoreField&lt;ScheduledChore&gt; periodicMemstoreFlusherTestChoreField = new TestChoreField&lt;&gt;();</span>
+<span class="source-line-no">090</span><span id="line-90">    ScheduledChore periodicFlusher =</span>
+<span class="source-line-no">091</span><span id="line-91">      periodicMemstoreFlusherTestChoreField.getChoreObj("periodicFlusher");</span>
+<span class="source-line-no">092</span><span id="line-92">    periodicMemstoreFlusherTestChoreField.testIfChoreScheduled(periodicFlusher);</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 if nonceManager chore is scheduled by default in HRegionServer init</span>
+<span class="source-line-no">095</span><span id="line-95">    TestChoreField&lt;ScheduledChore&gt; nonceManagerTestChoreField = new TestChoreField&lt;&gt;();</span>
+<span class="source-line-no">096</span><span id="line-96">    ScheduledChore nonceManagerChore = nonceManagerTestChoreField.getChoreObj("nonceManagerChore");</span>
+<span class="source-line-no">097</span><span id="line-97">    nonceManagerTestChoreField.testIfChoreScheduled(nonceManagerChore);</span>
+<span class="source-line-no">098</span><span id="line-98"></span>
+<span class="source-line-no">099</span><span id="line-99">    // test if executorStatusChore chore is scheduled by default in HRegionServer init</span>
+<span class="source-line-no">100</span><span id="line-100">    TestChoreField&lt;ExecutorStatusChore&gt; executorStatusChoreTestChoreField = new TestChoreField&lt;&gt;();</span>
+<span class="source-line-no">101</span><span id="line-101">    ExecutorStatusChore executorStatusChore =</span>
+<span class="source-line-no">102</span><span id="line-102">      executorStatusChoreTestChoreField.getChoreObj("executorStatusChore");</span>
+<span class="source-line-no">103</span><span id="line-103">    executorStatusChoreTestChoreField.testIfChoreScheduled(executorStatusChore);</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">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html
index fbe7f3131bc..b60dd115660 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html
@@ -30,8 +30,8 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.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.List;</span>
@@ -39,196 +39,186 @@
 <span class="source-line-no">026</span><span id="line-26">import java.util.concurrent.atomic.AtomicBoolean;</span>
 <span class="source-line-no">027</span><span id="line-27">import java.util.concurrent.atomic.AtomicReference;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.LocalHBaseCluster;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.ServerName;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.SingleProcessHBaseCluster;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.master.HMaster;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.master.ServerListener;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.master.ServerManager;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.util.Threads;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.junit.ClassRule;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.junit.Ignore;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.junit.Rule;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.junit.Test;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.junit.rules.TestName;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.slf4j.Logger;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">052</span><span id="line-52"></span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">/**</span>
-<span class="source-line-no">056</span><span id="line-56"> * Tests that a regionserver that dies after reporting for duty gets removed from list of online</span>
-<span class="source-line-no">057</span><span id="line-57"> * regions. See HBASE-9593.</span>
-<span class="source-line-no">058</span><span id="line-58"> */</span>
-<span class="source-line-no">059</span><span id="line-59">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">060</span><span id="line-60">@Ignore("See HBASE-19515")</span>
-<span class="source-line-no">061</span><span id="line-61">public class TestRSKilledWhenInitializing {</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  @ClassRule</span>
-<span class="source-line-no">064</span><span id="line-64">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">065</span><span id="line-65">    HBaseClassTestRule.forClass(TestRSKilledWhenInitializing.class);</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67">  private static final Logger LOG = LoggerFactory.getLogger(TestRSKilledWhenInitializing.class);</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">  @Rule</span>
-<span class="source-line-no">070</span><span id="line-70">  public TestName testName = new TestName();</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">  // This boolean needs to be globally available. It is used below in our</span>
-<span class="source-line-no">073</span><span id="line-73">  // mocked up regionserver so it knows when to die.</span>
-<span class="source-line-no">074</span><span id="line-74">  private static AtomicBoolean masterActive = new AtomicBoolean(false);</span>
-<span class="source-line-no">075</span><span id="line-75">  // Ditto for this variable. It also is used in the mocked regionserver class.</span>
-<span class="source-line-no">076</span><span id="line-76">  private static final AtomicReference&lt;ServerName&gt; killedRS = new AtomicReference&lt;ServerName&gt;();</span>
-<span class="source-line-no">077</span><span id="line-77"></span>
-<span class="source-line-no">078</span><span id="line-78">  private static final int NUM_MASTERS = 1;</span>
-<span class="source-line-no">079</span><span id="line-79">  private static final int NUM_RS = 2;</span>
-<span class="source-line-no">080</span><span id="line-80"></span>
-<span class="source-line-no">081</span><span id="line-81">  /**</span>
-<span class="source-line-no">082</span><span id="line-82">   * Test verifies whether a region server is removed from online servers list in master if it went</span>
-<span class="source-line-no">083</span><span id="line-83">   * down after registering with master. Test will TIMEOUT if an error!!!!</span>
-<span class="source-line-no">084</span><span id="line-84">   */</span>
-<span class="source-line-no">085</span><span id="line-85">  @Test</span>
-<span class="source-line-no">086</span><span id="line-86">  public void testRSTerminationAfterRegisteringToMasterBeforeCreatingEphemeralNode()</span>
-<span class="source-line-no">087</span><span id="line-87">    throws Exception {</span>
-<span class="source-line-no">088</span><span id="line-88">    // Create config to use for this cluster</span>
-<span class="source-line-no">089</span><span id="line-89">    Configuration conf = HBaseConfiguration.create();</span>
-<span class="source-line-no">090</span><span id="line-90">    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, 1);</span>
-<span class="source-line-no">091</span><span id="line-91">    // Start the cluster</span>
-<span class="source-line-no">092</span><span id="line-92">    final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil(conf);</span>
-<span class="source-line-no">093</span><span id="line-93">    TEST_UTIL.startMiniDFSCluster(3);</span>
-<span class="source-line-no">094</span><span id="line-94">    TEST_UTIL.startMiniZKCluster();</span>
-<span class="source-line-no">095</span><span id="line-95">    TEST_UTIL.createRootDir();</span>
-<span class="source-line-no">096</span><span id="line-96">    final LocalHBaseCluster cluster = new LocalHBaseCluster(conf, NUM_MASTERS, NUM_RS,</span>
-<span class="source-line-no">097</span><span id="line-97">      HMaster.class, RegisterAndDieRegionServer.class);</span>
-<span class="source-line-no">098</span><span id="line-98">    final MasterThread master = startMaster(cluster.getMasters().get(0));</span>
-<span class="source-line-no">099</span><span id="line-99">    try {</span>
-<span class="source-line-no">100</span><span id="line-100">      // Master is up waiting on RegionServers to check in. Now start RegionServers.</span>
-<span class="source-line-no">101</span><span id="line-101">      for (int i = 0; i &lt; NUM_RS; i++) {</span>
-<span class="source-line-no">102</span><span id="line-102">        cluster.getRegionServers().get(i).start();</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.LocalHBaseCluster;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.ServerName;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.SingleProcessHBaseCluster;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.master.HMaster;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.master.ServerListener;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.master.ServerManager;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.util.Threads;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.junit.jupiter.api.Disabled;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.slf4j.Logger;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse;</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">/**</span>
+<span class="source-line-no">052</span><span id="line-52"> * Tests that a regionserver that dies after reporting for duty gets removed from list of online</span>
+<span class="source-line-no">053</span><span id="line-53"> * regions. See HBASE-9593.</span>
+<span class="source-line-no">054</span><span id="line-54"> */</span>
+<span class="source-line-no">055</span><span id="line-55">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">056</span><span id="line-56">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">057</span><span id="line-57">@Disabled("See HBASE-19515")</span>
+<span class="source-line-no">058</span><span id="line-58">public class TestRSKilledWhenInitializing {</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  private static final Logger LOG = LoggerFactory.getLogger(TestRSKilledWhenInitializing.class);</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">  // This boolean needs to be globally available. It is used below in our</span>
+<span class="source-line-no">063</span><span id="line-63">  // mocked up regionserver so it knows when to die.</span>
+<span class="source-line-no">064</span><span id="line-64">  private static AtomicBoolean masterActive = new AtomicBoolean(false);</span>
+<span class="source-line-no">065</span><span id="line-65">  // Ditto for this variable. It also is used in the mocked regionserver class.</span>
+<span class="source-line-no">066</span><span id="line-66">  private static final AtomicReference&lt;ServerName&gt; killedRS = new AtomicReference&lt;ServerName&gt;();</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">  private static final int NUM_MASTERS = 1;</span>
+<span class="source-line-no">069</span><span id="line-69">  private static final int NUM_RS = 2;</span>
+<span class="source-line-no">070</span><span id="line-70"></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 verifies whether a region server is removed from online servers list in master if it went</span>
+<span class="source-line-no">073</span><span id="line-73">   * down after registering with master. Test will TIMEOUT if an error!!!!</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</span>
+<span class="source-line-no">076</span><span id="line-76">  public void testRSTerminationAfterRegisteringToMasterBeforeCreatingEphemeralNode()</span>
+<span class="source-line-no">077</span><span id="line-77">    throws Exception {</span>
+<span class="source-line-no">078</span><span id="line-78">    // Create config to use for this cluster</span>
+<span class="source-line-no">079</span><span id="line-79">    Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">080</span><span id="line-80">    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, 1);</span>
+<span class="source-line-no">081</span><span id="line-81">    // Start the cluster</span>
+<span class="source-line-no">082</span><span id="line-82">    final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil(conf);</span>
+<span class="source-line-no">083</span><span id="line-83">    TEST_UTIL.startMiniDFSCluster(3);</span>
+<span class="source-line-no">084</span><span id="line-84">    TEST_UTIL.startMiniZKCluster();</span>
+<span class="source-line-no">085</span><span id="line-85">    TEST_UTIL.createRootDir();</span>
+<span class="source-line-no">086</span><span id="line-86">    final LocalHBaseCluster cluster = new LocalHBaseCluster(conf, NUM_MASTERS, NUM_RS,</span>
+<span class="source-line-no">087</span><span id="line-87">      HMaster.class, RegisterAndDieRegionServer.class);</span>
+<span class="source-line-no">088</span><span id="line-88">    final MasterThread master = startMaster(cluster.getMasters().get(0));</span>
+<span class="source-line-no">089</span><span id="line-89">    try {</span>
+<span class="source-line-no">090</span><span id="line-90">      // Master is up waiting on RegionServers to check in. Now start RegionServers.</span>
+<span class="source-line-no">091</span><span id="line-91">      for (int i = 0; i &lt; NUM_RS; i++) {</span>
+<span class="source-line-no">092</span><span id="line-92">        cluster.getRegionServers().get(i).start();</span>
+<span class="source-line-no">093</span><span id="line-93">      }</span>
+<span class="source-line-no">094</span><span id="line-94">      // Expected total regionservers depends on whether Master can host regions or not.</span>
+<span class="source-line-no">095</span><span id="line-95">      int expectedTotalRegionServers = NUM_RS;</span>
+<span class="source-line-no">096</span><span id="line-96">      List&lt;ServerName&gt; onlineServersList = null;</span>
+<span class="source-line-no">097</span><span id="line-97">      do {</span>
+<span class="source-line-no">098</span><span id="line-98">        onlineServersList = master.getMaster().getServerManager().getOnlineServersList();</span>
+<span class="source-line-no">099</span><span id="line-99">      } while (onlineServersList.size() &lt; expectedTotalRegionServers);</span>
+<span class="source-line-no">100</span><span id="line-100">      // Wait until killedRS is set. Means RegionServer is starting to go down.</span>
+<span class="source-line-no">101</span><span id="line-101">      while (killedRS.get() == null) {</span>
+<span class="source-line-no">102</span><span id="line-102">        Threads.sleep(1);</span>
 <span class="source-line-no">103</span><span id="line-103">      }</span>
-<span class="source-line-no">104</span><span id="line-104">      // Expected total regionservers depends on whether Master can host regions or not.</span>
-<span class="source-line-no">105</span><span id="line-105">      int expectedTotalRegionServers = NUM_RS;</span>
-<span class="source-line-no">106</span><span id="line-106">      List&lt;ServerName&gt; onlineServersList = null;</span>
-<span class="source-line-no">107</span><span id="line-107">      do {</span>
-<span class="source-line-no">108</span><span id="line-108">        onlineServersList = master.getMaster().getServerManager().getOnlineServersList();</span>
-<span class="source-line-no">109</span><span id="line-109">      } while (onlineServersList.size() &lt; expectedTotalRegionServers);</span>
-<span class="source-line-no">110</span><span id="line-110">      // Wait until killedRS is set. Means RegionServer is starting to go down.</span>
-<span class="source-line-no">111</span><span id="line-111">      while (killedRS.get() == null) {</span>
-<span class="source-line-no">112</span><span id="line-112">        Threads.sleep(1);</span>
-<span class="source-line-no">113</span><span id="line-113">      }</span>
-<span class="source-line-no">114</span><span id="line-114">      // Wait on the RegionServer to fully die.</span>
-<span class="source-line-no">115</span><span id="line-115">      while (cluster.getLiveRegionServers().size() &gt;= expectedTotalRegionServers) {</span>
-<span class="source-line-no">116</span><span id="line-116">        Threads.sleep(1);</span>
-<span class="source-line-no">117</span><span id="line-117">      }</span>
-<span class="source-line-no">118</span><span id="line-118">      // Make sure Master is fully up before progressing. Could take a while if regions</span>
-<span class="source-line-no">119</span><span id="line-119">      // being reassigned.</span>
-<span class="source-line-no">120</span><span id="line-120">      while (!master.getMaster().isInitialized()) {</span>
-<span class="source-line-no">121</span><span id="line-121">        Threads.sleep(1);</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">      // Now in steady state. How many regions open? Master should have too many regionservers</span>
-<span class="source-line-no">125</span><span id="line-125">      // showing still. The downed RegionServer should still be showing as registered.</span>
-<span class="source-line-no">126</span><span id="line-126">      assertTrue(master.getMaster().getServerManager().isServerOnline(killedRS.get()));</span>
-<span class="source-line-no">127</span><span id="line-127">      // Find non-meta region (namespace?) and assign to the killed server. That'll trigger cleanup.</span>
-<span class="source-line-no">128</span><span id="line-128">      Map&lt;RegionInfo, ServerName&gt; assignments = null;</span>
-<span class="source-line-no">129</span><span id="line-129">      do {</span>
-<span class="source-line-no">130</span><span id="line-130">        assignments =</span>
-<span class="source-line-no">131</span><span id="line-131">          master.getMaster().getAssignmentManager().getRegionStates().getRegionAssignments();</span>
-<span class="source-line-no">132</span><span id="line-132">      } while (assignments == null || assignments.size() &lt; 2);</span>
-<span class="source-line-no">133</span><span id="line-133">      RegionInfo hri = null;</span>
-<span class="source-line-no">134</span><span id="line-134">      for (Map.Entry&lt;RegionInfo, ServerName&gt; e : assignments.entrySet()) {</span>
-<span class="source-line-no">135</span><span id="line-135">        if (e.getKey().isMetaRegion()) continue;</span>
-<span class="source-line-no">136</span><span id="line-136">        hri = e.getKey();</span>
-<span class="source-line-no">137</span><span id="line-137">        break;</span>
-<span class="source-line-no">138</span><span id="line-138">      }</span>
-<span class="source-line-no">139</span><span id="line-139">      // Try moving region to the killed server. It will fail. As by-product, we will</span>
-<span class="source-line-no">140</span><span id="line-140">      // remove the RS from Master online list because no corresponding znode.</span>
-<span class="source-line-no">141</span><span id="line-141">      assertEquals(expectedTotalRegionServers,</span>
-<span class="source-line-no">142</span><span id="line-142">        master.getMaster().getServerManager().getOnlineServersList().size());</span>
-<span class="source-line-no">143</span><span id="line-143">      LOG.info("Move " + hri.getEncodedName() + " to " + killedRS.get());</span>
-<span class="source-line-no">144</span><span id="line-144">      master.getMaster().move(hri.getEncodedNameAsBytes(),</span>
-<span class="source-line-no">145</span><span id="line-145">        Bytes.toBytes(killedRS.get().toString()));</span>
-<span class="source-line-no">146</span><span id="line-146"></span>
-<span class="source-line-no">147</span><span id="line-147">      // TODO: This test could do more to verify fix. It could create a table</span>
-<span class="source-line-no">148</span><span id="line-148">      // and do round-robin assign. It should fail if zombie RS. HBASE-19515.</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150">      // Wait until the RS no longer shows as registered in Master.</span>
-<span class="source-line-no">151</span><span id="line-151">      while (onlineServersList.size() &gt; (NUM_RS + 1)) {</span>
-<span class="source-line-no">152</span><span id="line-152">        Thread.sleep(100);</span>
-<span class="source-line-no">153</span><span id="line-153">        onlineServersList = master.getMaster().getServerManager().getOnlineServersList();</span>
-<span class="source-line-no">154</span><span id="line-154">      }</span>
-<span class="source-line-no">155</span><span id="line-155">    } finally {</span>
-<span class="source-line-no">156</span><span id="line-156">      // Shutdown is messy with complaints about fs being closed. Why? TODO.</span>
-<span class="source-line-no">157</span><span id="line-157">      cluster.shutdown();</span>
-<span class="source-line-no">158</span><span id="line-158">      cluster.join();</span>
-<span class="source-line-no">159</span><span id="line-159">      TEST_UTIL.shutdownMiniDFSCluster();</span>
-<span class="source-line-no">160</span><span id="line-160">      TEST_UTIL.shutdownMiniZKCluster();</span>
-<span class="source-line-no">161</span><span id="line-161">      TEST_UTIL.cleanupTestDir();</span>
-<span class="source-line-no">162</span><span id="line-162">    }</span>
-<span class="source-line-no">163</span><span id="line-163">  }</span>
-<span class="source-line-no">164</span><span id="line-164"></span>
-<span class="source-line-no">165</span><span id="line-165">  /**</span>
-<span class="source-line-no">166</span><span id="line-166">   * Start Master. Get as far as the state where Master is waiting on RegionServers to check in,</span>
-<span class="source-line-no">167</span><span id="line-167">   * then return.</span>
-<span class="source-line-no">168</span><span id="line-168">   */</span>
-<span class="source-line-no">169</span><span id="line-169">  private MasterThread startMaster(MasterThread master) {</span>
-<span class="source-line-no">170</span><span id="line-170">    master.start();</span>
-<span class="source-line-no">171</span><span id="line-171">    // It takes a while until ServerManager creation to happen inside Master startup.</span>
-<span class="source-line-no">172</span><span id="line-172">    while (master.getMaster().getServerManager() == null) {</span>
-<span class="source-line-no">173</span><span id="line-173">      continue;</span>
-<span class="source-line-no">174</span><span id="line-174">    }</span>
-<span class="source-line-no">175</span><span id="line-175">    // Set a listener for the waiting-on-RegionServers state. We want to wait</span>
-<span class="source-line-no">176</span><span id="line-176">    // until this condition before we leave this method and start regionservers.</span>
-<span class="source-line-no">177</span><span id="line-177">    final AtomicBoolean waiting = new AtomicBoolean(false);</span>
-<span class="source-line-no">178</span><span id="line-178">    if (master.getMaster().getServerManager() == null) throw new NullPointerException("SM");</span>
-<span class="source-line-no">179</span><span id="line-179">    master.getMaster().getServerManager().registerListener(new ServerListener() {</span>
-<span class="source-line-no">180</span><span id="line-180">      @Override</span>
-<span class="source-line-no">181</span><span id="line-181">      public void waiting() {</span>
-<span class="source-line-no">182</span><span id="line-182">        waiting.set(true);</span>
-<span class="source-line-no">183</span><span id="line-183">      }</span>
-<span class="source-line-no">184</span><span id="line-184">    });</span>
-<span class="source-line-no">185</span><span id="line-185">    // Wait until the Master gets to place where it is waiting on RegionServers to check in.</span>
-<span class="source-line-no">186</span><span id="line-186">    while (!waiting.get()) {</span>
-<span class="source-line-no">187</span><span id="line-187">      continue;</span>
-<span class="source-line-no">188</span><span id="line-188">    }</span>
-<span class="source-line-no">189</span><span id="line-189">    // Set the global master-is-active; gets picked up by regionservers later.</span>
-<span class="source-line-no">190</span><span id="line-190">    masterActive.set(true);</span>
-<span class="source-line-no">191</span><span id="line-191">    return master;</span>
-<span class="source-line-no">192</span><span id="line-192">  }</span>
-<span class="source-line-no">193</span><span id="line-193"></span>
-<span class="source-line-no">194</span><span id="line-194">  /**</span>
-<span class="source-line-no">195</span><span id="line-195">   * A RegionServer that reports for duty and then immediately dies if it is the first to receive</span>
-<span class="source-line-no">196</span><span id="line-196">   * the response to a reportForDuty. When it dies, it clears its ephemeral znode which the master</span>
-<span class="source-line-no">197</span><span id="line-197">   * notices and so removes the region from its set of online regionservers.</span>
-<span class="source-line-no">198</span><span id="line-198">   */</span>
-<span class="source-line-no">199</span><span id="line-199">  static class RegisterAndDieRegionServer</span>
-<span class="source-line-no">200</span><span id="line-200">    extends SingleProcessHBaseCluster.MiniHBaseClusterRegionServer {</span>
-<span class="source-line-no">201</span><span id="line-201">    public RegisterAndDieRegionServer(Configuration conf) throws IOException, InterruptedException {</span>
-<span class="source-line-no">202</span><span id="line-202">      super(conf);</span>
-<span class="source-line-no">203</span><span id="line-203">    }</span>
-<span class="source-line-no">204</span><span id="line-204"></span>
-<span class="source-line-no">205</span><span id="line-205">    @Override</span>
-<span class="source-line-no">206</span><span id="line-206">    protected void handleReportForDutyResponse(RegionServerStartupResponse c) throws IOException {</span>
-<span class="source-line-no">207</span><span id="line-207">      if (killedRS.compareAndSet(null, getServerName())) {</span>
-<span class="source-line-no">208</span><span id="line-208">        // Make sure Master is up so it will see the removal of the ephemeral znode for this RS.</span>
-<span class="source-line-no">209</span><span id="line-209">        while (!masterActive.get()) {</span>
-<span class="source-line-no">210</span><span id="line-210">          Threads.sleep(100);</span>
-<span class="source-line-no">211</span><span id="line-211">        }</span>
-<span class="source-line-no">212</span><span id="line-212">        super.kill();</span>
-<span class="source-line-no">213</span><span id="line-213">      } else {</span>
-<span class="source-line-no">214</span><span id="line-214">        super.handleReportForDutyResponse(c);</span>
-<span class="source-line-no">215</span><span id="line-215">      }</span>
-<span class="source-line-no">216</span><span id="line-216">    }</span>
-<span class="source-line-no">217</span><span id="line-217">  }</span>
-<span class="source-line-no">218</span><span id="line-218">}</span>
+<span class="source-line-no">104</span><span id="line-104">      // Wait on the RegionServer to fully die.</span>
+<span class="source-line-no">105</span><span id="line-105">      while (cluster.getLiveRegionServers().size() &gt;= expectedTotalRegionServers) {</span>
+<span class="source-line-no">106</span><span id="line-106">        Threads.sleep(1);</span>
+<span class="source-line-no">107</span><span id="line-107">      }</span>
+<span class="source-line-no">108</span><span id="line-108">      // Make sure Master is fully up before progressing. Could take a while if regions</span>
+<span class="source-line-no">109</span><span id="line-109">      // being reassigned.</span>
+<span class="source-line-no">110</span><span id="line-110">      while (!master.getMaster().isInitialized()) {</span>
+<span class="source-line-no">111</span><span id="line-111">        Threads.sleep(1);</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">      // Now in steady state. How many regions open? Master should have too many regionservers</span>
+<span class="source-line-no">115</span><span id="line-115">      // showing still. The downed RegionServer should still be showing as registered.</span>
+<span class="source-line-no">116</span><span id="line-116">      assertTrue(master.getMaster().getServerManager().isServerOnline(killedRS.get()));</span>
+<span class="source-line-no">117</span><span id="line-117">      // Find non-meta region (namespace?) and assign to the killed server. That'll trigger cleanup.</span>
+<span class="source-line-no">118</span><span id="line-118">      Map&lt;RegionInfo, ServerName&gt; assignments = null;</span>
+<span class="source-line-no">119</span><span id="line-119">      do {</span>
+<span class="source-line-no">120</span><span id="line-120">        assignments =</span>
+<span class="source-line-no">121</span><span id="line-121">          master.getMaster().getAssignmentManager().getRegionStates().getRegionAssignments();</span>
+<span class="source-line-no">122</span><span id="line-122">      } while (assignments == null || assignments.size() &lt; 2);</span>
+<span class="source-line-no">123</span><span id="line-123">      RegionInfo hri = null;</span>
+<span class="source-line-no">124</span><span id="line-124">      for (Map.Entry&lt;RegionInfo, ServerName&gt; e : assignments.entrySet()) {</span>
+<span class="source-line-no">125</span><span id="line-125">        if (e.getKey().isMetaRegion()) continue;</span>
+<span class="source-line-no">126</span><span id="line-126">        hri = e.getKey();</span>
+<span class="source-line-no">127</span><span id="line-127">        break;</span>
+<span class="source-line-no">128</span><span id="line-128">      }</span>
+<span class="source-line-no">129</span><span id="line-129">      // Try moving region to the killed server. It will fail. As by-product, we will</span>
+<span class="source-line-no">130</span><span id="line-130">      // remove the RS from Master online list because no corresponding znode.</span>
+<span class="source-line-no">131</span><span id="line-131">      assertEquals(expectedTotalRegionServers,</span>
+<span class="source-line-no">132</span><span id="line-132">        master.getMaster().getServerManager().getOnlineServersList().size());</span>
+<span class="source-line-no">133</span><span id="line-133">      LOG.info("Move " + hri.getEncodedName() + " to " + killedRS.get());</span>
+<span class="source-line-no">134</span><span id="line-134">      master.getMaster().move(hri.getEncodedNameAsBytes(),</span>
+<span class="source-line-no">135</span><span id="line-135">        Bytes.toBytes(killedRS.get().toString()));</span>
+<span class="source-line-no">136</span><span id="line-136"></span>
+<span class="source-line-no">137</span><span id="line-137">      // TODO: This test could do more to verify fix. It could create a table</span>
+<span class="source-line-no">138</span><span id="line-138">      // and do round-robin assign. It should fail if zombie RS. HBASE-19515.</span>
+<span class="source-line-no">139</span><span id="line-139"></span>
+<span class="source-line-no">140</span><span id="line-140">      // Wait until the RS no longer shows as registered in Master.</span>
+<span class="source-line-no">141</span><span id="line-141">      while (onlineServersList.size() &gt; (NUM_RS + 1)) {</span>
+<span class="source-line-no">142</span><span id="line-142">        Thread.sleep(100);</span>
+<span class="source-line-no">143</span><span id="line-143">        onlineServersList = master.getMaster().getServerManager().getOnlineServersList();</span>
+<span class="source-line-no">144</span><span id="line-144">      }</span>
+<span class="source-line-no">145</span><span id="line-145">    } finally {</span>
+<span class="source-line-no">146</span><span id="line-146">      // Shutdown is messy with complaints about fs being closed. Why? TODO.</span>
+<span class="source-line-no">147</span><span id="line-147">      cluster.shutdown();</span>
+<span class="source-line-no">148</span><span id="line-148">      cluster.join();</span>
+<span class="source-line-no">149</span><span id="line-149">      TEST_UTIL.shutdownMiniDFSCluster();</span>
+<span class="source-line-no">150</span><span id="line-150">      TEST_UTIL.shutdownMiniZKCluster();</span>
+<span class="source-line-no">151</span><span id="line-151">      TEST_UTIL.cleanupTestDir();</span>
+<span class="source-line-no">152</span><span id="line-152">    }</span>
+<span class="source-line-no">153</span><span id="line-153">  }</span>
+<span class="source-line-no">154</span><span id="line-154"></span>
+<span class="source-line-no">155</span><span id="line-155">  /**</span>
+<span class="source-line-no">156</span><span id="line-156">   * Start Master. Get as far as the state where Master is waiting on RegionServers to check in,</span>
+<span class="source-line-no">157</span><span id="line-157">   * then return.</span>
+<span class="source-line-no">158</span><span id="line-158">   */</span>
+<span class="source-line-no">159</span><span id="line-159">  private MasterThread startMaster(MasterThread master) {</span>
+<span class="source-line-no">160</span><span id="line-160">    master.start();</span>
+<span class="source-line-no">161</span><span id="line-161">    // It takes a while until ServerManager creation to happen inside Master startup.</span>
+<span class="source-line-no">162</span><span id="line-162">    while (master.getMaster().getServerManager() == null) {</span>
+<span class="source-line-no">163</span><span id="line-163">      continue;</span>
+<span class="source-line-no">164</span><span id="line-164">    }</span>
+<span class="source-line-no">165</span><span id="line-165">    // Set a listener for the waiting-on-RegionServers state. We want to wait</span>
+<span class="source-line-no">166</span><span id="line-166">    // until this condition before we leave this method and start regionservers.</span>
+<span class="source-line-no">167</span><span id="line-167">    final AtomicBoolean waiting = new AtomicBoolean(false);</span>
+<span class="source-line-no">168</span><span id="line-168">    if (master.getMaster().getServerManager() == null) throw new NullPointerException("SM");</span>
+<span class="source-line-no">169</span><span id="line-169">    master.getMaster().getServerManager().registerListener(new ServerListener() {</span>
+<span class="source-line-no">170</span><span id="line-170">      @Override</span>
+<span class="source-line-no">171</span><span id="line-171">      public void waiting() {</span>
+<span class="source-line-no">172</span><span id="line-172">        waiting.set(true);</span>
+<span class="source-line-no">173</span><span id="line-173">      }</span>
+<span class="source-line-no">174</span><span id="line-174">    });</span>
+<span class="source-line-no">175</span><span id="line-175">    // Wait until the Master gets to place where it is waiting on RegionServers to check in.</span>
+<span class="source-line-no">176</span><span id="line-176">    while (!waiting.get()) {</span>
+<span class="source-line-no">177</span><span id="line-177">      continue;</span>
+<span class="source-line-no">178</span><span id="line-178">    }</span>
+<span class="source-line-no">179</span><span id="line-179">    // Set the global master-is-active; gets picked up by regionservers later.</span>
+<span class="source-line-no">180</span><span id="line-180">    masterActive.set(true);</span>
+<span class="source-line-no">181</span><span id="line-181">    return master;</span>
+<span class="source-line-no">182</span><span id="line-182">  }</span>
+<span class="source-line-no">183</span><span id="line-183"></span>
+<span class="source-line-no">184</span><span id="line-184">  /**</span>
+<span class="source-line-no">185</span><span id="line-185">   * A RegionServer that reports for duty and then immediately dies if it is the first to receive</span>
+<span class="source-line-no">186</span><span id="line-186">   * the response to a reportForDuty. When it dies, it clears its ephemeral znode which the master</span>
+<span class="source-line-no">187</span><span id="line-187">   * notices and so removes the region from its set of online regionservers.</span>
+<span class="source-line-no">188</span><span id="line-188">   */</span>
+<span class="source-line-no">189</span><span id="line-189">  static class RegisterAndDieRegionServer</span>
+<span class="source-line-no">190</span><span id="line-190">    extends SingleProcessHBaseCluster.MiniHBaseClusterRegionServer {</span>
+<span class="source-line-no">191</span><span id="line-191">    public RegisterAndDieRegionServer(Configuration conf) throws IOException, InterruptedException {</span>
+<span class="source-line-no">192</span><span id="line-192">      super(conf);</span>
+<span class="source-line-no">193</span><span id="line-193">    }</span>
+<span class="source-line-no">194</span><span id="line-194"></span>
+<span class="source-line-no">195</span><span id="line-195">    @Override</span>
+<span class="source-line-no">196</span><span id="line-196">    protected void handleReportForDutyResponse(RegionServerStartupResponse c) throws IOException {</span>
+<span class="source-line-no">197</span><span id="line-197">      if (killedRS.compareAndSet(null, getServerName())) {</span>
+<span class="source-line-no">198</span><span id="line-198">        // Make sure Master is up so it will see the removal of the ephemeral znode for this RS.</span>
+<span class="source-line-no">199</span><span id="line-199">        while (!masterActive.get()) {</span>
+<span class="source-line-no">200</span><span id="line-200">          Threads.sleep(100);</span>
+<span class="source-line-no">201</span><span id="line-201">        }</span>
+<span class="source-line-no">202</span><span id="line-202">        super.kill();</span>
+<span class="source-line-no">203</span><span id="line-203">      } else {</span>
+<span class="source-line-no">204</span><span id="line-204">        super.handleReportForDutyResponse(c);</span>
+<span class="source-line-no">205</span><span id="line-205">      }</span>
+<span class="source-line-no">206</span><span id="line-206">    }</span>
+<span class="source-line-no">207</span><span id="line-207">  }</span>
+<span class="source-line-no">208</span><span id="line-208">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html
index b16c4bb29ae..773af591c02 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSQosFunction.html
@@ -33,63 +33,59 @@
 <span class="source-line-no">020</span><span id="line-20">import static org.mockito.Mockito.when;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.ipc.QosTestBase;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.junit.Before;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.junit.ClassRule;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.junit.Test;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.mockito.Mockito;</span>
+<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.ipc.QosTestBase;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.mockito.Mockito;</span>
+<span class="source-line-no">032</span><span id="line-32"></span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;</span>
 <span class="source-line-no">034</span><span id="line-34"></span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;</span>
-<span class="source-line-no">036</span><span id="line-36"></span>
-<span class="source-line-no">037</span><span id="line-37">/**</span>
-<span class="source-line-no">038</span><span id="line-38"> * Basic test that qos function is sort of working; i.e. a change in method naming style over in pb</span>
-<span class="source-line-no">039</span><span id="line-39"> * doesn't break it.</span>
-<span class="source-line-no">040</span><span id="line-40"> */</span>
-<span class="source-line-no">041</span><span id="line-41">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">042</span><span id="line-42">public class TestRSQosFunction extends QosTestBase {</span>
-<span class="source-line-no">043</span><span id="line-43">  @ClassRule</span>
-<span class="source-line-no">044</span><span id="line-44">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">045</span><span id="line-45">    HBaseClassTestRule.forClass(TestRSQosFunction.class);</span>
+<span class="source-line-no">035</span><span id="line-35">/**</span>
+<span class="source-line-no">036</span><span id="line-36"> * Basic test that qos function is sort of working; i.e. a change in method naming style over in pb</span>
+<span class="source-line-no">037</span><span id="line-37"> * doesn't break it.</span>
+<span class="source-line-no">038</span><span id="line-38"> */</span>
+<span class="source-line-no">039</span><span id="line-39">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">040</span><span id="line-40">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">041</span><span id="line-41">public class TestRSQosFunction extends QosTestBase {</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">  private Configuration conf;</span>
+<span class="source-line-no">044</span><span id="line-44">  private RSRpcServices rpcServices;</span>
+<span class="source-line-no">045</span><span id="line-45">  private RSAnnotationReadingPriorityFunction qosFunction;</span>
 <span class="source-line-no">046</span><span id="line-46"></span>
-<span class="source-line-no">047</span><span id="line-47">  private Configuration conf;</span>
-<span class="source-line-no">048</span><span id="line-48">  private RSRpcServices rpcServices;</span>
-<span class="source-line-no">049</span><span id="line-49">  private RSAnnotationReadingPriorityFunction qosFunction;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">  @Before</span>
-<span class="source-line-no">052</span><span id="line-52">  public void setUp() {</span>
-<span class="source-line-no">053</span><span id="line-53">    conf = HBaseConfiguration.create();</span>
-<span class="source-line-no">054</span><span id="line-54">    rpcServices = Mockito.mock(RSRpcServices.class);</span>
-<span class="source-line-no">055</span><span id="line-55">    when(rpcServices.getConfiguration()).thenReturn(conf);</span>
-<span class="source-line-no">056</span><span id="line-56">    qosFunction = new RSAnnotationReadingPriorityFunction(rpcServices);</span>
-<span class="source-line-no">057</span><span id="line-57">  }</span>
-<span class="source-line-no">058</span><span id="line-58"></span>
-<span class="source-line-no">059</span><span id="line-59">  @Test</span>
-<span class="source-line-no">060</span><span id="line-60">  public void testPriority() {</span>
-<span class="source-line-no">061</span><span id="line-61">    // Set method name in pb style with the method name capitalized.</span>
-<span class="source-line-no">062</span><span id="line-62">    checkMethod(conf, "ReplicateWALEntry", HConstants.REPLICATION_QOS, qosFunction);</span>
-<span class="source-line-no">063</span><span id="line-63">    // Set method name in pb style with the method name capitalized.</span>
-<span class="source-line-no">064</span><span id="line-64">    checkMethod(conf, "OpenRegion", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">065</span><span id="line-65">    // Check multi works.</span>
-<span class="source-line-no">066</span><span id="line-66">    checkMethod(conf, "Multi", HConstants.NORMAL_QOS, qosFunction,</span>
-<span class="source-line-no">067</span><span id="line-67">      MultiRequest.getDefaultInstance());</span>
-<span class="source-line-no">068</span><span id="line-68">  }</span>
-<span class="source-line-no">069</span><span id="line-69"></span>
-<span class="source-line-no">070</span><span id="line-70">  @Test</span>
-<span class="source-line-no">071</span><span id="line-71">  public void testAnnotations() {</span>
-<span class="source-line-no">072</span><span id="line-72">    checkMethod(conf, "CloseRegion", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">073</span><span id="line-73">    checkMethod(conf, "CompactRegion", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">074</span><span id="line-74">    checkMethod(conf, "FlushRegion", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">075</span><span id="line-75">    checkMethod(conf, "UpdateConfiguration", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">076</span><span id="line-76">    checkMethod(conf, "CompactionSwitch", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">077</span><span id="line-77">    checkMethod(conf, "RollWALWriter", HConstants.ADMIN_QOS, qosFunction);</span>
-<span class="source-line-no">078</span><span id="line-78">  }</span>
-<span class="source-line-no">079</span><span id="line-79">}</span>
+<span class="source-line-no">047</span><span id="line-47">  @BeforeEach</span>
+<span class="source-line-no">048</span><span id="line-48">  public void setUp() {</span>
+<span class="source-line-no">049</span><span id="line-49">    conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">050</span><span id="line-50">    rpcServices = Mockito.mock(RSRpcServices.class);</span>
+<span class="source-line-no">051</span><span id="line-51">    when(rpcServices.getConfiguration()).thenReturn(conf);</span>
+<span class="source-line-no">052</span><span id="line-52">    qosFunction = new RSAnnotationReadingPriorityFunction(rpcServices);</span>
+<span class="source-line-no">053</span><span id="line-53">  }</span>
+<span class="source-line-no">054</span><span id="line-54"></span>
+<span class="source-line-no">055</span><span id="line-55">  @Test</span>
+<span class="source-line-no">056</span><span id="line-56">  public void testPriority() {</span>
+<span class="source-line-no">057</span><span id="line-57">    // Set method name in pb style with the method name capitalized.</span>
+<span class="source-line-no">058</span><span id="line-58">    checkMethod(conf, "ReplicateWALEntry", HConstants.REPLICATION_QOS, qosFunction);</span>
+<span class="source-line-no">059</span><span id="line-59">    // Set method name in pb style with the method name capitalized.</span>
+<span class="source-line-no">060</span><span id="line-60">    checkMethod(conf, "OpenRegion", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">061</span><span id="line-61">    // Check multi works.</span>
+<span class="source-line-no">062</span><span id="line-62">    checkMethod(conf, "Multi", HConstants.NORMAL_QOS, qosFunction,</span>
+<span class="source-line-no">063</span><span id="line-63">      MultiRequest.getDefaultInstance());</span>
+<span class="source-line-no">064</span><span id="line-64">  }</span>
+<span class="source-line-no">065</span><span id="line-65"></span>
+<span class="source-line-no">066</span><span id="line-66">  @Test</span>
+<span class="source-line-no">067</span><span id="line-67">  public void testAnnotations() {</span>
+<span class="source-line-no">068</span><span id="line-68">    checkMethod(conf, "CloseRegion", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">069</span><span id="line-69">    checkMethod(conf, "CompactRegion", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">070</span><span id="line-70">    checkMethod(conf, "FlushRegion", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">071</span><span id="line-71">    checkMethod(conf, "UpdateConfiguration", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">072</span><span id="line-72">    checkMethod(conf, "CompactionSwitch", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">073</span><span id="line-73">    checkMethod(conf, "RollWALWriter", HConstants.ADMIN_QOS, qosFunction);</span>
+<span class="source-line-no">074</span><span id="line-74">  }</span>
+<span class="source-line-no">075</span><span id="line-75">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html
index a44abce32d0..48764410dd5 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSRpcServices.html
@@ -30,59 +30,55 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.net.InetAddress;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.net.UnknownHostException;</span>
 <span class="source-line-no">024</span><span id="line-24">import java.util.Optional;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.ipc.RpcCall;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.ipc.RpcServer;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.junit.ClassRule;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.junit.Test;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.mockito.Mockito;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.slf4j.Logger;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">037</span><span id="line-37"></span>
-<span class="source-line-no">038</span><span id="line-38">/**</span>
-<span class="source-line-no">039</span><span id="line-39"> * Test parts of {@link RSRpcServices}</span>
-<span class="source-line-no">040</span><span id="line-40"> */</span>
-<span class="source-line-no">041</span><span id="line-41">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">042</span><span id="line-42">public class TestRSRpcServices {</span>
-<span class="source-line-no">043</span><span id="line-43">  @ClassRule</span>
-<span class="source-line-no">044</span><span id="line-44">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">045</span><span id="line-45">    HBaseClassTestRule.forClass(TestRSRpcServices.class);</span>
-<span class="source-line-no">046</span><span id="line-46"></span>
-<span class="source-line-no">047</span><span id="line-47">  private static final Logger LOG = LoggerFactory.getLogger(TestRSRpcServices.class);</span>
-<span class="source-line-no">048</span><span id="line-48"></span>
-<span class="source-line-no">049</span><span id="line-49">  /**</span>
-<span class="source-line-no">050</span><span id="line-50">   * Simple test of the toString on RegionScannerHolder works. Just creates one and calls #toString</span>
-<span class="source-line-no">051</span><span id="line-51">   * on it.</span>
-<span class="source-line-no">052</span><span id="line-52">   */</span>
-<span class="source-line-no">053</span><span id="line-53">  @Test</span>
-<span class="source-line-no">054</span><span id="line-54">  public void testRegionScannerHolderToString() throws UnknownHostException {</span>
-<span class="source-line-no">055</span><span id="line-55">    RpcCall call = Mockito.mock(RpcCall.class);</span>
-<span class="source-line-no">056</span><span id="line-56">    int port = 1234;</span>
-<span class="source-line-no">057</span><span id="line-57">    Mockito.when(call.getRemotePort()).thenReturn(port);</span>
-<span class="source-line-no">058</span><span id="line-58">    InetAddress address = InetAddress.getLocalHost();</span>
-<span class="source-line-no">059</span><span id="line-59">    Mockito.when(call.getRemoteAddress()).thenReturn(address);</span>
-<span class="source-line-no">060</span><span id="line-60">    Optional&lt;String&gt; userName = Optional.ofNullable("test");</span>
-<span class="source-line-no">061</span><span id="line-61">    Mockito.when(call.getRequestUserName()).thenReturn(userName);</span>
-<span class="source-line-no">062</span><span id="line-62">    RpcServer.setCurrentCall(call);</span>
-<span class="source-line-no">063</span><span id="line-63">    String clientIpAndPort = RSRpcServices.getRemoteClientIpAndPort();</span>
-<span class="source-line-no">064</span><span id="line-64">    String userNameTest = RSRpcServices.getUserName();</span>
-<span class="source-line-no">065</span><span id="line-65">    assertEquals("test", userNameTest);</span>
-<span class="source-line-no">066</span><span id="line-66">    HRegion region = Mockito.mock(HRegion.class);</span>
-<span class="source-line-no">067</span><span id="line-67">    Mockito.when(region.getRegionInfo()).thenReturn(RegionInfoBuilder.FIRST_META_REGIONINFO);</span>
-<span class="source-line-no">068</span><span id="line-68">    RSRpcServices.RegionScannerHolder rsh = new RSRpcServices.RegionScannerHolder(null, region,</span>
-<span class="source-line-no">069</span><span id="line-69">      null, null, false, false, clientIpAndPort, userNameTest);</span>
-<span class="source-line-no">070</span><span id="line-70">    LOG.info("rsh: {}", rsh);</span>
-<span class="source-line-no">071</span><span id="line-71">  }</span>
-<span class="source-line-no">072</span><span id="line-72">}</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.ipc.RpcCall;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.ipc.RpcServer;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.mockito.Mockito;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.slf4j.Logger;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">035</span><span id="line-35"></span>
+<span class="source-line-no">036</span><span id="line-36">/**</span>
+<span class="source-line-no">037</span><span id="line-37"> * Test parts of {@link RSRpcServices}</span>
+<span class="source-line-no">038</span><span id="line-38"> */</span>
+<span class="source-line-no">039</span><span id="line-39">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">040</span><span id="line-40">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">041</span><span id="line-41">public class TestRSRpcServices {</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">  private static final Logger LOG = LoggerFactory.getLogger(TestRSRpcServices.class);</span>
+<span class="source-line-no">044</span><span id="line-44"></span>
+<span class="source-line-no">045</span><span id="line-45">  /**</span>
+<span class="source-line-no">046</span><span id="line-46">   * Simple test of the toString on RegionScannerHolder works. Just creates one and calls #toString</span>
+<span class="source-line-no">047</span><span id="line-47">   * on it.</span>
+<span class="source-line-no">048</span><span id="line-48">   */</span>
+<span class="source-line-no">049</span><span id="line-49">  @Test</span>
+<span class="source-line-no">050</span><span id="line-50">  public void testRegionScannerHolderToString() throws UnknownHostException {</span>
+<span class="source-line-no">051</span><span id="line-51">    RpcCall call = Mockito.mock(RpcCall.class);</span>
+<span class="source-line-no">052</span><span id="line-52">    int port = 1234;</span>
+<span class="source-line-no">053</span><span id="line-53">    Mockito.when(call.getRemotePort()).thenReturn(port);</span>
+<span class="source-line-no">054</span><span id="line-54">    InetAddress address = InetAddress.getLocalHost();</span>
+<span class="source-line-no">055</span><span id="line-55">    Mockito.when(call.getRemoteAddress()).thenReturn(address);</span>
+<span class="source-line-no">056</span><span id="line-56">    Optional&lt;String&gt; userName = Optional.ofNullable("test");</span>
+<span class="source-line-no">057</span><span id="line-57">    Mockito.when(call.getRequestUserName()).thenReturn(userName);</span>
+<span class="source-line-no">058</span><span id="line-58">    RpcServer.setCurrentCall(call);</span>
+<span class="source-line-no">059</span><span id="line-59">    String clientIpAndPort = RSRpcServices.getRemoteClientIpAndPort();</span>
+<span class="source-line-no">060</span><span id="line-60">    String userNameTest = RSRpcServices.getUserName();</span>
+<span class="source-line-no">061</span><span id="line-61">    assertEquals("test", userNameTest);</span>
+<span class="source-line-no">062</span><span id="line-62">    HRegion region = Mockito.mock(HRegion.class);</span>
+<span class="source-line-no">063</span><span id="line-63">    Mockito.when(region.getRegionInfo()).thenReturn(RegionInfoBuilder.FIRST_META_REGIONINFO);</span>
+<span class="source-line-no">064</span><span id="line-64">    RSRpcServices.RegionScannerHolder rsh = new RSRpcServices.RegionScannerHolder(null, region,</span>
+<span class="source-line-no">065</span><span id="line-65">      null, null, false, false, clientIpAndPort, userNameTest);</span>
+<span class="source-line-no">066</span><span id="line-66">    LOG.info("rsh: {}", rsh);</span>
+<span class="source-line-no">067</span><span id="line-67">  }</span>
+<span class="source-line-no">068</span><span id="line-68">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html
index 43c3d9e7abc..7cc70074777 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRSSnapshotVerifier.html
@@ -30,103 +30,101 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
-<span class="source-line-no">020</span><span id="line-20">import java.io.IOException;</span>
-<span class="source-line-no">021</span><span id="line-21">import java.util.ArrayList;</span>
-<span class="source-line-no">022</span><span id="line-22">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.fs.FileSystem;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.client.SnapshotDescription;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.client.SnapshotType;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.client.Table;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.snapshot.SnapshotManifest;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.util.RegionSplitter;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.junit.After;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.junit.Before;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.junit.ClassRule;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.junit.Test;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.junit.experimental.categories.Category;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertThrows;</span>
+<span class="source-line-no">021</span><span id="line-21"></span>
+<span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
+<span class="source-line-no">023</span><span id="line-23">import java.util.ArrayList;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.fs.FileSystem;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.fs.Path;</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.TableName;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.client.SnapshotDescription;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.client.SnapshotType;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.client.Table;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.snapshot.SnapshotManifest;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.RegionSplitter;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.junit.jupiter.api.Test;</span>
 <span class="source-line-no">044</span><span id="line-44">import org.slf4j.Logger;</span>
 <span class="source-line-no">045</span><span id="line-45">import org.slf4j.LoggerFactory;</span>
 <span class="source-line-no">046</span><span id="line-46"></span>
 <span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
 <span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos;</span>
 <span class="source-line-no">049</span><span id="line-49"></span>
-<span class="source-line-no">050</span><span id="line-50">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">051</span><span id="line-51">public class TestRSSnapshotVerifier {</span>
-<span class="source-line-no">052</span><span id="line-52">  private static final Logger LOG = LoggerFactory.getLogger(TestRSSnapshotVerifier.class);</span>
+<span class="source-line-no">050</span><span id="line-50">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">051</span><span id="line-51">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">052</span><span id="line-52">public class TestRSSnapshotVerifier {</span>
 <span class="source-line-no">053</span><span id="line-53"></span>
-<span class="source-line-no">054</span><span id="line-54">  @ClassRule</span>
-<span class="source-line-no">055</span><span id="line-55">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">056</span><span id="line-56">    HBaseClassTestRule.forClass(TestRSSnapshotVerifier.class);</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">  private HBaseTestingUtil TEST_UTIL;</span>
-<span class="source-line-no">059</span><span id="line-59">  private final TableName tableName = TableName.valueOf("TestRSSnapshotVerifier");</span>
-<span class="source-line-no">060</span><span id="line-60">  private final byte[] cf = Bytes.toBytes("cf");</span>
-<span class="source-line-no">061</span><span id="line-61">  private final SnapshotDescription snapshot =</span>
-<span class="source-line-no">062</span><span id="line-62">    new SnapshotDescription("test-snapshot", tableName, SnapshotType.FLUSH);</span>
-<span class="source-line-no">063</span><span id="line-63">  private SnapshotProtos.SnapshotDescription snapshotProto =</span>
-<span class="source-line-no">064</span><span id="line-64">    ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot);</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">  @Before</span>
-<span class="source-line-no">067</span><span id="line-67">  public void setup() throws Exception {</span>
-<span class="source-line-no">068</span><span id="line-68">    TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">069</span><span id="line-69">    TEST_UTIL.startMiniCluster(3);</span>
-<span class="source-line-no">070</span><span id="line-70">    final byte[][] splitKeys = new RegionSplitter.HexStringSplit().split(10);</span>
-<span class="source-line-no">071</span><span id="line-71">    Table table = TEST_UTIL.createTable(tableName, cf, splitKeys);</span>
-<span class="source-line-no">072</span><span id="line-72">    TEST_UTIL.loadTable(table, cf, false);</span>
-<span class="source-line-no">073</span><span id="line-73">    TEST_UTIL.getAdmin().flush(tableName);</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">    // prepare unverified snapshot</span>
-<span class="source-line-no">076</span><span id="line-76">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">077</span><span id="line-77">    snapshotProto = SnapshotDescriptionUtils.validate(snapshotProto, conf);</span>
-<span class="source-line-no">078</span><span id="line-78">    Path rootDir = CommonFSUtils.getRootDir(conf);</span>
-<span class="source-line-no">079</span><span id="line-79">    Path workingDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(snapshotProto, rootDir, conf);</span>
-<span class="source-line-no">080</span><span id="line-80">    FileSystem workingDirFs = workingDir.getFileSystem(conf);</span>
-<span class="source-line-no">081</span><span id="line-81">    if (!workingDirFs.exists(workingDir)) {</span>
-<span class="source-line-no">082</span><span id="line-82">      workingDirFs.mkdirs(workingDir);</span>
-<span class="source-line-no">083</span><span id="line-83">    }</span>
-<span class="source-line-no">084</span><span id="line-84">    ForeignExceptionDispatcher monitor = new ForeignExceptionDispatcher(snapshot.getName());</span>
-<span class="source-line-no">085</span><span id="line-85">    SnapshotManifest manifest =</span>
-<span class="source-line-no">086</span><span id="line-86">      SnapshotManifest.create(conf, workingDirFs, workingDir, snapshotProto, monitor);</span>
-<span class="source-line-no">087</span><span id="line-87">    manifest.addTableDescriptor(</span>
-<span class="source-line-no">088</span><span id="line-88">      TEST_UTIL.getHBaseCluster().getMaster().getTableDescriptors().get(tableName));</span>
-<span class="source-line-no">089</span><span id="line-89">    SnapshotDescriptionUtils.writeSnapshotInfo(snapshotProto, workingDir, workingDirFs);</span>
-<span class="source-line-no">090</span><span id="line-90">    TEST_UTIL.getHBaseCluster().getRegions(tableName).forEach(r -&gt; {</span>
-<span class="source-line-no">091</span><span id="line-91">      try {</span>
-<span class="source-line-no">092</span><span id="line-92">        r.addRegionToSnapshot(snapshotProto, monitor);</span>
-<span class="source-line-no">093</span><span id="line-93">      } catch (IOException e) {</span>
-<span class="source-line-no">094</span><span id="line-94">        LOG.warn("Failed snapshot region {}", r.getRegionInfo());</span>
-<span class="source-line-no">095</span><span id="line-95">      }</span>
-<span class="source-line-no">096</span><span id="line-96">    });</span>
-<span class="source-line-no">097</span><span id="line-97">    manifest.consolidate();</span>
-<span class="source-line-no">098</span><span id="line-98">  }</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">  @Test(expected = org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException.class)</span>
-<span class="source-line-no">101</span><span id="line-101">  public void testVerifyStoreFile() throws Exception {</span>
-<span class="source-line-no">102</span><span id="line-102">    RSSnapshotVerifier verifier =</span>
-<span class="source-line-no">103</span><span id="line-103">      TEST_UTIL.getHBaseCluster().getRegionServer(0).getRsSnapshotVerifier();</span>
-<span class="source-line-no">104</span><span id="line-104">    HRegion region = TEST_UTIL.getHBaseCluster().getRegions(tableName).stream()</span>
-<span class="source-line-no">105</span><span id="line-105">      .filter(r -&gt; !r.getStore(cf).getStorefiles().isEmpty()).findFirst().get();</span>
-<span class="source-line-no">106</span><span id="line-106">    Path filePath = new ArrayList&lt;&gt;(region.getStore(cf).getStorefiles()).get(0).getPath();</span>
-<span class="source-line-no">107</span><span id="line-107">    TEST_UTIL.getDFSCluster().getFileSystem().delete(filePath, true);</span>
-<span class="source-line-no">108</span><span id="line-108">    LOG.info("delete store file {}", filePath);</span>
-<span class="source-line-no">109</span><span id="line-109">    verifier.verifyRegion(snapshotProto, region.getRegionInfo());</span>
-<span class="source-line-no">110</span><span id="line-110">  }</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">  @After</span>
-<span class="source-line-no">113</span><span id="line-113">  public void teardown() throws Exception {</span>
-<span class="source-line-no">114</span><span id="line-114">    TEST_UTIL.shutdownMiniCluster();</span>
-<span class="source-line-no">115</span><span id="line-115">  }</span>
-<span class="source-line-no">116</span><span id="line-116">}</span>
+<span class="source-line-no">054</span><span id="line-54">  private static final Logger LOG = LoggerFactory.getLogger(TestRSSnapshotVerifier.class);</span>
+<span class="source-line-no">055</span><span id="line-55">  private HBaseTestingUtil TEST_UTIL;</span>
+<span class="source-line-no">056</span><span id="line-56">  private final TableName tableName = TableName.valueOf("TestRSSnapshotVerifier");</span>
+<span class="source-line-no">057</span><span id="line-57">  private final byte[] cf = Bytes.toBytes("cf");</span>
+<span class="source-line-no">058</span><span id="line-58">  private final SnapshotDescription snapshot =</span>
+<span class="source-line-no">059</span><span id="line-59">    new SnapshotDescription("test-snapshot", tableName, SnapshotType.FLUSH);</span>
+<span class="source-line-no">060</span><span id="line-60">  private SnapshotProtos.SnapshotDescription snapshotProto =</span>
+<span class="source-line-no">061</span><span id="line-61">    ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot);</span>
+<span class="source-line-no">062</span><span id="line-62"></span>
+<span class="source-line-no">063</span><span id="line-63">  @BeforeEach</span>
+<span class="source-line-no">064</span><span id="line-64">  public void setup() throws Exception {</span>
+<span class="source-line-no">065</span><span id="line-65">    TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">066</span><span id="line-66">    TEST_UTIL.startMiniCluster(3);</span>
+<span class="source-line-no">067</span><span id="line-67">    final byte[][] splitKeys = new RegionSplitter.HexStringSplit().split(10);</span>
+<span class="source-line-no">068</span><span id="line-68">    Table table = TEST_UTIL.createTable(tableName, cf, splitKeys);</span>
+<span class="source-line-no">069</span><span id="line-69">    TEST_UTIL.loadTable(table, cf, false);</span>
+<span class="source-line-no">070</span><span id="line-70">    TEST_UTIL.getAdmin().flush(tableName);</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72">    // prepare unverified snapshot</span>
+<span class="source-line-no">073</span><span id="line-73">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">074</span><span id="line-74">    snapshotProto = SnapshotDescriptionUtils.validate(snapshotProto, conf);</span>
+<span class="source-line-no">075</span><span id="line-75">    Path rootDir = CommonFSUtils.getRootDir(conf);</span>
+<span class="source-line-no">076</span><span id="line-76">    Path workingDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(snapshotProto, rootDir, conf);</span>
+<span class="source-line-no">077</span><span id="line-77">    FileSystem workingDirFs = workingDir.getFileSystem(conf);</span>
+<span class="source-line-no">078</span><span id="line-78">    if (!workingDirFs.exists(workingDir)) {</span>
+<span class="source-line-no">079</span><span id="line-79">      workingDirFs.mkdirs(workingDir);</span>
+<span class="source-line-no">080</span><span id="line-80">    }</span>
+<span class="source-line-no">081</span><span id="line-81">    ForeignExceptionDispatcher monitor = new ForeignExceptionDispatcher(snapshot.getName());</span>
+<span class="source-line-no">082</span><span id="line-82">    SnapshotManifest manifest =</span>
+<span class="source-line-no">083</span><span id="line-83">      SnapshotManifest.create(conf, workingDirFs, workingDir, snapshotProto, monitor);</span>
+<span class="source-line-no">084</span><span id="line-84">    manifest.addTableDescriptor(</span>
+<span class="source-line-no">085</span><span id="line-85">      TEST_UTIL.getHBaseCluster().getMaster().getTableDescriptors().get(tableName));</span>
+<span class="source-line-no">086</span><span id="line-86">    SnapshotDescriptionUtils.writeSnapshotInfo(snapshotProto, workingDir, workingDirFs);</span>
+<span class="source-line-no">087</span><span id="line-87">    TEST_UTIL.getHBaseCluster().getRegions(tableName).forEach(r -&gt; {</span>
+<span class="source-line-no">088</span><span id="line-88">      try {</span>
+<span class="source-line-no">089</span><span id="line-89">        r.addRegionToSnapshot(snapshotProto, monitor);</span>
+<span class="source-line-no">090</span><span id="line-90">      } catch (IOException e) {</span>
+<span class="source-line-no">091</span><span id="line-91">        LOG.warn("Failed snapshot region {}", r.getRegionInfo());</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">    manifest.consolidate();</span>
+<span class="source-line-no">095</span><span id="line-95">  }</span>
+<span class="source-line-no">096</span><span id="line-96"></span>
+<span class="source-line-no">097</span><span id="line-97">  @Test</span>
+<span class="source-line-no">098</span><span id="line-98">  public void testVerifyStoreFile() throws Exception {</span>
+<span class="source-line-no">099</span><span id="line-99">    RSSnapshotVerifier verifier =</span>
+<span class="source-line-no">100</span><span id="line-100">      TEST_UTIL.getHBaseCluster().getRegionServer(0).getRsSnapshotVerifier();</span>
+<span class="source-line-no">101</span><span id="line-101">    HRegion region = TEST_UTIL.getHBaseCluster().getRegions(tableName).stream()</span>
+<span class="source-line-no">102</span><span id="line-102">      .filter(r -&gt; !r.getStore(cf).getStorefiles().isEmpty()).findFirst().get();</span>
+<span class="source-line-no">103</span><span id="line-103">    Path filePath = new ArrayList&lt;&gt;(region.getStore(cf).getStorefiles()).get(0).getPath();</span>
+<span class="source-line-no">104</span><span id="line-104">    TEST_UTIL.getDFSCluster().getFileSystem().delete(filePath, true);</span>
+<span class="source-line-no">105</span><span id="line-105">    LOG.info("delete store file {}", filePath);</span>
+<span class="source-line-no">106</span><span id="line-106">    assertThrows(org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException.class,</span>
+<span class="source-line-no">107</span><span id="line-107">      () -&gt; verifier.verifyRegion(snapshotProto, region.getRegionInfo()));</span>
+<span class="source-line-no">108</span><span id="line-108">  }</span>
+<span class="source-line-no">109</span><span id="line-109"></span>
+<span class="source-line-no">110</span><span id="line-110">  @AfterEach</span>
+<span class="source-line-no">111</span><span id="line-111">  public void teardown() throws Exception {</span>
+<span class="source-line-no">112</span><span id="line-112">    TEST_UTIL.shutdownMiniCluster();</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>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html
index 2c0ca8a1433..a06cf6c7e32 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.html
@@ -30,85 +30,80 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.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 org.apache.hadoop.conf.Configuration;</span>
 <span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.fs.FileStatus;</span>
 <span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseCommonTestingUtil;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<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.testclassification.SmallTests;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.util.FSTableDescriptors;</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, SmallTests.class })</span>
-<span class="source-line-no">044</span><span id="line-44">public class TestReadAndWriteRegionInfoFile {</span>
-<span class="source-line-no">045</span><span id="line-45"></span>
-<span class="source-line-no">046</span><span id="line-46">  @ClassRule</span>
-<span class="source-line-no">047</span><span id="line-47">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">048</span><span id="line-48">    HBaseClassTestRule.forClass(TestReadAndWriteRegionInfoFile.class);</span>
-<span class="source-line-no">049</span><span id="line-49"></span>
-<span class="source-line-no">050</span><span id="line-50">  private static final HBaseCommonTestingUtil UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">051</span><span id="line-51"></span>
-<span class="source-line-no">052</span><span id="line-52">  private static final Configuration CONF = UTIL.getConfiguration();</span>
-<span class="source-line-no">053</span><span id="line-53"></span>
-<span class="source-line-no">054</span><span id="line-54">  private static FileSystem FS;</span>
-<span class="source-line-no">055</span><span id="line-55"></span>
-<span class="source-line-no">056</span><span id="line-56">  private static Path ROOT_DIR;</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">  @BeforeClass</span>
-<span class="source-line-no">059</span><span id="line-59">  public static void setUp() throws IOException {</span>
-<span class="source-line-no">060</span><span id="line-60">    ROOT_DIR = UTIL.getDataTestDir();</span>
-<span class="source-line-no">061</span><span id="line-61">    FS = ROOT_DIR.getFileSystem(CONF);</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HBaseCommonTestingUtil;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.util.FSTableDescriptors;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">040</span><span id="line-40"></span>
+<span class="source-line-no">041</span><span id="line-41">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">042</span><span id="line-42">@Tag(SmallTests.TAG)</span>
+<span class="source-line-no">043</span><span id="line-43">public class TestReadAndWriteRegionInfoFile {</span>
+<span class="source-line-no">044</span><span id="line-44"></span>
+<span class="source-line-no">045</span><span id="line-45">  private static final HBaseCommonTestingUtil UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">046</span><span id="line-46"></span>
+<span class="source-line-no">047</span><span id="line-47">  private static final Configuration CONF = UTIL.getConfiguration();</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 static FileSystem FS;</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">  private static Path ROOT_DIR;</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">  @BeforeAll</span>
+<span class="source-line-no">054</span><span id="line-54">  public static void setUp() throws IOException {</span>
+<span class="source-line-no">055</span><span id="line-55">    ROOT_DIR = UTIL.getDataTestDir();</span>
+<span class="source-line-no">056</span><span id="line-56">    FS = ROOT_DIR.getFileSystem(CONF);</span>
+<span class="source-line-no">057</span><span id="line-57">  }</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59">  @AfterAll</span>
+<span class="source-line-no">060</span><span id="line-60">  public static void tearDown() {</span>
+<span class="source-line-no">061</span><span id="line-61">    UTIL.cleanupTestDir();</span>
 <span class="source-line-no">062</span><span id="line-62">  }</span>
 <span class="source-line-no">063</span><span id="line-63"></span>
-<span class="source-line-no">064</span><span id="line-64">  @AfterClass</span>
-<span class="source-line-no">065</span><span id="line-65">  public static void tearDown() {</span>
-<span class="source-line-no">066</span><span id="line-66">    UTIL.cleanupTestDir();</span>
-<span class="source-line-no">067</span><span id="line-67">  }</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">  @Test</span>
-<span class="source-line-no">070</span><span id="line-70">  public void testReadAndWriteRegionInfoFile() throws IOException, InterruptedException {</span>
-<span class="source-line-no">071</span><span id="line-71">    RegionInfo ri = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
-<span class="source-line-no">072</span><span id="line-72">    // Create a region. That'll write the .regioninfo file.</span>
-<span class="source-line-no">073</span><span id="line-73">    FSTableDescriptors fsTableDescriptors = new FSTableDescriptors(FS, ROOT_DIR);</span>
-<span class="source-line-no">074</span><span id="line-74">    FSTableDescriptors.tryUpdateAndGetMetaTableDescriptor(CONF, FS, ROOT_DIR);</span>
-<span class="source-line-no">075</span><span id="line-75">    HRegion r = HBaseTestingUtil.createRegionAndWAL(ri, ROOT_DIR, CONF,</span>
-<span class="source-line-no">076</span><span id="line-76">      fsTableDescriptors.get(TableName.META_TABLE_NAME));</span>
-<span class="source-line-no">077</span><span id="line-77">    // Get modtime on the file.</span>
-<span class="source-line-no">078</span><span id="line-78">    long modtime = getModTime(r);</span>
-<span class="source-line-no">079</span><span id="line-79">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
-<span class="source-line-no">080</span><span id="line-80">    Thread.sleep(1001);</span>
-<span class="source-line-no">081</span><span id="line-81">    r = HRegion.openHRegion(ROOT_DIR, ri, fsTableDescriptors.get(TableName.META_TABLE_NAME), null,</span>
-<span class="source-line-no">082</span><span id="line-82">      CONF);</span>
-<span class="source-line-no">083</span><span id="line-83">    // Ensure the file is not written for a second time.</span>
-<span class="source-line-no">084</span><span id="line-84">    long modtime2 = getModTime(r);</span>
-<span class="source-line-no">085</span><span id="line-85">    assertEquals(modtime, modtime2);</span>
-<span class="source-line-no">086</span><span id="line-86">    // Now load the file.</span>
-<span class="source-line-no">087</span><span id="line-87">    HRegionFileSystem.loadRegionInfoFileContent(r.getRegionFileSystem().getFileSystem(),</span>
-<span class="source-line-no">088</span><span id="line-88">      r.getRegionFileSystem().getRegionDir());</span>
-<span class="source-line-no">089</span><span id="line-89">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
-<span class="source-line-no">090</span><span id="line-90">  }</span>
-<span class="source-line-no">091</span><span id="line-91"></span>
-<span class="source-line-no">092</span><span id="line-92">  private long getModTime(final HRegion r) throws IOException {</span>
-<span class="source-line-no">093</span><span id="line-93">    FileStatus[] statuses = r.getRegionFileSystem().getFileSystem().listStatus(</span>
-<span class="source-line-no">094</span><span id="line-94">      new Path(r.getRegionFileSystem().getRegionDir(), HRegionFileSystem.REGION_INFO_FILE));</span>
-<span class="source-line-no">095</span><span id="line-95">    assertTrue(statuses != null &amp;&amp; statuses.length == 1);</span>
-<span class="source-line-no">096</span><span id="line-96">    return statuses[0].getModificationTime();</span>
-<span class="source-line-no">097</span><span id="line-97">  }</span>
-<span class="source-line-no">098</span><span id="line-98">}</span>
+<span class="source-line-no">064</span><span id="line-64">  @Test</span>
+<span class="source-line-no">065</span><span id="line-65">  public void testReadAndWriteRegionInfoFile() throws IOException, InterruptedException {</span>
+<span class="source-line-no">066</span><span id="line-66">    RegionInfo ri = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
+<span class="source-line-no">067</span><span id="line-67">    // Create a region. That'll write the .regioninfo file.</span>
+<span class="source-line-no">068</span><span id="line-68">    FSTableDescriptors fsTableDescriptors = new FSTableDescriptors(FS, ROOT_DIR);</span>
+<span class="source-line-no">069</span><span id="line-69">    FSTableDescriptors.tryUpdateAndGetMetaTableDescriptor(CONF, FS, ROOT_DIR);</span>
+<span class="source-line-no">070</span><span id="line-70">    HRegion r = HBaseTestingUtil.createRegionAndWAL(ri, ROOT_DIR, CONF,</span>
+<span class="source-line-no">071</span><span id="line-71">      fsTableDescriptors.get(TableName.META_TABLE_NAME));</span>
+<span class="source-line-no">072</span><span id="line-72">    // Get modtime on the file.</span>
+<span class="source-line-no">073</span><span id="line-73">    long modtime = getModTime(r);</span>
+<span class="source-line-no">074</span><span id="line-74">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
+<span class="source-line-no">075</span><span id="line-75">    Thread.sleep(1001);</span>
+<span class="source-line-no">076</span><span id="line-76">    r = HRegion.openHRegion(ROOT_DIR, ri, fsTableDescriptors.get(TableName.META_TABLE_NAME), null,</span>
+<span class="source-line-no">077</span><span id="line-77">      CONF);</span>
+<span class="source-line-no">078</span><span id="line-78">    // Ensure the file is not written for a second time.</span>
+<span class="source-line-no">079</span><span id="line-79">    long modtime2 = getModTime(r);</span>
+<span class="source-line-no">080</span><span id="line-80">    assertEquals(modtime, modtime2);</span>
+<span class="source-line-no">081</span><span id="line-81">    // Now load the file.</span>
+<span class="source-line-no">082</span><span id="line-82">    HRegionFileSystem.loadRegionInfoFileContent(r.getRegionFileSystem().getFileSystem(),</span>
+<span class="source-line-no">083</span><span id="line-83">      r.getRegionFileSystem().getRegionDir());</span>
+<span class="source-line-no">084</span><span id="line-84">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
+<span class="source-line-no">085</span><span id="line-85">  }</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">  private long getModTime(final HRegion r) throws IOException {</span>
+<span class="source-line-no">088</span><span id="line-88">    FileStatus[] statuses = r.getRegionFileSystem().getFileSystem().listStatus(</span>
+<span class="source-line-no">089</span><span id="line-89">      new Path(r.getRegionFileSystem().getRegionDir(), HRegionFileSystem.REGION_INFO_FILE));</span>
+<span class="source-line-no">090</span><span id="line-90">    assertTrue(statuses != null &amp;&amp; statuses.length == 1);</span>
+<span class="source-line-no">091</span><span id="line-91">    return statuses[0].getModificationTime();</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>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
index 06b3c50c8dd..811996be3ba 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html
@@ -30,8 +30,8 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.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.ArrayList;</span>
@@ -42,214 +42,211 @@
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.fs.Path;</span>
 <span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.Cell;</span>
 <span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.CellComparatorImpl;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.MemoryCompactionPolicy;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.PrivateCellUtil;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Scan;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.io.hfile.BlockCache;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.io.hfile.BlockCacheFactory;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.util.FSUtils;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.wal.WALEdit;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.wal.WALFactory;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.wal.WALKey;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.wal.WALSplitUtil;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.wal.WALStreamReader;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.junit.BeforeClass;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.junit.ClassRule;</span>
-<span class="source-line-no">059</span><span id="line-59">import org.junit.Rule;</span>
-<span class="source-line-no">060</span><span id="line-60">import org.junit.Test;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">062</span><span id="line-62">import org.junit.rules.TestName;</span>
-<span class="source-line-no">063</span><span id="line-63">import org.slf4j.Logger;</span>
-<span class="source-line-no">064</span><span id="line-64">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">/**</span>
-<span class="source-line-no">067</span><span id="line-67"> * Tests around replay of recovered.edits content.</span>
-<span class="source-line-no">068</span><span id="line-68"> */</span>
-<span class="source-line-no">069</span><span id="line-69">@Category({ MediumTests.class })</span>
-<span class="source-line-no">070</span><span id="line-70">public class TestRecoveredEdits {</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">  @ClassRule</span>
-<span class="source-line-no">073</span><span id="line-73">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">074</span><span id="line-74">    HBaseClassTestRule.forClass(TestRecoveredEdits.class);</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">077</span><span id="line-77">  private static final Logger LOG = LoggerFactory.getLogger(TestRecoveredEdits.class);</span>
-<span class="source-line-no">078</span><span id="line-78"></span>
-<span class="source-line-no">079</span><span id="line-79">  private static BlockCache blockCache;</span>
-<span class="source-line-no">080</span><span id="line-80"></span>
-<span class="source-line-no">081</span><span id="line-81">  @Rule</span>
-<span class="source-line-no">082</span><span id="line-82">  public TestName testName = new TestName();</span>
-<span class="source-line-no">083</span><span id="line-83"></span>
-<span class="source-line-no">084</span><span id="line-84">  /**</span>
-<span class="source-line-no">085</span><span id="line-85">   * Path to a recovered.edits file in hbase-server test resources folder. This is a little fragile</span>
-<span class="source-line-no">086</span><span id="line-86">   * getting this path to a file of 10M of edits.</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.MemoryCompactionPolicy;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.PrivateCellUtil;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Scan;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.io.hfile.BlockCache;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.io.hfile.BlockCacheFactory;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.util.FSUtils;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.wal.WALEdit;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.wal.WALFactory;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.wal.WALKey;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.wal.WALSplitUtil;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.wal.WALStreamReader;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">061</span><span id="line-61">import org.slf4j.Logger;</span>
+<span class="source-line-no">062</span><span id="line-62">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64">/**</span>
+<span class="source-line-no">065</span><span id="line-65"> * Tests around replay of recovered.edits content.</span>
+<span class="source-line-no">066</span><span id="line-66"> */</span>
+<span class="source-line-no">067</span><span id="line-67">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">068</span><span id="line-68">public class TestRecoveredEdits {</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">  private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">071</span><span id="line-71">  private static final Logger LOG = LoggerFactory.getLogger(TestRecoveredEdits.class);</span>
+<span class="source-line-no">072</span><span id="line-72"></span>
+<span class="source-line-no">073</span><span id="line-73">  private static BlockCache blockCache;</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">  private String methodName;</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  /**</span>
+<span class="source-line-no">078</span><span id="line-78">   * Path to a recovered.edits file in hbase-server test resources folder. This is a little fragile</span>
+<span class="source-line-no">079</span><span id="line-79">   * getting this path to a file of 10M of edits.</span>
+<span class="source-line-no">080</span><span id="line-80">   */</span>
+<span class="source-line-no">081</span><span id="line-81">  @SuppressWarnings("checkstyle:VisibilityModifier")</span>
+<span class="source-line-no">082</span><span id="line-82">  public static final Path RECOVEREDEDITS_PATH = new Path(</span>
+<span class="source-line-no">083</span><span id="line-83">    System.getProperty("test.build.classes", "target/test-classes"), "0000000000000016310");</span>
+<span class="source-line-no">084</span><span id="line-84"></span>
+<span class="source-line-no">085</span><span id="line-85">  /**</span>
+<span class="source-line-no">086</span><span id="line-86">   * Name of table referenced by edits in the recovered.edits file.</span>
 <span class="source-line-no">087</span><span id="line-87">   */</span>
-<span class="source-line-no">088</span><span id="line-88">  @SuppressWarnings("checkstyle:VisibilityModifier")</span>
-<span class="source-line-no">089</span><span id="line-89">  public static final Path RECOVEREDEDITS_PATH = new Path(</span>
-<span class="source-line-no">090</span><span id="line-90">    System.getProperty("test.build.classes", "target/test-classes"), "0000000000000016310");</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">   * Name of table referenced by edits in the recovered.edits file.</span>
-<span class="source-line-no">094</span><span id="line-94">   */</span>
-<span class="source-line-no">095</span><span id="line-95">  public static final String RECOVEREDEDITS_TABLENAME = "IntegrationTestBigLinkedList";</span>
-<span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">  /**</span>
-<span class="source-line-no">098</span><span id="line-98">   * Column family referenced by edits in the recovered.edits file.</span>
-<span class="source-line-no">099</span><span id="line-99">   */</span>
-<span class="source-line-no">100</span><span id="line-100">  public static final byte[] RECOVEREDEDITS_COLUMNFAMILY = Bytes.toBytes("meta");</span>
-<span class="source-line-no">101</span><span id="line-101">  public static final byte[][] RECOVEREDITS_COLUMNFAMILY_ARRAY =</span>
-<span class="source-line-no">102</span><span id="line-102">    new byte[][] { RECOVEREDEDITS_COLUMNFAMILY };</span>
-<span class="source-line-no">103</span><span id="line-103">  public static final ColumnFamilyDescriptor RECOVEREDEDITS_CFD =</span>
-<span class="source-line-no">104</span><span id="line-104">    ColumnFamilyDescriptorBuilder.newBuilder(RECOVEREDEDITS_COLUMNFAMILY).build();</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">   * Name of table mentioned edits from recovered.edits</span>
-<span class="source-line-no">108</span><span id="line-108">   */</span>
-<span class="source-line-no">109</span><span id="line-109">  @BeforeClass</span>
-<span class="source-line-no">110</span><span id="line-110">  public static void setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">111</span><span id="line-111">    blockCache = BlockCacheFactory.createBlockCache(TEST_UTIL.getConfiguration());</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">  /**</span>
-<span class="source-line-no">115</span><span id="line-115">   * HBASE-12782 ITBLL fails for me if generator does anything but 5M per maptask. Create a region.</span>
-<span class="source-line-no">116</span><span id="line-116">   * Close it. Then copy into place a file to replay, one that is bigger than configured flush size</span>
-<span class="source-line-no">117</span><span id="line-117">   * so we bring on lots of flushes. Then reopen and confirm all edits made it in.</span>
-<span class="source-line-no">118</span><span id="line-118">   */</span>
-<span class="source-line-no">119</span><span id="line-119">  @Test</span>
-<span class="source-line-no">120</span><span id="line-120">  public void testReplayWorksThoughLotsOfFlushing() throws IOException {</span>
-<span class="source-line-no">121</span><span id="line-121">    for (MemoryCompactionPolicy policy : MemoryCompactionPolicy.values()) {</span>
-<span class="source-line-no">122</span><span id="line-122">      testReplayWorksWithMemoryCompactionPolicy(policy);</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"></span>
-<span class="source-line-no">126</span><span id="line-126">  private void testReplayWorksWithMemoryCompactionPolicy(MemoryCompactionPolicy policy)</span>
-<span class="source-line-no">127</span><span id="line-127">    throws IOException {</span>
-<span class="source-line-no">128</span><span id="line-128">    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());</span>
-<span class="source-line-no">129</span><span id="line-129">    // Set it so we flush every 1M or so. Thats a lot.</span>
-<span class="source-line-no">130</span><span id="line-130">    conf.setInt(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 1024 * 1024);</span>
-<span class="source-line-no">131</span><span id="line-131">    conf.set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, String.valueOf(policy).toLowerCase());</span>
-<span class="source-line-no">132</span><span id="line-132">    TableDescriptor tableDescriptor =</span>
-<span class="source-line-no">133</span><span id="line-133">      TableDescriptorBuilder.newBuilder(TableName.valueOf(testName.getMethodName()))</span>
-<span class="source-line-no">134</span><span id="line-134">        .setColumnFamily(RECOVEREDEDITS_CFD).build();</span>
-<span class="source-line-no">135</span><span id="line-135">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableDescriptor.getTableName()).build();</span>
-<span class="source-line-no">136</span><span id="line-136">    final String encodedRegionName = hri.getEncodedName();</span>
-<span class="source-line-no">137</span><span id="line-137">    Path hbaseRootDir = TEST_UTIL.getDataTestDir();</span>
-<span class="source-line-no">138</span><span id="line-138">    FileSystem fs = FileSystem.get(TEST_UTIL.getConfiguration());</span>
-<span class="source-line-no">139</span><span id="line-139">    Path tableDir = CommonFSUtils.getTableDir(hbaseRootDir, tableDescriptor.getTableName());</span>
-<span class="source-line-no">140</span><span id="line-140">    HRegionFileSystem hrfs = new HRegionFileSystem(TEST_UTIL.getConfiguration(), fs, tableDir, hri);</span>
-<span class="source-line-no">141</span><span id="line-141">    if (fs.exists(hrfs.getRegionDir())) {</span>
-<span class="source-line-no">142</span><span id="line-142">      LOG.info("Region directory already exists. Deleting.");</span>
-<span class="source-line-no">143</span><span id="line-143">      fs.delete(hrfs.getRegionDir(), true);</span>
-<span class="source-line-no">144</span><span id="line-144">    }</span>
-<span class="source-line-no">145</span><span id="line-145">    HRegion region =</span>
-<span class="source-line-no">146</span><span id="line-146">      HBaseTestingUtil.createRegionAndWAL(hri, hbaseRootDir, conf, tableDescriptor, blockCache);</span>
-<span class="source-line-no">147</span><span id="line-147">    assertEquals(encodedRegionName, region.getRegionInfo().getEncodedName());</span>
-<span class="source-line-no">148</span><span id="line-148">    List&lt;String&gt; storeFiles = region.getStoreFileList(RECOVEREDITS_COLUMNFAMILY_ARRAY);</span>
-<span class="source-line-no">149</span><span id="line-149">    // There should be no store files.</span>
-<span class="source-line-no">150</span><span id="line-150">    assertTrue(storeFiles.isEmpty());</span>
-<span class="source-line-no">151</span><span id="line-151">    region.close();</span>
-<span class="source-line-no">152</span><span id="line-152">    Path regionDir = FSUtils.getRegionDirFromRootDir(hbaseRootDir, hri);</span>
-<span class="source-line-no">153</span><span id="line-153">    Path recoveredEditsDir = WALSplitUtil.getRegionDirRecoveredEditsDir(regionDir);</span>
-<span class="source-line-no">154</span><span id="line-154">    // Copy this file under the region's recovered.edits dir so it is replayed on reopen.</span>
-<span class="source-line-no">155</span><span id="line-155">    Path destination = new Path(recoveredEditsDir, RECOVEREDEDITS_PATH.getName());</span>
-<span class="source-line-no">156</span><span id="line-156">    fs.copyToLocalFile(RECOVEREDEDITS_PATH, destination);</span>
-<span class="source-line-no">157</span><span id="line-157">    assertTrue(fs.exists(destination));</span>
-<span class="source-line-no">158</span><span id="line-158">    // Now the file 0000000000000016310 is under recovered.edits, reopen the region to replay.</span>
-<span class="source-line-no">159</span><span id="line-159">    region = HRegion.openHRegion(region, null);</span>
-<span class="source-line-no">160</span><span id="line-160">    assertEquals(encodedRegionName, region.getRegionInfo().getEncodedName());</span>
-<span class="source-line-no">161</span><span id="line-161">    storeFiles = region.getStoreFileList(RECOVEREDITS_COLUMNFAMILY_ARRAY);</span>
-<span class="source-line-no">162</span><span id="line-162">    // Our 0000000000000016310 is 10MB. Most of the edits are for one region. Lets assume that if</span>
-<span class="source-line-no">163</span><span id="line-163">    // we flush at 1MB, that there are at least 3 flushed files that are there because of the</span>
-<span class="source-line-no">164</span><span id="line-164">    // replay of edits.</span>
-<span class="source-line-no">165</span><span id="line-165">    if (policy == MemoryCompactionPolicy.EAGER || policy == MemoryCompactionPolicy.ADAPTIVE) {</span>
-<span class="source-line-no">166</span><span id="line-166">      assertTrue("Files count=" + storeFiles.size(), storeFiles.size() &gt;= 1);</span>
-<span class="source-line-no">167</span><span id="line-167">    } else {</span>
-<span class="source-line-no">168</span><span id="line-168">      assertTrue("Files count=" + storeFiles.size(), storeFiles.size() &gt; 10);</span>
-<span class="source-line-no">169</span><span id="line-169">    }</span>
-<span class="source-line-no">170</span><span id="line-170">    // Now verify all edits made it into the region.</span>
-<span class="source-line-no">171</span><span id="line-171">    int count = verifyAllEditsMadeItIn(fs, conf, RECOVEREDEDITS_PATH, region);</span>
-<span class="source-line-no">172</span><span id="line-172">    assertTrue(count &gt; 0);</span>
-<span class="source-line-no">173</span><span id="line-173">    LOG.info("Checked " + count + " edits made it in");</span>
-<span class="source-line-no">174</span><span id="line-174">  }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176">  /** Returns Return how many edits seen. */</span>
-<span class="source-line-no">177</span><span id="line-177">  // Used by TestWALPlayer over in hbase-mapreduce too.</span>
-<span class="source-line-no">178</span><span id="line-178">  public static int verifyAllEditsMadeItIn(final FileSystem fs, final Configuration conf,</span>
-<span class="source-line-no">179</span><span id="line-179">    final Path edits, final HRegion region) throws IOException {</span>
-<span class="source-line-no">180</span><span id="line-180">    int count = 0;</span>
-<span class="source-line-no">181</span><span id="line-181">    // Read all cells from recover edits</span>
-<span class="source-line-no">182</span><span id="line-182">    List&lt;Cell&gt; walCells = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">183</span><span id="line-183">    try (WALStreamReader reader = WALFactory.createStreamReader(fs, edits, conf)) {</span>
-<span class="source-line-no">184</span><span id="line-184">      WAL.Entry entry;</span>
-<span class="source-line-no">185</span><span id="line-185">      while ((entry = reader.next()) != null) {</span>
-<span class="source-line-no">186</span><span id="line-186">        WALKey key = entry.getKey();</span>
-<span class="source-line-no">187</span><span id="line-187">        WALEdit val = entry.getEdit();</span>
-<span class="source-line-no">188</span><span id="line-188">        count++;</span>
-<span class="source-line-no">189</span><span id="line-189">        // Check this edit is for this region.</span>
-<span class="source-line-no">190</span><span id="line-190">        if (</span>
-<span class="source-line-no">191</span><span id="line-191">          !Bytes.equals(key.getEncodedRegionName(), region.getRegionInfo().getEncodedNameAsBytes())</span>
-<span class="source-line-no">192</span><span id="line-192">        ) {</span>
-<span class="source-line-no">193</span><span id="line-193">          continue;</span>
-<span class="source-line-no">194</span><span id="line-194">        }</span>
-<span class="source-line-no">195</span><span id="line-195">        Cell previous = null;</span>
-<span class="source-line-no">196</span><span id="line-196">        for (Cell cell : val.getCells()) {</span>
-<span class="source-line-no">197</span><span id="line-197">          if (WALEdit.isMetaEditFamily(cell)) {</span>
+<span class="source-line-no">088</span><span id="line-88">  public static final String RECOVEREDEDITS_TABLENAME = "IntegrationTestBigLinkedList";</span>
+<span class="source-line-no">089</span><span id="line-89"></span>
+<span class="source-line-no">090</span><span id="line-90">  /**</span>
+<span class="source-line-no">091</span><span id="line-91">   * Column family referenced by edits in the recovered.edits file.</span>
+<span class="source-line-no">092</span><span id="line-92">   */</span>
+<span class="source-line-no">093</span><span id="line-93">  public static final byte[] RECOVEREDEDITS_COLUMNFAMILY = Bytes.toBytes("meta");</span>
+<span class="source-line-no">094</span><span id="line-94">  public static final byte[][] RECOVEREDITS_COLUMNFAMILY_ARRAY =</span>
+<span class="source-line-no">095</span><span id="line-95">    new byte[][] { RECOVEREDEDITS_COLUMNFAMILY };</span>
+<span class="source-line-no">096</span><span id="line-96">  public static final ColumnFamilyDescriptor RECOVEREDEDITS_CFD =</span>
+<span class="source-line-no">097</span><span id="line-97">    ColumnFamilyDescriptorBuilder.newBuilder(RECOVEREDEDITS_COLUMNFAMILY).build();</span>
+<span class="source-line-no">098</span><span id="line-98"></span>
+<span class="source-line-no">099</span><span id="line-99">  /**</span>
+<span class="source-line-no">100</span><span id="line-100">   * Name of table mentioned edits from recovered.edits</span>
+<span class="source-line-no">101</span><span id="line-101">   */</span>
+<span class="source-line-no">102</span><span id="line-102">  @BeforeAll</span>
+<span class="source-line-no">103</span><span id="line-103">  public static void setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">104</span><span id="line-104">    blockCache = BlockCacheFactory.createBlockCache(TEST_UTIL.getConfiguration());</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">  @BeforeEach</span>
+<span class="source-line-no">108</span><span id="line-108">  public void setUp(TestInfo testInfo) {</span>
+<span class="source-line-no">109</span><span id="line-109">    methodName = testInfo.getTestMethod().get().getName();</span>
+<span class="source-line-no">110</span><span id="line-110">  }</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112">  /**</span>
+<span class="source-line-no">113</span><span id="line-113">   * HBASE-12782 ITBLL fails for me if generator does anything but 5M per maptask. Create a region.</span>
+<span class="source-line-no">114</span><span id="line-114">   * Close it. Then copy into place a file to replay, one that is bigger than configured flush size</span>
+<span class="source-line-no">115</span><span id="line-115">   * so we bring on lots of flushes. Then reopen and confirm all edits made it in.</span>
+<span class="source-line-no">116</span><span id="line-116">   */</span>
+<span class="source-line-no">117</span><span id="line-117">  @Test</span>
+<span class="source-line-no">118</span><span id="line-118">  public void testReplayWorksThoughLotsOfFlushing() throws IOException {</span>
+<span class="source-line-no">119</span><span id="line-119">    for (MemoryCompactionPolicy policy : MemoryCompactionPolicy.values()) {</span>
+<span class="source-line-no">120</span><span id="line-120">      testReplayWorksWithMemoryCompactionPolicy(policy);</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">  private void testReplayWorksWithMemoryCompactionPolicy(MemoryCompactionPolicy policy)</span>
+<span class="source-line-no">125</span><span id="line-125">    throws IOException {</span>
+<span class="source-line-no">126</span><span id="line-126">    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());</span>
+<span class="source-line-no">127</span><span id="line-127">    // Set it so we flush every 1M or so. Thats a lot.</span>
+<span class="source-line-no">128</span><span id="line-128">    conf.setInt(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, 1024 * 1024);</span>
+<span class="source-line-no">129</span><span id="line-129">    conf.set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, String.valueOf(policy).toLowerCase());</span>
+<span class="source-line-no">130</span><span id="line-130">    TableDescriptor tableDescriptor = TableDescriptorBuilder</span>
+<span class="source-line-no">131</span><span id="line-131">      .newBuilder(TableName.valueOf(methodName)).setColumnFamily(RECOVEREDEDITS_CFD).build();</span>
+<span class="source-line-no">132</span><span id="line-132">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableDescriptor.getTableName()).build();</span>
+<span class="source-line-no">133</span><span id="line-133">    final String encodedRegionName = hri.getEncodedName();</span>
+<span class="source-line-no">134</span><span id="line-134">    Path hbaseRootDir = TEST_UTIL.getDataTestDir();</span>
+<span class="source-line-no">135</span><span id="line-135">    FileSystem fs = FileSystem.get(TEST_UTIL.getConfiguration());</span>
+<span class="source-line-no">136</span><span id="line-136">    Path tableDir = CommonFSUtils.getTableDir(hbaseRootDir, tableDescriptor.getTableName());</span>
+<span class="source-line-no">137</span><span id="line-137">    HRegionFileSystem hrfs = new HRegionFileSystem(TEST_UTIL.getConfiguration(), fs, tableDir, hri);</span>
+<span class="source-line-no">138</span><span id="line-138">    if (fs.exists(hrfs.getRegionDir())) {</span>
+<span class="source-line-no">139</span><span id="line-139">      LOG.info("Region directory already exists. Deleting.");</span>
+<span class="source-line-no">140</span><span id="line-140">      fs.delete(hrfs.getRegionDir(), true);</span>
+<span class="source-line-no">141</span><span id="line-141">    }</span>
+<span class="source-line-no">142</span><span id="line-142">    HRegion region =</span>
+<span class="source-line-no">143</span><span id="line-143">      HBaseTestingUtil.createRegionAndWAL(hri, hbaseRootDir, conf, tableDescriptor, blockCache);</span>
+<span class="source-line-no">144</span><span id="line-144">    assertEquals(encodedRegionName, region.getRegionInfo().getEncodedName());</span>
+<span class="source-line-no">145</span><span id="line-145">    List&lt;String&gt; storeFiles = region.getStoreFileList(RECOVEREDITS_COLUMNFAMILY_ARRAY);</span>
+<span class="source-line-no">146</span><span id="line-146">    // There should be no store files.</span>
+<span class="source-line-no">147</span><span id="line-147">    assertTrue(storeFiles.isEmpty());</span>
+<span class="source-line-no">148</span><span id="line-148">    region.close();</span>
+<span class="source-line-no">149</span><span id="line-149">    Path regionDir = FSUtils.getRegionDirFromRootDir(hbaseRootDir, hri);</span>
+<span class="source-line-no">150</span><span id="line-150">    Path recoveredEditsDir = WALSplitUtil.getRegionDirRecoveredEditsDir(regionDir);</span>
+<span class="source-line-no">151</span><span id="line-151">    // Copy this file under the region's recovered.edits dir so it is replayed on reopen.</span>
+<span class="source-line-no">152</span><span id="line-152">    Path destination = new Path(recoveredEditsDir, RECOVEREDEDITS_PATH.getName());</span>
+<span class="source-line-no">153</span><span id="line-153">    fs.copyToLocalFile(RECOVEREDEDITS_PATH, destination);</span>
+<span class="source-line-no">154</span><span id="line-154">    assertTrue(fs.exists(destination));</span>
+<span class="source-line-no">155</span><span id="line-155">    // Now the file 0000000000000016310 is under recovered.edits, reopen the region to replay.</span>
+<span class="source-line-no">156</span><span id="line-156">    region = HRegion.openHRegion(region, null);</span>
+<span class="source-line-no">157</span><span id="line-157">    assertEquals(encodedRegionName, region.getRegionInfo().getEncodedName());</span>
+<span class="source-line-no">158</span><span id="line-158">    storeFiles = region.getStoreFileList(RECOVEREDITS_COLUMNFAMILY_ARRAY);</span>
+<span class="source-line-no">159</span><span id="line-159">    // Our 0000000000000016310 is 10MB. Most of the edits are for one region. Lets assume that if</span>
+<span class="source-line-no">160</span><span id="line-160">    // we flush at 1MB, that there are at least 3 flushed files that are there because of the</span>
+<span class="source-line-no">161</span><span id="line-161">    // replay of edits.</span>
+<span class="source-line-no">162</span><span id="line-162">    if (policy == MemoryCompactionPolicy.EAGER || policy == MemoryCompactionPolicy.ADAPTIVE) {</span>
+<span class="source-line-no">163</span><span id="line-163">      assertTrue(storeFiles.size() &gt;= 1, "Files count=" + storeFiles.size());</span>
+<span class="source-line-no">164</span><span id="line-164">    } else {</span>
+<span class="source-line-no">165</span><span id="line-165">      assertTrue(storeFiles.size() &gt; 10, "Files count=" + storeFiles.size());</span>
+<span class="source-line-no">166</span><span id="line-166">    }</span>
+<span class="source-line-no">167</span><span id="line-167">    // Now verify all edits made it into the region.</span>
+<span class="source-line-no">168</span><span id="line-168">    int count = verifyAllEditsMadeItIn(fs, conf, RECOVEREDEDITS_PATH, region);</span>
+<span class="source-line-no">169</span><span id="line-169">    assertTrue(count &gt; 0);</span>
+<span class="source-line-no">170</span><span id="line-170">    LOG.info("Checked " + count + " edits made it in");</span>
+<span class="source-line-no">171</span><span id="line-171">  }</span>
+<span class="source-line-no">172</span><span id="line-172"></span>
+<span class="source-line-no">173</span><span id="line-173">  /** Returns Return how many edits seen. */</span>
+<span class="source-line-no">174</span><span id="line-174">  // Used by TestWALPlayer over in hbase-mapreduce too.</span>
+<span class="source-line-no">175</span><span id="line-175">  public static int verifyAllEditsMadeItIn(final FileSystem fs, final Configuration conf,</span>
+<span class="source-line-no">176</span><span id="line-176">    final Path edits, final HRegion region) throws IOException {</span>
+<span class="source-line-no">177</span><span id="line-177">    int count = 0;</span>
+<span class="source-line-no">178</span><span id="line-178">    // Read all cells from recover edits</span>
+<span class="source-line-no">179</span><span id="line-179">    List&lt;Cell&gt; walCells = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">180</span><span id="line-180">    try (WALStreamReader reader = WALFactory.createStreamReader(fs, edits, conf)) {</span>
+<span class="source-line-no">181</span><span id="line-181">      WAL.Entry entry;</span>
+<span class="source-line-no">182</span><span id="line-182">      while ((entry = reader.next()) != null) {</span>
+<span class="source-line-no">183</span><span id="line-183">        WALKey key = entry.getKey();</span>
+<span class="source-line-no">184</span><span id="line-184">        WALEdit val = entry.getEdit();</span>
+<span class="source-line-no">185</span><span id="line-185">        count++;</span>
+<span class="source-line-no">186</span><span id="line-186">        // Check this edit is for this region.</span>
+<span class="source-line-no">187</span><span id="line-187">        if (</span>
+<span class="source-line-no">188</span><span id="line-188">          !Bytes.equals(key.getEncodedRegionName(), region.getRegionInfo().getEncodedNameAsBytes())</span>
+<span class="source-line-no">189</span><span id="line-189">        ) {</span>
+<span class="source-line-no">190</span><span id="line-190">          continue;</span>
+<span class="source-line-no">191</span><span id="line-191">        }</span>
+<span class="source-line-no">192</span><span id="line-192">        Cell previous = null;</span>
+<span class="source-line-no">193</span><span id="line-193">        for (Cell cell : val.getCells()) {</span>
+<span class="source-line-no">194</span><span id="line-194">          if (WALEdit.isMetaEditFamily(cell)) {</span>
+<span class="source-line-no">195</span><span id="line-195">            continue;</span>
+<span class="source-line-no">196</span><span id="line-196">          }</span>
+<span class="source-line-no">197</span><span id="line-197">          if (previous != null &amp;&amp; CellComparatorImpl.COMPARATOR.compareRows(previous, cell) == 0) {</span>
 <span class="source-line-no">198</span><span id="line-198">            continue;</span>
 <span class="source-line-no">199</span><span id="line-199">          }</span>
-<span class="source-line-no">200</span><span id="line-200">          if (previous != null &amp;&amp; CellComparatorImpl.COMPARATOR.compareRows(previous, cell) == 0) {</span>
-<span class="source-line-no">201</span><span id="line-201">            continue;</span>
-<span class="source-line-no">202</span><span id="line-202">          }</span>
-<span class="source-line-no">203</span><span id="line-203">          previous = cell;</span>
-<span class="source-line-no">204</span><span id="line-204">          walCells.add(cell);</span>
-<span class="source-line-no">205</span><span id="line-205">        }</span>
-<span class="source-line-no">206</span><span id="line-206">      }</span>
-<span class="source-line-no">207</span><span id="line-207">    }</span>
-<span class="source-line-no">208</span><span id="line-208"></span>
-<span class="source-line-no">209</span><span id="line-209">    // Read all cells from region</span>
-<span class="source-line-no">210</span><span id="line-210">    List&lt;Cell&gt; regionCells = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">211</span><span id="line-211">    try (RegionScanner scanner = region.getScanner(new Scan())) {</span>
-<span class="source-line-no">212</span><span id="line-212">      List&lt;Cell&gt; tmpCells;</span>
-<span class="source-line-no">213</span><span id="line-213">      do {</span>
-<span class="source-line-no">214</span><span id="line-214">        tmpCells = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">215</span><span id="line-215">        scanner.nextRaw(tmpCells);</span>
-<span class="source-line-no">216</span><span id="line-216">        regionCells.addAll(tmpCells);</span>
-<span class="source-line-no">217</span><span id="line-217">      } while (!tmpCells.isEmpty());</span>
-<span class="source-line-no">218</span><span id="line-218">    }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220">    Collections.sort(walCells, CellComparatorImpl.COMPARATOR);</span>
-<span class="source-line-no">221</span><span id="line-221">    int found = 0;</span>
-<span class="source-line-no">222</span><span id="line-222">    for (int i = 0, j = 0; i &lt; walCells.size() &amp;&amp; j &lt; regionCells.size();) {</span>
-<span class="source-line-no">223</span><span id="line-223">      int compareResult = PrivateCellUtil.compareKeyIgnoresMvcc(CellComparatorImpl.COMPARATOR,</span>
-<span class="source-line-no">224</span><span id="line-224">        walCells.get(i), regionCells.get(j));</span>
-<span class="source-line-no">225</span><span id="line-225">      if (compareResult == 0) {</span>
-<span class="source-line-no">226</span><span id="line-226">        i++;</span>
+<span class="source-line-no">200</span><span id="line-200">          previous = cell;</span>
+<span class="source-line-no">201</span><span id="line-201">          walCells.add(cell);</span>
+<span class="source-line-no">202</span><span id="line-202">        }</span>
+<span class="source-line-no">203</span><span id="line-203">      }</span>
+<span class="source-line-no">204</span><span id="line-204">    }</span>
+<span class="source-line-no">205</span><span id="line-205"></span>
+<span class="source-line-no">206</span><span id="line-206">    // Read all cells from region</span>
+<span class="source-line-no">207</span><span id="line-207">    List&lt;Cell&gt; regionCells = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">208</span><span id="line-208">    try (RegionScanner scanner = region.getScanner(new Scan())) {</span>
+<span class="source-line-no">209</span><span id="line-209">      List&lt;Cell&gt; tmpCells;</span>
+<span class="source-line-no">210</span><span id="line-210">      do {</span>
+<span class="source-line-no">211</span><span id="line-211">        tmpCells = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">212</span><span id="line-212">        scanner.nextRaw(tmpCells);</span>
+<span class="source-line-no">213</span><span id="line-213">        regionCells.addAll(tmpCells);</span>
+<span class="source-line-no">214</span><span id="line-214">      } while (!tmpCells.isEmpty());</span>
+<span class="source-line-no">215</span><span id="line-215">    }</span>
+<span class="source-line-no">216</span><span id="line-216"></span>
+<span class="source-line-no">217</span><span id="line-217">    Collections.sort(walCells, CellComparatorImpl.COMPARATOR);</span>
+<span class="source-line-no">218</span><span id="line-218">    int found = 0;</span>
+<span class="source-line-no">219</span><span id="line-219">    for (int i = 0, j = 0; i &lt; walCells.size() &amp;&amp; j &lt; regionCells.size();) {</span>
+<span class="source-line-no">220</span><span id="line-220">      int compareResult = PrivateCellUtil.compareKeyIgnoresMvcc(CellComparatorImpl.COMPARATOR,</span>
+<span class="source-line-no">221</span><span id="line-221">        walCells.get(i), regionCells.get(j));</span>
+<span class="source-line-no">222</span><span id="line-222">      if (compareResult == 0) {</span>
+<span class="source-line-no">223</span><span id="line-223">        i++;</span>
+<span class="source-line-no">224</span><span id="line-224">        j++;</span>
+<span class="source-line-no">225</span><span id="line-225">        found++;</span>
+<span class="source-line-no">226</span><span id="line-226">      } else if (compareResult &gt; 0) {</span>
 <span class="source-line-no">227</span><span id="line-227">        j++;</span>
-<span class="source-line-no">228</span><span id="line-228">        found++;</span>
-<span class="source-line-no">229</span><span id="line-229">      } else if (compareResult &gt; 0) {</span>
-<span class="source-line-no">230</span><span id="line-230">        j++;</span>
-<span class="source-line-no">231</span><span id="line-231">      } else {</span>
-<span class="source-line-no">232</span><span id="line-232">        i++;</span>
-<span class="source-line-no">233</span><span id="line-233">      }</span>
-<span class="source-line-no">234</span><span id="line-234">    }</span>
-<span class="source-line-no">235</span><span id="line-235">    assertEquals("Only found " + found + " cells in region, but there are " + walCells.size()</span>
-<span class="source-line-no">236</span><span id="line-236">      + " cells in recover edits", found, walCells.size());</span>
-<span class="source-line-no">237</span><span id="line-237">    return count;</span>
-<span class="source-line-no">238</span><span id="line-238">  }</span>
-<span class="source-line-no">239</span><span id="line-239">}</span>
+<span class="source-line-no">228</span><span id="line-228">      } else {</span>
+<span class="source-line-no">229</span><span id="line-229">        i++;</span>
+<span class="source-line-no">230</span><span id="line-230">      }</span>
+<span class="source-line-no">231</span><span id="line-231">    }</span>
+<span class="source-line-no">232</span><span id="line-232">    assertEquals(found, walCells.size(), "Only found " + found + " cells in region, but there are "</span>
+<span class="source-line-no">233</span><span id="line-233">      + walCells.size() + " cells in recover edits");</span>
+<span class="source-line-no">234</span><span id="line-234">    return count;</span>
+<span class="source-line-no">235</span><span id="line-235">  }</span>
+<span class="source-line-no">236</span><span id="line-236">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html
index fb61cbf7e52..f503bd831ad 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html
@@ -30,184 +30,176 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
-<span class="source-line-no">020</span><span id="line-20">import java.io.IOException;</span>
-<span class="source-line-no">021</span><span id="line-21">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">022</span><span id="line-22">import org.apache.hadoop.fs.FileSystem;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.KeyValue;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.ServerName;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.monitoring.TaskMonitor;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.CancelableProgressable;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.wal.WALEdit;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.wal.WALEditInternalHelper;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.wal.WALFactory;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.wal.WALKeyImpl;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.wal.WALProvider;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.wal.WALSplitUtil;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.junit.After;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.junit.Assert;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.junit.Before;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.junit.ClassRule;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.junit.Rule;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.junit.Test;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.junit.rules.TestName;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.mockito.Mockito;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.slf4j.Logger;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60">/**</span>
-<span class="source-line-no">061</span><span id="line-61"> * HBASE-21031 If replay edits fails, we need to make sure memstore is rollbacked And if MSLAB is</span>
-<span class="source-line-no">062</span><span id="line-62"> * used, all chunk is released too.</span>
-<span class="source-line-no">063</span><span id="line-63"> */</span>
-<span class="source-line-no">064</span><span id="line-64">@Category({ RegionServerTests.class, SmallTests.class })</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.fail;</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 org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.fs.FileSystem;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.fs.Path;</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.KeyValue;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.ServerName;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.monitoring.TaskMonitor;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.util.CancelableProgressable;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.wal.WALEdit;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.wal.WALEditInternalHelper;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.wal.WALFactory;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.wal.WALKeyImpl;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.wal.WALProvider;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.wal.WALSplitUtil;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.mockito.Mockito;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.slf4j.Logger;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.slf4j.LoggerFactory;</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"> * HBASE-21031 If replay edits fails, we need to make sure memstore is rollbacked And if MSLAB is</span>
+<span class="source-line-no">061</span><span id="line-61"> * used, all chunk is released too.</span>
+<span class="source-line-no">062</span><span id="line-62"> */</span>
+<span class="source-line-no">063</span><span id="line-63">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">064</span><span id="line-64">@Tag(SmallTests.TAG)</span>
 <span class="source-line-no">065</span><span id="line-65">public class TestRecoveredEditsReplayAndAbort {</span>
-<span class="source-line-no">066</span><span id="line-66">  @ClassRule</span>
-<span class="source-line-no">067</span><span id="line-67">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">068</span><span id="line-68">    HBaseClassTestRule.forClass(TestRecoveredEditsReplayAndAbort.class);</span>
-<span class="source-line-no">069</span><span id="line-69"></span>
-<span class="source-line-no">070</span><span id="line-70">  private static final Logger LOG = LoggerFactory.getLogger(TestRecoveredEditsReplayAndAbort.class);</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">  protected final byte[] row = Bytes.toBytes("rowA");</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">  protected final static byte[] fam1 = Bytes.toBytes("colfamily11");</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  @Rule</span>
-<span class="source-line-no">077</span><span id="line-77">  public TestName name = new TestName();</span>
-<span class="source-line-no">078</span><span id="line-78"></span>
-<span class="source-line-no">079</span><span id="line-79">  // Test names</span>
-<span class="source-line-no">080</span><span id="line-80">  protected TableName tableName;</span>
-<span class="source-line-no">081</span><span id="line-81">  protected String method;</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  protected static HBaseTestingUtil TEST_UTIL;</span>
-<span class="source-line-no">084</span><span id="line-84">  public static Configuration CONF;</span>
-<span class="source-line-no">085</span><span id="line-85">  private HRegion region = null;</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">  @Before</span>
-<span class="source-line-no">088</span><span id="line-88">  public void setup() throws IOException {</span>
-<span class="source-line-no">089</span><span id="line-89">    TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">090</span><span id="line-90">    CONF = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">091</span><span id="line-91">    method = name.getMethodName();</span>
-<span class="source-line-no">092</span><span id="line-92">    tableName = TableName.valueOf(method);</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">  private static final Logger LOG = LoggerFactory.getLogger(TestRecoveredEditsReplayAndAbort.class);</span>
+<span class="source-line-no">068</span><span id="line-68"></span>
+<span class="source-line-no">069</span><span id="line-69">  protected final byte[] row = Bytes.toBytes("rowA");</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">  protected final static byte[] fam1 = Bytes.toBytes("colfamily11");</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 names</span>
+<span class="source-line-no">074</span><span id="line-74">  protected TableName tableName;</span>
+<span class="source-line-no">075</span><span id="line-75">  protected String method;</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  protected static HBaseTestingUtil TEST_UTIL;</span>
+<span class="source-line-no">078</span><span id="line-78">  public static Configuration CONF;</span>
+<span class="source-line-no">079</span><span id="line-79">  private HRegion region = null;</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">  @BeforeEach</span>
+<span class="source-line-no">082</span><span id="line-82">  public void setup(TestInfo testInfo) throws IOException {</span>
+<span class="source-line-no">083</span><span id="line-83">    TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">084</span><span id="line-84">    CONF = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">085</span><span id="line-85">    method = testInfo.getTestMethod().get().getName();</span>
+<span class="source-line-no">086</span><span id="line-86">    tableName = TableName.valueOf(method);</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">  @AfterEach</span>
+<span class="source-line-no">090</span><span id="line-90">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">091</span><span id="line-91">    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());</span>
+<span class="source-line-no">092</span><span id="line-92">    TEST_UTIL.cleanupTestDir();</span>
 <span class="source-line-no">093</span><span id="line-93">  }</span>
 <span class="source-line-no">094</span><span id="line-94"></span>
-<span class="source-line-no">095</span><span id="line-95">  @After</span>
-<span class="source-line-no">096</span><span id="line-96">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">097</span><span id="line-97">    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());</span>
-<span class="source-line-no">098</span><span id="line-98">    TEST_UTIL.cleanupTestDir();</span>
-<span class="source-line-no">099</span><span id="line-99">  }</span>
-<span class="source-line-no">100</span><span id="line-100"></span>
-<span class="source-line-no">101</span><span id="line-101">  @Test</span>
-<span class="source-line-no">102</span><span id="line-102">  public void test() throws Exception {</span>
-<span class="source-line-no">103</span><span id="line-103">    // set flush size to 10MB</span>
-<span class="source-line-no">104</span><span id="line-104">    CONF.setInt("hbase.hregion.memstore.flush.size", 1024 * 1024 * 10);</span>
-<span class="source-line-no">105</span><span id="line-105">    // set the report interval to a very small value</span>
-<span class="source-line-no">106</span><span id="line-106">    CONF.setInt("hbase.hstore.report.interval.edits", 1);</span>
-<span class="source-line-no">107</span><span id="line-107">    CONF.setInt("hbase.hstore.report.period", 0);</span>
-<span class="source-line-no">108</span><span id="line-108">    // mock a RegionServerServices</span>
-<span class="source-line-no">109</span><span id="line-109">    final RegionServerAccounting rsAccounting = new RegionServerAccounting(CONF);</span>
-<span class="source-line-no">110</span><span id="line-110">    RegionServerServices rs = Mockito.mock(RegionServerServices.class);</span>
-<span class="source-line-no">111</span><span id="line-111">    ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null,</span>
-<span class="source-line-no">112</span><span id="line-112">      MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT);</span>
-<span class="source-line-no">113</span><span id="line-113">    Mockito.when(rs.getRegionServerAccounting()).thenReturn(rsAccounting);</span>
-<span class="source-line-no">114</span><span id="line-114">    Mockito.when(rs.isAborted()).thenReturn(false);</span>
-<span class="source-line-no">115</span><span id="line-115">    Mockito.when(rs.getNonceManager()).thenReturn(null);</span>
-<span class="source-line-no">116</span><span id="line-116">    Mockito.when(rs.getServerName()).thenReturn(ServerName.valueOf("test", 0, 111));</span>
-<span class="source-line-no">117</span><span id="line-117">    Mockito.when(rs.getConfiguration()).thenReturn(CONF);</span>
-<span class="source-line-no">118</span><span id="line-118">    // create a region</span>
-<span class="source-line-no">119</span><span id="line-119">    TableName testTable = TableName.valueOf("testRecoveredEidtsReplayAndAbort");</span>
-<span class="source-line-no">120</span><span id="line-120">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(testTable)</span>
-<span class="source-line-no">121</span><span id="line-121">      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(fam1).build()).build();</span>
-<span class="source-line-no">122</span><span id="line-122">    RegionInfo info = RegionInfoBuilder.newBuilder(htd.getTableName()).build();</span>
-<span class="source-line-no">123</span><span id="line-123">    Path logDir = TEST_UTIL.getDataTestDirOnTestFS("TestRecoveredEidtsReplayAndAbort.log");</span>
-<span class="source-line-no">124</span><span id="line-124">    final WAL wal = HBaseTestingUtil.createWal(CONF, logDir, info);</span>
-<span class="source-line-no">125</span><span id="line-125">    Path rootDir = TEST_UTIL.getDataTestDir();</span>
-<span class="source-line-no">126</span><span id="line-126">    Path tableDir = CommonFSUtils.getTableDir(rootDir, info.getTable());</span>
-<span class="source-line-no">127</span><span id="line-127">    HRegionFileSystem.createRegionOnFileSystem(CONF, TEST_UTIL.getTestFileSystem(), tableDir, info);</span>
-<span class="source-line-no">128</span><span id="line-128">    region = HRegion.newHRegion(tableDir, wal, TEST_UTIL.getTestFileSystem(), CONF, info, htd, rs,</span>
-<span class="source-line-no">129</span><span id="line-129">      rs.getKeyManagementService());</span>
-<span class="source-line-no">130</span><span id="line-130">    // create some recovered.edits</span>
-<span class="source-line-no">131</span><span id="line-131">    final WALFactory wals = new WALFactory(CONF, method);</span>
-<span class="source-line-no">132</span><span id="line-132">    try {</span>
-<span class="source-line-no">133</span><span id="line-133">      Path regiondir = region.getRegionFileSystem().getRegionDir();</span>
-<span class="source-line-no">134</span><span id="line-134">      FileSystem fs = region.getRegionFileSystem().getFileSystem();</span>
-<span class="source-line-no">135</span><span id="line-135">      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();</span>
-<span class="source-line-no">136</span><span id="line-136"></span>
-<span class="source-line-no">137</span><span id="line-137">      Path recoveredEditsDir = WALSplitUtil.getRegionDirRecoveredEditsDir(regiondir);</span>
-<span class="source-line-no">138</span><span id="line-138">      long maxSeqId = 1200;</span>
-<span class="source-line-no">139</span><span id="line-139">      long minSeqId = 1000;</span>
-<span class="source-line-no">140</span><span id="line-140">      long totalEdits = maxSeqId - minSeqId;</span>
-<span class="source-line-no">141</span><span id="line-141">      for (long i = minSeqId; i &lt;= maxSeqId; i += 100) {</span>
-<span class="source-line-no">142</span><span id="line-142">        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));</span>
-<span class="source-line-no">143</span><span id="line-143">        LOG.info("Begin to write recovered.edits : " + recoveredEdits);</span>
-<span class="source-line-no">144</span><span id="line-144">        fs.create(recoveredEdits);</span>
-<span class="source-line-no">145</span><span id="line-145">        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);</span>
-<span class="source-line-no">146</span><span id="line-146">        for (long j = i; j &lt; i + 100; j++) {</span>
-<span class="source-line-no">147</span><span id="line-147">          long time = System.nanoTime();</span>
-<span class="source-line-no">148</span><span id="line-148">          WALEdit edit = new WALEdit();</span>
-<span class="source-line-no">149</span><span id="line-149">          // 200KB kv</span>
-<span class="source-line-no">150</span><span id="line-150">          byte[] value = new byte[200 * 1024];</span>
-<span class="source-line-no">151</span><span id="line-151">          Bytes.random(value);</span>
-<span class="source-line-no">152</span><span id="line-152">          WALEditInternalHelper.addExtendedCell(edit,</span>
-<span class="source-line-no">153</span><span id="line-153">            new KeyValue(row, fam1, Bytes.toBytes(j), time, KeyValue.Type.Put, value));</span>
-<span class="source-line-no">154</span><span id="line-154">          writer.append(new WAL.Entry(</span>
-<span class="source-line-no">155</span><span id="line-155">            new WALKeyImpl(regionName, tableName, j, time, HConstants.DEFAULT_CLUSTER_ID), edit));</span>
-<span class="source-line-no">156</span><span id="line-156">        }</span>
-<span class="source-line-no">157</span><span id="line-157">        writer.close();</span>
-<span class="source-line-no">158</span><span id="line-158">      }</span>
-<span class="source-line-no">159</span><span id="line-159">      TaskMonitor.get().createStatus(method);</span>
-<span class="source-line-no">160</span><span id="line-160">      // try to replay the edits</span>
-<span class="source-line-no">161</span><span id="line-161">      try {</span>
-<span class="source-line-no">162</span><span id="line-162">        region.initialize(new CancelableProgressable() {</span>
-<span class="source-line-no">163</span><span id="line-163">          private long replayedEdits = 0;</span>
-<span class="source-line-no">164</span><span id="line-164"></span>
-<span class="source-line-no">165</span><span id="line-165">          @Override</span>
-<span class="source-line-no">166</span><span id="line-166">          public boolean progress() {</span>
-<span class="source-line-no">167</span><span id="line-167">            replayedEdits++;</span>
-<span class="source-line-no">168</span><span id="line-168">            // during replay, rsAccounting should align with global memstore, because</span>
-<span class="source-line-no">169</span><span id="line-169">            // there is only one memstore here</span>
-<span class="source-line-no">170</span><span id="line-170">            Assert.assertEquals(rsAccounting.getGlobalMemStoreDataSize(),</span>
-<span class="source-line-no">171</span><span id="line-171">              region.getMemStoreDataSize());</span>
-<span class="source-line-no">172</span><span id="line-172">            Assert.assertEquals(rsAccounting.getGlobalMemStoreHeapSize(),</span>
-<span class="source-line-no">173</span><span id="line-173">              region.getMemStoreHeapSize());</span>
-<span class="source-line-no">174</span><span id="line-174">            Assert.assertEquals(rsAccounting.getGlobalMemStoreOffHeapSize(),</span>
-<span class="source-line-no">175</span><span id="line-175">              region.getMemStoreOffHeapSize());</span>
-<span class="source-line-no">176</span><span id="line-176">            // abort the replay before finishing, leaving some edits in the memory</span>
-<span class="source-line-no">177</span><span id="line-177">            return replayedEdits &lt; totalEdits - 10;</span>
-<span class="source-line-no">178</span><span id="line-178">          }</span>
-<span class="source-line-no">179</span><span id="line-179">        });</span>
-<span class="source-line-no">180</span><span id="line-180">        Assert.fail("Should not reach here");</span>
-<span class="source-line-no">181</span><span id="line-181">      } catch (IOException t) {</span>
-<span class="source-line-no">182</span><span id="line-182">        LOG.info("Current memstore: " + region.getMemStoreDataSize() + ", "</span>
-<span class="source-line-no">183</span><span id="line-183">          + region.getMemStoreHeapSize() + ", " + region.getMemStoreOffHeapSize());</span>
-<span class="source-line-no">184</span><span id="line-184">      }</span>
-<span class="source-line-no">185</span><span id="line-185">      // After aborting replay, there should be no data in the memory</span>
-<span class="source-line-no">186</span><span id="line-186">      Assert.assertEquals(0, rsAccounting.getGlobalMemStoreDataSize());</span>
-<span class="source-line-no">187</span><span id="line-187">      Assert.assertEquals(0, region.getMemStoreDataSize());</span>
-<span class="source-line-no">188</span><span id="line-188">      // All the chunk in the MSLAB should be recycled, otherwise, there might be</span>
-<span class="source-line-no">189</span><span id="line-189">      // a memory leak.</span>
-<span class="source-line-no">190</span><span id="line-190">      Assert.assertEquals(0, ChunkCreator.getInstance().numberOfMappedChunks());</span>
-<span class="source-line-no">191</span><span id="line-191">    } finally {</span>
-<span class="source-line-no">192</span><span id="line-192">      HBaseTestingUtil.closeRegionAndWAL(this.region);</span>
-<span class="source-line-no">193</span><span id="line-193">      this.region = null;</span>
-<span class="source-line-no">194</span><span id="line-194">      wals.close();</span>
-<span class="source-line-no">195</span><span id="line-195">    }</span>
-<span class="source-line-no">196</span><span id="line-196">  }</span>
-<span class="source-line-no">197</span><span id="line-197">}</span>
+<span class="source-line-no">095</span><span id="line-95">  @Test</span>
+<span class="source-line-no">096</span><span id="line-96">  public void test() throws Exception {</span>
+<span class="source-line-no">097</span><span id="line-97">    // set flush size to 10MB</span>
+<span class="source-line-no">098</span><span id="line-98">    CONF.setInt("hbase.hregion.memstore.flush.size", 1024 * 1024 * 10);</span>
+<span class="source-line-no">099</span><span id="line-99">    // set the report interval to a very small value</span>
+<span class="source-line-no">100</span><span id="line-100">    CONF.setInt("hbase.hstore.report.interval.edits", 1);</span>
+<span class="source-line-no">101</span><span id="line-101">    CONF.setInt("hbase.hstore.report.period", 0);</span>
+<span class="source-line-no">102</span><span id="line-102">    // mock a RegionServerServices</span>
+<span class="source-line-no">103</span><span id="line-103">    final RegionServerAccounting rsAccounting = new RegionServerAccounting(CONF);</span>
+<span class="source-line-no">104</span><span id="line-104">    RegionServerServices rs = Mockito.mock(RegionServerServices.class);</span>
+<span class="source-line-no">105</span><span id="line-105">    ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null,</span>
+<span class="source-line-no">106</span><span id="line-106">      MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT);</span>
+<span class="source-line-no">107</span><span id="line-107">    Mockito.when(rs.getRegionServerAccounting()).thenReturn(rsAccounting);</span>
+<span class="source-line-no">108</span><span id="line-108">    Mockito.when(rs.isAborted()).thenReturn(false);</span>
+<span class="source-line-no">109</span><span id="line-109">    Mockito.when(rs.getNonceManager()).thenReturn(null);</span>
+<span class="source-line-no">110</span><span id="line-110">    Mockito.when(rs.getServerName()).thenReturn(ServerName.valueOf("test", 0, 111));</span>
+<span class="source-line-no">111</span><span id="line-111">    Mockito.when(rs.getConfiguration()).thenReturn(CONF);</span>
+<span class="source-line-no">112</span><span id="line-112">    // create a region</span>
+<span class="source-line-no">113</span><span id="line-113">    TableName testTable = TableName.valueOf("testRecoveredEidtsReplayAndAbort");</span>
+<span class="source-line-no">114</span><span id="line-114">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(testTable)</span>
+<span class="source-line-no">115</span><span id="line-115">      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(fam1).build()).build();</span>
+<span class="source-line-no">116</span><span id="line-116">    RegionInfo info = RegionInfoBuilder.newBuilder(htd.getTableName()).build();</span>
+<span class="source-line-no">117</span><span id="line-117">    Path logDir = TEST_UTIL.getDataTestDirOnTestFS("TestRecoveredEidtsReplayAndAbort.log");</span>
+<span class="source-line-no">118</span><span id="line-118">    final WAL wal = HBaseTestingUtil.createWal(CONF, logDir, info);</span>
+<span class="source-line-no">119</span><span id="line-119">    Path rootDir = TEST_UTIL.getDataTestDir();</span>
+<span class="source-line-no">120</span><span id="line-120">    Path tableDir = CommonFSUtils.getTableDir(rootDir, info.getTable());</span>
+<span class="source-line-no">121</span><span id="line-121">    HRegionFileSystem.createRegionOnFileSystem(CONF, TEST_UTIL.getTestFileSystem(), tableDir, info);</span>
+<span class="source-line-no">122</span><span id="line-122">    region = HRegion.newHRegion(tableDir, wal, TEST_UTIL.getTestFileSystem(), CONF, info, htd, rs,</span>
+<span class="source-line-no">123</span><span id="line-123">      rs.getKeyManagementService());</span>
+<span class="source-line-no">124</span><span id="line-124">    // create some recovered.edits</span>
+<span class="source-line-no">125</span><span id="line-125">    final WALFactory wals = new WALFactory(CONF, method);</span>
+<span class="source-line-no">126</span><span id="line-126">    try {</span>
+<span class="source-line-no">127</span><span id="line-127">      Path regiondir = region.getRegionFileSystem().getRegionDir();</span>
+<span class="source-line-no">128</span><span id="line-128">      FileSystem fs = region.getRegionFileSystem().getFileSystem();</span>
+<span class="source-line-no">129</span><span id="line-129">      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();</span>
+<span class="source-line-no">130</span><span id="line-130"></span>
+<span class="source-line-no">131</span><span id="line-131">      Path recoveredEditsDir = WALSplitUtil.getRegionDirRecoveredEditsDir(regiondir);</span>
+<span class="source-line-no">132</span><span id="line-132">      long maxSeqId = 1200;</span>
+<span class="source-line-no">133</span><span id="line-133">      long minSeqId = 1000;</span>
+<span class="source-line-no">134</span><span id="line-134">      long totalEdits = maxSeqId - minSeqId;</span>
+<span class="source-line-no">135</span><span id="line-135">      for (long i = minSeqId; i &lt;= maxSeqId; i += 100) {</span>
+<span class="source-line-no">136</span><span id="line-136">        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));</span>
+<span class="source-line-no">137</span><span id="line-137">        LOG.info("Begin to write recovered.edits : " + recoveredEdits);</span>
+<span class="source-line-no">138</span><span id="line-138">        fs.create(recoveredEdits);</span>
+<span class="source-line-no">139</span><span id="line-139">        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);</span>
+<span class="source-line-no">140</span><span id="line-140">        for (long j = i; j &lt; i + 100; j++) {</span>
+<span class="source-line-no">141</span><span id="line-141">          long time = System.nanoTime();</span>
+<span class="source-line-no">142</span><span id="line-142">          WALEdit edit = new WALEdit();</span>
+<span class="source-line-no">143</span><span id="line-143">          // 200KB kv</span>
+<span class="source-line-no">144</span><span id="line-144">          byte[] value = new byte[200 * 1024];</span>
+<span class="source-line-no">145</span><span id="line-145">          Bytes.random(value);</span>
+<span class="source-line-no">146</span><span id="line-146">          WALEditInternalHelper.addExtendedCell(edit,</span>
+<span class="source-line-no">147</span><span id="line-147">            new KeyValue(row, fam1, Bytes.toBytes(j), time, KeyValue.Type.Put, value));</span>
+<span class="source-line-no">148</span><span id="line-148">          writer.append(new WAL.Entry(</span>
+<span class="source-line-no">149</span><span id="line-149">            new WALKeyImpl(regionName, tableName, j, time, HConstants.DEFAULT_CLUSTER_ID), edit));</span>
+<span class="source-line-no">150</span><span id="line-150">        }</span>
+<span class="source-line-no">151</span><span id="line-151">        writer.close();</span>
+<span class="source-line-no">152</span><span id="line-152">      }</span>
+<span class="source-line-no">153</span><span id="line-153">      TaskMonitor.get().createStatus(method);</span>
+<span class="source-line-no">154</span><span id="line-154">      // try to replay the edits</span>
+<span class="source-line-no">155</span><span id="line-155">      try {</span>
+<span class="source-line-no">156</span><span id="line-156">        region.initialize(new CancelableProgressable() {</span>
+<span class="source-line-no">157</span><span id="line-157">          private long replayedEdits = 0;</span>
+<span class="source-line-no">158</span><span id="line-158"></span>
+<span class="source-line-no">159</span><span id="line-159">          @Override</span>
+<span class="source-line-no">160</span><span id="line-160">          public boolean progress() {</span>
+<span class="source-line-no">161</span><span id="line-161">            replayedEdits++;</span>
+<span class="source-line-no">162</span><span id="line-162">            // during replay, rsAccounting should align with global memstore, because</span>
+<span class="source-line-no">163</span><span id="line-163">            // there is only one memstore here</span>
+<span class="source-line-no">164</span><span id="line-164">            assertEquals(rsAccounting.getGlobalMemStoreDataSize(), region.getMemStoreDataSize());</span>
+<span class="source-line-no">165</span><span id="line-165">            assertEquals(rsAccounting.getGlobalMemStoreHeapSize(), region.getMemStoreHeapSize());</span>
+<span class="source-line-no">166</span><span id="line-166">            assertEquals(rsAccounting.getGlobalMemStoreOffHeapSize(),</span>
+<span class="source-line-no">167</span><span id="line-167">              region.getMemStoreOffHeapSize());</span>
+<span class="source-line-no">168</span><span id="line-168">            // abort the replay before finishing, leaving some edits in the memory</span>
+<span class="source-line-no">169</span><span id="line-169">            return replayedEdits &lt; totalEdits - 10;</span>
+<span class="source-line-no">170</span><span id="line-170">          }</span>
+<span class="source-line-no">171</span><span id="line-171">        });</span>
+<span class="source-line-no">172</span><span id="line-172">        fail("Should not reach here");</span>
+<span class="source-line-no">173</span><span id="line-173">      } catch (IOException t) {</span>
+<span class="source-line-no">174</span><span id="line-174">        LOG.info("Current memstore: " + region.getMemStoreDataSize() + ", "</span>
+<span class="source-line-no">175</span><span id="line-175">          + region.getMemStoreHeapSize() + ", " + region.getMemStoreOffHeapSize());</span>
+<span class="source-line-no">176</span><span id="line-176">      }</span>
+<span class="source-line-no">177</span><span id="line-177">      // After aborting replay, there should be no data in the memory</span>
+<span class="source-line-no">178</span><span id="line-178">      assertEquals(0, rsAccounting.getGlobalMemStoreDataSize());</span>
+<span class="source-line-no">179</span><span id="line-179">      assertEquals(0, region.getMemStoreDataSize());</span>
+<span class="source-line-no">180</span><span id="line-180">      // All the chunk in the MSLAB should be recycled, otherwise, there might be</span>
+<span class="source-line-no">181</span><span id="line-181">      // a memory leak.</span>
+<span class="source-line-no">182</span><span id="line-182">      assertEquals(0, ChunkCreator.getInstance().numberOfMappedChunks());</span>
+<span class="source-line-no">183</span><span id="line-183">    } finally {</span>
+<span class="source-line-no">184</span><span id="line-184">      HBaseTestingUtil.closeRegionAndWAL(this.region);</span>
+<span class="source-line-no">185</span><span id="line-185">      this.region = null;</span>
+<span class="source-line-no">186</span><span id="line-186">      wals.close();</span>
+<span class="source-line-no">187</span><span id="line-187">    }</span>
+<span class="source-line-no">188</span><span id="line-188">  }</span>
+<span class="source-line-no">189</span><span id="line-189">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
index f0d21191129..66858742087 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
@@ -30,18 +30,18 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.fail;</span>
-<span class="source-line-no">021</span><span id="line-21"></span>
-<span class="source-line-no">022</span><span id="line-22">import java.lang.reflect.Method;</span>
-<span class="source-line-no">023</span><span id="line-23">import java.net.InetSocketAddress;</span>
-<span class="source-line-no">024</span><span id="line-24">import java.net.URI;</span>
-<span class="source-line-no">025</span><span id="line-25">import java.util.ArrayList;</span>
-<span class="source-line-no">026</span><span id="line-26">import java.util.List;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.BlockLocation;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.FileStatus;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.fs.permission.FsPermission;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.fail;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assumptions.assumeTrue;</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.lang.reflect.Method;</span>
+<span class="source-line-no">024</span><span id="line-24">import java.net.InetSocketAddress;</span>
+<span class="source-line-no">025</span><span id="line-25">import java.net.URI;</span>
+<span class="source-line-no">026</span><span id="line-26">import java.util.ArrayList;</span>
+<span class="source-line-no">027</span><span id="line-27">import java.util.List;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.BlockLocation;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.fs.FileStatus;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.fs.Path;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.fs.permission.FsPermission;</span>
 <span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
 <span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.TableName;</span>
 <span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.Table;</span>
@@ -51,136 +51,131 @@
 <span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hdfs.DistributedFileSystem;</span>
 <span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hdfs.server.datanode.DataNode;</span>
 <span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.util.Progressable;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.junit.AfterClass;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.junit.Assume;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.junit.BeforeClass;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.junit.ClassRule;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.junit.Test;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">047</span><span id="line-47"></span>
-<span class="source-line-no">048</span><span id="line-48">/**</span>
-<span class="source-line-no">049</span><span id="line-49"> * Tests the ability to specify favored nodes for a region.</span>
-<span class="source-line-no">050</span><span id="line-50"> */</span>
-<span class="source-line-no">051</span><span id="line-51">@Category({ RegionServerTests.class, MediumTests.class })</span>
-<span class="source-line-no">052</span><span id="line-52">public class TestRegionFavoredNodes {</span>
-<span class="source-line-no">053</span><span id="line-53"></span>
-<span class="source-line-no">054</span><span id="line-54">  @ClassRule</span>
-<span class="source-line-no">055</span><span id="line-55">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">056</span><span id="line-56">    HBaseClassTestRule.forClass(TestRegionFavoredNodes.class);</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">  private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">059</span><span id="line-59">  private static Table table;</span>
-<span class="source-line-no">060</span><span id="line-60">  private static final TableName TABLE_NAME = TableName.valueOf("table");</span>
-<span class="source-line-no">061</span><span id="line-61">  private static final byte[] COLUMN_FAMILY = Bytes.toBytes("family");</span>
-<span class="source-line-no">062</span><span id="line-62">  private static final int FAVORED_NODES_NUM = 3;</span>
-<span class="source-line-no">063</span><span id="line-63">  private static final int REGION_SERVERS = 6;</span>
-<span class="source-line-no">064</span><span id="line-64">  private static final int FLUSHES = 3;</span>
-<span class="source-line-no">065</span><span id="line-65">  private static Method createWithFavoredNode = null;</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67">  @BeforeClass</span>
-<span class="source-line-no">068</span><span id="line-68">  public static void setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">069</span><span id="line-69">    try {</span>
-<span class="source-line-no">070</span><span id="line-70">      createWithFavoredNode = DistributedFileSystem.class.getDeclaredMethod("create", Path.class,</span>
-<span class="source-line-no">071</span><span id="line-71">        FsPermission.class, boolean.class, int.class, short.class, long.class, Progressable.class,</span>
-<span class="source-line-no">072</span><span id="line-72">        InetSocketAddress[].class);</span>
-<span class="source-line-no">073</span><span id="line-73">    } catch (NoSuchMethodException nm) {</span>
-<span class="source-line-no">074</span><span id="line-74">      return;</span>
-<span class="source-line-no">075</span><span id="line-75">    }</span>
-<span class="source-line-no">076</span><span id="line-76">    TEST_UTIL.startMiniCluster(REGION_SERVERS);</span>
-<span class="source-line-no">077</span><span id="line-77">    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, COLUMN_FAMILY);</span>
-<span class="source-line-no">078</span><span id="line-78">    TEST_UTIL.waitUntilAllRegionsAssigned(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">  @AfterClass</span>
-<span class="source-line-no">082</span><span id="line-82">  public static void tearDownAfterClass() throws Exception {</span>
-<span class="source-line-no">083</span><span id="line-83">    // guard against failure in setup</span>
-<span class="source-line-no">084</span><span id="line-84">    if (table != null) {</span>
-<span class="source-line-no">085</span><span id="line-85">      table.close();</span>
-<span class="source-line-no">086</span><span id="line-86">    }</span>
-<span class="source-line-no">087</span><span id="line-87">    if (createWithFavoredNode == null) {</span>
-<span class="source-line-no">088</span><span id="line-88">      return;</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_UTIL.shutdownMiniCluster();</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">  @Test</span>
-<span class="source-line-no">094</span><span id="line-94">  public void testFavoredNodes() throws Exception {</span>
-<span class="source-line-no">095</span><span id="line-95">    Assume.assumeTrue(createWithFavoredNode != null);</span>
-<span class="source-line-no">096</span><span id="line-96">    // Get the addresses of the datanodes in the cluster.</span>
-<span class="source-line-no">097</span><span id="line-97">    InetSocketAddress[] nodes = new InetSocketAddress[REGION_SERVERS];</span>
-<span class="source-line-no">098</span><span id="line-98">    List&lt;DataNode&gt; datanodes = TEST_UTIL.getDFSCluster().getDataNodes();</span>
-<span class="source-line-no">099</span><span id="line-99">    Method selfAddress;</span>
-<span class="source-line-no">100</span><span id="line-100">    try {</span>
-<span class="source-line-no">101</span><span id="line-101">      selfAddress = DataNode.class.getMethod("getSelfAddr");</span>
-<span class="source-line-no">102</span><span id="line-102">    } catch (NoSuchMethodException ne) {</span>
-<span class="source-line-no">103</span><span id="line-103">      selfAddress = DataNode.class.getMethod("getXferAddress");</span>
-<span class="source-line-no">104</span><span id="line-104">    }</span>
+<span class="source-line-no">041</span><span id="line-41">import org.junit.jupiter.api.AfterAll;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">/**</span>
+<span class="source-line-no">047</span><span id="line-47"> * Tests the ability to specify favored nodes for a region.</span>
+<span class="source-line-no">048</span><span id="line-48"> */</span>
+<span class="source-line-no">049</span><span id="line-49">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">050</span><span id="line-50">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">051</span><span id="line-51">public class TestRegionFavoredNodes {</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">  private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">054</span><span id="line-54">  private static Table table;</span>
+<span class="source-line-no">055</span><span id="line-55">  private static final TableName TABLE_NAME = TableName.valueOf("table");</span>
+<span class="source-line-no">056</span><span id="line-56">  private static final byte[] COLUMN_FAMILY = Bytes.toBytes("family");</span>
+<span class="source-line-no">057</span><span id="line-57">  private static final int FAVORED_NODES_NUM = 3;</span>
+<span class="source-line-no">058</span><span id="line-58">  private static final int REGION_SERVERS = 6;</span>
+<span class="source-line-no">059</span><span id="line-59">  private static final int FLUSHES = 3;</span>
+<span class="source-line-no">060</span><span id="line-60">  private static Method createWithFavoredNode = null;</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">  @BeforeAll</span>
+<span class="source-line-no">063</span><span id="line-63">  public static void setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">064</span><span id="line-64">    try {</span>
+<span class="source-line-no">065</span><span id="line-65">      createWithFavoredNode = DistributedFileSystem.class.getDeclaredMethod("create", Path.class,</span>
+<span class="source-line-no">066</span><span id="line-66">        FsPermission.class, boolean.class, int.class, short.class, long.class, Progressable.class,</span>
+<span class="source-line-no">067</span><span id="line-67">        InetSocketAddress[].class);</span>
+<span class="source-line-no">068</span><span id="line-68">    } catch (NoSuchMethodException nm) {</span>
+<span class="source-line-no">069</span><span id="line-69">      return;</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.startMiniCluster(REGION_SERVERS);</span>
+<span class="source-line-no">072</span><span id="line-72">    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, COLUMN_FAMILY);</span>
+<span class="source-line-no">073</span><span id="line-73">    TEST_UTIL.waitUntilAllRegionsAssigned(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"></span>
+<span class="source-line-no">076</span><span id="line-76">  @AfterAll</span>
+<span class="source-line-no">077</span><span id="line-77">  public static void tearDownAfterClass() throws Exception {</span>
+<span class="source-line-no">078</span><span id="line-78">    // guard against failure in setup</span>
+<span class="source-line-no">079</span><span id="line-79">    if (table != null) {</span>
+<span class="source-line-no">080</span><span id="line-80">      table.close();</span>
+<span class="source-line-no">081</span><span id="line-81">    }</span>
+<span class="source-line-no">082</span><span id="line-82">    if (createWithFavoredNode == null) {</span>
+<span class="source-line-no">083</span><span id="line-83">      return;</span>
+<span class="source-line-no">084</span><span id="line-84">    }</span>
+<span class="source-line-no">085</span><span id="line-85">    TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">086</span><span id="line-86">  }</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88">  @Test</span>
+<span class="source-line-no">089</span><span id="line-89">  public void testFavoredNodes() throws Exception {</span>
+<span class="source-line-no">090</span><span id="line-90">    assumeTrue(createWithFavoredNode != null);</span>
+<span class="source-line-no">091</span><span id="line-91">    // Get the addresses of the datanodes in the cluster.</span>
+<span class="source-line-no">092</span><span id="line-92">    InetSocketAddress[] nodes = new InetSocketAddress[REGION_SERVERS];</span>
+<span class="source-line-no">093</span><span id="line-93">    List&lt;DataNode&gt; datanodes = TEST_UTIL.getDFSCluster().getDataNodes();</span>
+<span class="source-line-no">094</span><span id="line-94">    Method selfAddress;</span>
+<span class="source-line-no">095</span><span id="line-95">    try {</span>
+<span class="source-line-no">096</span><span id="line-96">      selfAddress = DataNode.class.getMethod("getSelfAddr");</span>
+<span class="source-line-no">097</span><span id="line-97">    } catch (NoSuchMethodException ne) {</span>
+<span class="source-line-no">098</span><span id="line-98">      selfAddress = DataNode.class.getMethod("getXferAddress");</span>
+<span class="source-line-no">099</span><span id="line-99">    }</span>
+<span class="source-line-no">100</span><span id="line-100">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
+<span class="source-line-no">101</span><span id="line-101">      nodes[i] = (InetSocketAddress) selfAddress.invoke(datanodes.get(i));</span>
+<span class="source-line-no">102</span><span id="line-102">    }</span>
+<span class="source-line-no">103</span><span id="line-103"></span>
+<span class="source-line-no">104</span><span id="line-104">    String[] nodeNames = new String[REGION_SERVERS];</span>
 <span class="source-line-no">105</span><span id="line-105">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
-<span class="source-line-no">106</span><span id="line-106">      nodes[i] = (InetSocketAddress) selfAddress.invoke(datanodes.get(i));</span>
+<span class="source-line-no">106</span><span id="line-106">      nodeNames[i] = nodes[i].getAddress().getHostAddress() + ":" + nodes[i].getPort();</span>
 <span class="source-line-no">107</span><span id="line-107">    }</span>
 <span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">    String[] nodeNames = new String[REGION_SERVERS];</span>
-<span class="source-line-no">110</span><span id="line-110">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
-<span class="source-line-no">111</span><span id="line-111">      nodeNames[i] = nodes[i].getAddress().getHostAddress() + ":" + nodes[i].getPort();</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">    // For each region, choose some datanodes as the favored nodes then assign</span>
-<span class="source-line-no">115</span><span id="line-115">    // them as favored nodes through the region.</span>
-<span class="source-line-no">116</span><span id="line-116">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
-<span class="source-line-no">117</span><span id="line-117">      HRegionServer server = TEST_UTIL.getHBaseCluster().getRegionServer(i);</span>
-<span class="source-line-no">118</span><span id="line-118">      List&lt;HRegion&gt; regions = server.getRegions(TABLE_NAME);</span>
-<span class="source-line-no">119</span><span id="line-119">      for (HRegion region : regions) {</span>
-<span class="source-line-no">120</span><span id="line-120">        List&lt;</span>
-<span class="source-line-no">121</span><span id="line-121">          org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName&gt; favoredNodes =</span>
-<span class="source-line-no">122</span><span id="line-122">            new ArrayList&lt;&gt;(3);</span>
-<span class="source-line-no">123</span><span id="line-123">        String encodedRegionName = region.getRegionInfo().getEncodedName();</span>
-<span class="source-line-no">124</span><span id="line-124">        for (int j = 0; j &lt; FAVORED_NODES_NUM; j++) {</span>
-<span class="source-line-no">125</span><span id="line-125">          org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName.Builder b =</span>
-<span class="source-line-no">126</span><span id="line-126">            org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName.newBuilder();</span>
-<span class="source-line-no">127</span><span id="line-127">          b.setHostName(nodes[(i + j) % REGION_SERVERS].getAddress().getHostAddress());</span>
-<span class="source-line-no">128</span><span id="line-128">          b.setPort(nodes[(i + j) % REGION_SERVERS].getPort());</span>
-<span class="source-line-no">129</span><span id="line-129">          b.setStartCode(-1);</span>
-<span class="source-line-no">130</span><span id="line-130">          favoredNodes.add(b.build());</span>
-<span class="source-line-no">131</span><span id="line-131">        }</span>
-<span class="source-line-no">132</span><span id="line-132">        server.updateRegionFavoredNodesMapping(encodedRegionName, favoredNodes);</span>
-<span class="source-line-no">133</span><span id="line-133">      }</span>
-<span class="source-line-no">134</span><span id="line-134">    }</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136">    // Write some data to each region and flush. Repeat some number of times to</span>
-<span class="source-line-no">137</span><span id="line-137">    // get multiple files for each region.</span>
-<span class="source-line-no">138</span><span id="line-138">    for (int i = 0; i &lt; FLUSHES; i++) {</span>
-<span class="source-line-no">139</span><span id="line-139">      TEST_UTIL.loadTable(table, COLUMN_FAMILY, false);</span>
-<span class="source-line-no">140</span><span id="line-140">      TEST_UTIL.flush();</span>
-<span class="source-line-no">141</span><span id="line-141">    }</span>
-<span class="source-line-no">142</span><span id="line-142"></span>
-<span class="source-line-no">143</span><span id="line-143">    // For each region, check the block locations of each file and ensure that</span>
-<span class="source-line-no">144</span><span id="line-144">    // they are consistent with the favored nodes for that region.</span>
-<span class="source-line-no">145</span><span id="line-145">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
-<span class="source-line-no">146</span><span id="line-146">      HRegionServer server = TEST_UTIL.getHBaseCluster().getRegionServer(i);</span>
-<span class="source-line-no">147</span><span id="line-147">      List&lt;HRegion&gt; regions = server.getRegions(TABLE_NAME);</span>
-<span class="source-line-no">148</span><span id="line-148">      for (HRegion region : regions) {</span>
-<span class="source-line-no">149</span><span id="line-149">        List&lt;String&gt; files = region.getStoreFileList(new byte[][] { COLUMN_FAMILY });</span>
-<span class="source-line-no">150</span><span id="line-150">        for (String file : files) {</span>
-<span class="source-line-no">151</span><span id="line-151">          FileStatus status = TEST_UTIL.getDFSCluster().getFileSystem()</span>
-<span class="source-line-no">152</span><span id="line-152">            .getFileStatus(new Path(new URI(file).getPath()));</span>
-<span class="source-line-no">153</span><span id="line-153">          BlockLocation[] lbks = ((DistributedFileSystem) TEST_UTIL.getDFSCluster().getFileSystem())</span>
-<span class="source-line-no">154</span><span id="line-154">            .getFileBlockLocations(status, 0, Long.MAX_VALUE);</span>
-<span class="source-line-no">155</span><span id="line-155">          for (BlockLocation lbk : lbks) {</span>
-<span class="source-line-no">156</span><span id="line-156">            locations: for (String info : lbk.getNames()) {</span>
-<span class="source-line-no">157</span><span id="line-157">              for (int j = 0; j &lt; FAVORED_NODES_NUM; j++) {</span>
-<span class="source-line-no">158</span><span id="line-158">                if (info.equals(nodeNames[(i + j) % REGION_SERVERS])) {</span>
-<span class="source-line-no">159</span><span id="line-159">                  continue locations;</span>
-<span class="source-line-no">160</span><span id="line-160">                }</span>
-<span class="source-line-no">161</span><span id="line-161">              }</span>
-<span class="source-line-no">162</span><span id="line-162">              // This block was at a location that was not a favored location.</span>
-<span class="source-line-no">163</span><span id="line-163">              fail("Block location " + info + " not a favored node");</span>
-<span class="source-line-no">164</span><span id="line-164">            }</span>
-<span class="source-line-no">165</span><span id="line-165">          }</span>
-<span class="source-line-no">166</span><span id="line-166">        }</span>
-<span class="source-line-no">167</span><span id="line-167">      }</span>
-<span class="source-line-no">168</span><span id="line-168">    }</span>
-<span class="source-line-no">169</span><span id="line-169">  }</span>
-<span class="source-line-no">170</span><span id="line-170">}</span>
+<span class="source-line-no">109</span><span id="line-109">    // For each region, choose some datanodes as the favored nodes then assign</span>
+<span class="source-line-no">110</span><span id="line-110">    // them as favored nodes through the region.</span>
+<span class="source-line-no">111</span><span id="line-111">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
+<span class="source-line-no">112</span><span id="line-112">      HRegionServer server = TEST_UTIL.getHBaseCluster().getRegionServer(i);</span>
+<span class="source-line-no">113</span><span id="line-113">      List&lt;HRegion&gt; regions = server.getRegions(TABLE_NAME);</span>
+<span class="source-line-no">114</span><span id="line-114">      for (HRegion region : regions) {</span>
+<span class="source-line-no">115</span><span id="line-115">        List&lt;</span>
+<span class="source-line-no">116</span><span id="line-116">          org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName&gt; favoredNodes =</span>
+<span class="source-line-no">117</span><span id="line-117">            new ArrayList&lt;&gt;(3);</span>
+<span class="source-line-no">118</span><span id="line-118">        String encodedRegionName = region.getRegionInfo().getEncodedName();</span>
+<span class="source-line-no">119</span><span id="line-119">        for (int j = 0; j &lt; FAVORED_NODES_NUM; j++) {</span>
+<span class="source-line-no">120</span><span id="line-120">          org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName.Builder b =</span>
+<span class="source-line-no">121</span><span id="line-121">            org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName.newBuilder();</span>
+<span class="source-line-no">122</span><span id="line-122">          b.setHostName(nodes[(i + j) % REGION_SERVERS].getAddress().getHostAddress());</span>
+<span class="source-line-no">123</span><span id="line-123">          b.setPort(nodes[(i + j) % REGION_SERVERS].getPort());</span>
+<span class="source-line-no">124</span><span id="line-124">          b.setStartCode(-1);</span>
+<span class="source-line-no">125</span><span id="line-125">          favoredNodes.add(b.build());</span>
+<span class="source-line-no">126</span><span id="line-126">        }</span>
+<span class="source-line-no">127</span><span id="line-127">        server.updateRegionFavoredNodesMapping(encodedRegionName, favoredNodes);</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"></span>
+<span class="source-line-no">131</span><span id="line-131">    // Write some data to each region and flush. Repeat some number of times to</span>
+<span class="source-line-no">132</span><span id="line-132">    // get multiple files for each region.</span>
+<span class="source-line-no">133</span><span id="line-133">    for (int i = 0; i &lt; FLUSHES; i++) {</span>
+<span class="source-line-no">134</span><span id="line-134">      TEST_UTIL.loadTable(table, COLUMN_FAMILY, false);</span>
+<span class="source-line-no">135</span><span id="line-135">      TEST_UTIL.flush();</span>
+<span class="source-line-no">136</span><span id="line-136">    }</span>
+<span class="source-line-no">137</span><span id="line-137"></span>
+<span class="source-line-no">138</span><span id="line-138">    // For each region, check the block locations of each file and ensure that</span>
+<span class="source-line-no">139</span><span id="line-139">    // they are consistent with the favored nodes for that region.</span>
+<span class="source-line-no">140</span><span id="line-140">    for (int i = 0; i &lt; REGION_SERVERS; i++) {</span>
+<span class="source-line-no">141</span><span id="line-141">      HRegionServer server = TEST_UTIL.getHBaseCluster().getRegionServer(i);</span>
+<span class="source-line-no">142</span><span id="line-142">      List&lt;HRegion&gt; regions = server.getRegions(TABLE_NAME);</span>
+<span class="source-line-no">143</span><span id="line-143">      for (HRegion region : regions) {</span>
+<span class="source-line-no">144</span><span id="line-144">        List&lt;String&gt; files = region.getStoreFileList(new byte[][] { COLUMN_FAMILY });</span>
+<span class="source-line-no">145</span><span id="line-145">        for (String file : files) {</span>
+<span class="source-line-no">146</span><span id="line-146">          FileStatus status = TEST_UTIL.getDFSCluster().getFileSystem()</span>
+<span class="source-line-no">147</span><span id="line-147">            .getFileStatus(new Path(new URI(file).getPath()));</span>
+<span class="source-line-no">148</span><span id="line-148">          BlockLocation[] lbks = ((DistributedFileSystem) TEST_UTIL.getDFSCluster().getFileSystem())</span>
+<span class="source-line-no">149</span><span id="line-149">            .getFileBlockLocations(status, 0, Long.MAX_VALUE);</span>
+<span class="source-line-no">150</span><span id="line-150">          for (BlockLocation lbk : lbks) {</span>
+<span class="source-line-no">151</span><span id="line-151">            locations: for (String info : lbk.getNames()) {</span>
+<span class="source-line-no">152</span><span id="line-152">              for (int j = 0; j &lt; FAVORED_NODES_NUM; j++) {</span>
+<span class="source-line-no">153</span><span id="line-153">                if (info.equals(nodeNames[(i + j) % REGION_SERVERS])) {</span>
+<span class="source-line-no">154</span><span id="line-154">                  continue locations;</span>
+<span class="source-line-no">155</span><span id="line-155">                }</span>
+<span class="source-line-no">156</span><span id="line-156">              }</span>
+<span class="source-line-no">157</span><span id="line-157">              // This block was at a location that was not a favored location.</span>
+<span class="source-line-no">158</span><span id="line-158">              fail("Block location " + info + " not a favored node");</span>
+<span class="source-line-no">159</span><span id="line-159">            }</span>
+<span class="source-line-no">160</span><span id="line-160">          }</span>
+<span class="source-line-no">161</span><span id="line-161">        }</span>
+<span class="source-line-no">162</span><span id="line-162">      }</span>
+<span class="source-line-no">163</span><span id="line-163">    }</span>
+<span class="source-line-no">164</span><span id="line-164">  }</span>
+<span class="source-line-no">165</span><span id="line-165">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html
index 0c5e8619e89..837858a1eed 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html
@@ -30,7 +30,7 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertEquals;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.util.ArrayList;</span>
@@ -39,224 +39,216 @@
 <span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.Cell;</span>
-<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.Durability;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.Increment;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.Scan;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.TestIncrementsFromClientSide;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.regionserver.wal.FSHLog;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.junit.After;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.junit.Before;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.junit.ClassRule;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.junit.Rule;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.junit.Test;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.junit.rules.TestName;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.slf4j.Logger;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">/**</span>
-<span class="source-line-no">052</span><span id="line-52"> * Increments with some concurrency against a region to ensure we get the right answer. Test is</span>
-<span class="source-line-no">053</span><span id="line-53"> * parameterized to run the fast and slow path increments; if fast,</span>
-<span class="source-line-no">054</span><span id="line-54"> * HRegion.INCREMENT_FAST_BUT_NARROW_CONSISTENCY_KEY is true.</span>
-<span class="source-line-no">055</span><span id="line-55"> * &lt;p&gt;</span>
-<span class="source-line-no">056</span><span id="line-56"> * There is similar test up in TestAtomicOperation. It does a test where it has 100 threads doing</span>
-<span class="source-line-no">057</span><span id="line-57"> * increments across two column families all on one row and the increments are connected to prove</span>
-<span class="source-line-no">058</span><span id="line-58"> * atomicity on row.</span>
-<span class="source-line-no">059</span><span id="line-59"> */</span>
-<span class="source-line-no">060</span><span id="line-60">@Category(MediumTests.class)</span>
-<span class="source-line-no">061</span><span id="line-61">public class TestRegionIncrement {</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  @ClassRule</span>
-<span class="source-line-no">064</span><span id="line-64">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">065</span><span id="line-65">    HBaseClassTestRule.forClass(TestRegionIncrement.class);</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionIncrement.class);</span>
-<span class="source-line-no">068</span><span id="line-68">  @Rule</span>
-<span class="source-line-no">069</span><span id="line-69">  public TestName name = new TestName();</span>
-<span class="source-line-no">070</span><span id="line-70">  private static HBaseTestingUtil TEST_UTIL;</span>
-<span class="source-line-no">071</span><span id="line-71">  private final static byte[] INCREMENT_BYTES = Bytes.toBytes("increment");</span>
-<span class="source-line-no">072</span><span id="line-72">  private static final int THREAD_COUNT = 10;</span>
-<span class="source-line-no">073</span><span id="line-73">  private static final int INCREMENT_COUNT = 10000;</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">  @Before</span>
-<span class="source-line-no">076</span><span id="line-76">  public void setUp() throws Exception {</span>
-<span class="source-line-no">077</span><span id="line-77">    TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">078</span><span id="line-78">  }</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">  @After</span>
-<span class="source-line-no">081</span><span id="line-81">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">082</span><span id="line-82">    TEST_UTIL.cleanupTestDir();</span>
-<span class="source-line-no">083</span><span id="line-83">  }</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">  private HRegion getRegion(final Configuration conf, final String tableName) throws IOException {</span>
-<span class="source-line-no">086</span><span id="line-86">    FSHLog wal = new FSHLog(FileSystem.get(conf), TEST_UTIL.getDataTestDir(),</span>
-<span class="source-line-no">087</span><span id="line-87">      TEST_UTIL.getDataTestDir().toString(), conf);</span>
-<span class="source-line-no">088</span><span id="line-88">    wal.init();</span>
-<span class="source-line-no">089</span><span id="line-89">    ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null,</span>
-<span class="source-line-no">090</span><span id="line-90">      MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT);</span>
-<span class="source-line-no">091</span><span id="line-91">    return TEST_UTIL.createLocalHRegion(TableName.valueOf(tableName), HConstants.EMPTY_BYTE_ARRAY,</span>
-<span class="source-line-no">092</span><span id="line-92">      HConstants.EMPTY_BYTE_ARRAY, conf, false, Durability.SKIP_WAL, wal, INCREMENT_BYTES);</span>
-<span class="source-line-no">093</span><span id="line-93">  }</span>
-<span class="source-line-no">094</span><span id="line-94"></span>
-<span class="source-line-no">095</span><span id="line-95">  private void closeRegion(final HRegion region) throws IOException {</span>
-<span class="source-line-no">096</span><span id="line-96">    region.close();</span>
-<span class="source-line-no">097</span><span id="line-97">    region.getWAL().close();</span>
-<span class="source-line-no">098</span><span id="line-98">  }</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">  @Test</span>
-<span class="source-line-no">101</span><span id="line-101">  public void testMVCCCausingMisRead() throws IOException {</span>
-<span class="source-line-no">102</span><span id="line-102">    final HRegion region = getRegion(TEST_UTIL.getConfiguration(), this.name.getMethodName());</span>
-<span class="source-line-no">103</span><span id="line-103">    try {</span>
-<span class="source-line-no">104</span><span id="line-104">      // ADD TEST HERE!!</span>
-<span class="source-line-no">105</span><span id="line-105">    } finally {</span>
-<span class="source-line-no">106</span><span id="line-106">      closeRegion(region);</span>
-<span class="source-line-no">107</span><span id="line-107">    }</span>
-<span class="source-line-no">108</span><span id="line-108">  }</span>
-<span class="source-line-no">109</span><span id="line-109"></span>
-<span class="source-line-no">110</span><span id="line-110">  /**</span>
-<span class="source-line-no">111</span><span id="line-111">   * Increments a single cell a bunch of times.</span>
-<span class="source-line-no">112</span><span id="line-112">   */</span>
-<span class="source-line-no">113</span><span id="line-113">  private static class SingleCellIncrementer extends Thread {</span>
-<span class="source-line-no">114</span><span id="line-114">    private final int count;</span>
-<span class="source-line-no">115</span><span id="line-115">    private final HRegion region;</span>
-<span class="source-line-no">116</span><span id="line-116">    private final Increment increment;</span>
-<span class="source-line-no">117</span><span id="line-117"></span>
-<span class="source-line-no">118</span><span id="line-118">    SingleCellIncrementer(final int i, final int count, final HRegion region,</span>
-<span class="source-line-no">119</span><span id="line-119">      final Increment increment) {</span>
-<span class="source-line-no">120</span><span id="line-120">      super("" + i);</span>
-<span class="source-line-no">121</span><span id="line-121">      setDaemon(true);</span>
-<span class="source-line-no">122</span><span id="line-122">      this.count = count;</span>
-<span class="source-line-no">123</span><span id="line-123">      this.region = region;</span>
-<span class="source-line-no">124</span><span id="line-124">      this.increment = increment;</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">    @Override</span>
-<span class="source-line-no">128</span><span id="line-128">    public void run() {</span>
-<span class="source-line-no">129</span><span id="line-129">      for (int i = 0; i &lt; this.count; i++) {</span>
-<span class="source-line-no">130</span><span id="line-130">        try {</span>
-<span class="source-line-no">131</span><span id="line-131">          this.region.increment(this.increment);</span>
-<span class="source-line-no">132</span><span id="line-132">          // LOG.info(getName() + " " + i);</span>
-<span class="source-line-no">133</span><span id="line-133">        } catch (IOException e) {</span>
-<span class="source-line-no">134</span><span id="line-134">          throw new RuntimeException(e);</span>
-<span class="source-line-no">135</span><span id="line-135">        }</span>
-<span class="source-line-no">136</span><span id="line-136">      }</span>
-<span class="source-line-no">137</span><span id="line-137">    }</span>
-<span class="source-line-no">138</span><span id="line-138">  }</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>
-<span class="source-line-no">141</span><span id="line-141">   * Increments a random row's Cell &lt;code&gt;count&lt;/code&gt; times.</span>
-<span class="source-line-no">142</span><span id="line-142">   */</span>
-<span class="source-line-no">143</span><span id="line-143">  private static class CrossRowCellIncrementer extends Thread {</span>
-<span class="source-line-no">144</span><span id="line-144">    private final int count;</span>
-<span class="source-line-no">145</span><span id="line-145">    private final HRegion region;</span>
-<span class="source-line-no">146</span><span id="line-146">    private final Increment[] increments;</span>
-<span class="source-line-no">147</span><span id="line-147"></span>
-<span class="source-line-no">148</span><span id="line-148">    CrossRowCellIncrementer(final int i, final int count, final HRegion region, final int range) {</span>
-<span class="source-line-no">149</span><span id="line-149">      super("" + i);</span>
-<span class="source-line-no">150</span><span id="line-150">      setDaemon(true);</span>
-<span class="source-line-no">151</span><span id="line-151">      this.count = count;</span>
-<span class="source-line-no">152</span><span id="line-152">      this.region = region;</span>
-<span class="source-line-no">153</span><span id="line-153">      this.increments = new Increment[range];</span>
-<span class="source-line-no">154</span><span id="line-154">      for (int ii = 0; ii &lt; range; ii++) {</span>
-<span class="source-line-no">155</span><span id="line-155">        this.increments[ii] = new Increment(Bytes.toBytes(i));</span>
-<span class="source-line-no">156</span><span id="line-156">        this.increments[ii].addColumn(INCREMENT_BYTES, INCREMENT_BYTES, 1);</span>
-<span class="source-line-no">157</span><span id="line-157">      }</span>
-<span class="source-line-no">158</span><span id="line-158">    }</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160">    @Override</span>
-<span class="source-line-no">161</span><span id="line-161">    public void run() {</span>
-<span class="source-line-no">162</span><span id="line-162">      for (int i = 0; i &lt; this.count; i++) {</span>
-<span class="source-line-no">163</span><span id="line-163">        try {</span>
-<span class="source-line-no">164</span><span id="line-164">          int index = ThreadLocalRandom.current().nextInt(0, this.increments.length);</span>
-<span class="source-line-no">165</span><span id="line-165">          this.region.increment(this.increments[index]);</span>
-<span class="source-line-no">166</span><span id="line-166">          // LOG.info(getName() + " " + index);</span>
-<span class="source-line-no">167</span><span id="line-167">        } catch (IOException e) {</span>
-<span class="source-line-no">168</span><span id="line-168">          throw new RuntimeException(e);</span>
-<span class="source-line-no">169</span><span id="line-169">        }</span>
-<span class="source-line-no">170</span><span id="line-170">      }</span>
-<span class="source-line-no">171</span><span id="line-171">    }</span>
-<span class="source-line-no">172</span><span id="line-172">  }</span>
-<span class="source-line-no">173</span><span id="line-173"></span>
-<span class="source-line-no">174</span><span id="line-174">  /**</span>
-<span class="source-line-no">175</span><span id="line-175">   * Have each thread update its own Cell. Avoid contention with another thread.</span>
-<span class="source-line-no">176</span><span id="line-176">   */</span>
-<span class="source-line-no">177</span><span id="line-177">  @Test</span>
-<span class="source-line-no">178</span><span id="line-178">  public void testUnContendedSingleCellIncrement() throws IOException, InterruptedException {</span>
-<span class="source-line-no">179</span><span id="line-179">    final HRegion region = getRegion(TEST_UTIL.getConfiguration(),</span>
-<span class="source-line-no">180</span><span id="line-180">      TestIncrementsFromClientSide.filterStringSoTableNameSafe(this.name.getMethodName()));</span>
-<span class="source-line-no">181</span><span id="line-181">    long startTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">182</span><span id="line-182">    try {</span>
-<span class="source-line-no">183</span><span id="line-183">      SingleCellIncrementer[] threads = new SingleCellIncrementer[THREAD_COUNT];</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.Durability;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.Increment;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.Scan;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.TestIncrementsFromClientSide;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.regionserver.wal.FSHLog;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.testclassification.MediumTests;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.slf4j.Logger;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">/**</span>
+<span class="source-line-no">049</span><span id="line-49"> * Increments with some concurrency against a region to ensure we get the right answer. Test is</span>
+<span class="source-line-no">050</span><span id="line-50"> * parameterized to run the fast and slow path increments; if fast,</span>
+<span class="source-line-no">051</span><span id="line-51"> * HRegion.INCREMENT_FAST_BUT_NARROW_CONSISTENCY_KEY is true.</span>
+<span class="source-line-no">052</span><span id="line-52"> * &lt;p&gt;</span>
+<span class="source-line-no">053</span><span id="line-53"> * There is similar test up in TestAtomicOperation. It does a test where it has 100 threads doing</span>
+<span class="source-line-no">054</span><span id="line-54"> * increments across two column families all on one row and the increments are connected to prove</span>
+<span class="source-line-no">055</span><span id="line-55"> * atomicity on row.</span>
+<span class="source-line-no">056</span><span id="line-56"> */</span>
+<span class="source-line-no">057</span><span id="line-57">@Tag(MediumTests.TAG)</span>
+<span class="source-line-no">058</span><span id="line-58">public class TestRegionIncrement {</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionIncrement.class);</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">  private String name;</span>
+<span class="source-line-no">063</span><span id="line-63">  private static HBaseTestingUtil TEST_UTIL;</span>
+<span class="source-line-no">064</span><span id="line-64">  private final static byte[] INCREMENT_BYTES = Bytes.toBytes("increment");</span>
+<span class="source-line-no">065</span><span id="line-65">  private static final int THREAD_COUNT = 10;</span>
+<span class="source-line-no">066</span><span id="line-66">  private static final int INCREMENT_COUNT = 10000;</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">  @BeforeEach</span>
+<span class="source-line-no">069</span><span id="line-69">  public void setUp(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">070</span><span id="line-70">    TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">071</span><span id="line-71">    name = testInfo.getTestMethod().get().getName();</span>
+<span class="source-line-no">072</span><span id="line-72">  }</span>
+<span class="source-line-no">073</span><span id="line-73"></span>
+<span class="source-line-no">074</span><span id="line-74">  @AfterEach</span>
+<span class="source-line-no">075</span><span id="line-75">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">076</span><span id="line-76">    TEST_UTIL.cleanupTestDir();</span>
+<span class="source-line-no">077</span><span id="line-77">  }</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">  private HRegion getRegion(final Configuration conf, final String tableName) throws IOException {</span>
+<span class="source-line-no">080</span><span id="line-80">    FSHLog wal = new FSHLog(FileSystem.get(conf), TEST_UTIL.getDataTestDir(),</span>
+<span class="source-line-no">081</span><span id="line-81">      TEST_UTIL.getDataTestDir().toString(), conf);</span>
+<span class="source-line-no">082</span><span id="line-82">    wal.init();</span>
+<span class="source-line-no">083</span><span id="line-83">    ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null,</span>
+<span class="source-line-no">084</span><span id="line-84">      MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT);</span>
+<span class="source-line-no">085</span><span id="line-85">    return TEST_UTIL.createLocalHRegion(TableName.valueOf(tableName), HConstants.EMPTY_BYTE_ARRAY,</span>
+<span class="source-line-no">086</span><span id="line-86">      HConstants.EMPTY_BYTE_ARRAY, conf, false, Durability.SKIP_WAL, wal, INCREMENT_BYTES);</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">  private void closeRegion(final HRegion region) throws IOException {</span>
+<span class="source-line-no">090</span><span id="line-90">    region.close();</span>
+<span class="source-line-no">091</span><span id="line-91">    region.getWAL().close();</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 testMVCCCausingMisRead() throws IOException {</span>
+<span class="source-line-no">096</span><span id="line-96">    final HRegion region = getRegion(TEST_UTIL.getConfiguration(), this.name);</span>
+<span class="source-line-no">097</span><span id="line-97">    try {</span>
+<span class="source-line-no">098</span><span id="line-98">      // ADD TEST HERE!!</span>
+<span class="source-line-no">099</span><span id="line-99">    } finally {</span>
+<span class="source-line-no">100</span><span id="line-100">      closeRegion(region);</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"></span>
+<span class="source-line-no">104</span><span id="line-104">  /**</span>
+<span class="source-line-no">105</span><span id="line-105">   * Increments a single cell a bunch of times.</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 static class SingleCellIncrementer extends Thread {</span>
+<span class="source-line-no">108</span><span id="line-108">    private final int count;</span>
+<span class="source-line-no">109</span><span id="line-109">    private final HRegion region;</span>
+<span class="source-line-no">110</span><span id="line-110">    private final Increment increment;</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112">    SingleCellIncrementer(final int i, final int count, final HRegion region,</span>
+<span class="source-line-no">113</span><span id="line-113">      final Increment increment) {</span>
+<span class="source-line-no">114</span><span id="line-114">      super("" + i);</span>
+<span class="source-line-no">115</span><span id="line-115">      setDaemon(true);</span>
+<span class="source-line-no">116</span><span id="line-116">      this.count = count;</span>
+<span class="source-line-no">117</span><span id="line-117">      this.region = region;</span>
+<span class="source-line-no">118</span><span id="line-118">      this.increment = increment;</span>
+<span class="source-line-no">119</span><span id="line-119">    }</span>
+<span class="source-line-no">120</span><span id="line-120"></span>
+<span class="source-line-no">121</span><span id="line-121">    @Override</span>
+<span class="source-line-no">122</span><span id="line-122">    public void run() {</span>
+<span class="source-line-no">123</span><span id="line-123">      for (int i = 0; i &lt; this.count; i++) {</span>
+<span class="source-line-no">124</span><span id="line-124">        try {</span>
+<span class="source-line-no">125</span><span id="line-125">          this.region.increment(this.increment);</span>
+<span class="source-line-no">126</span><span id="line-126">          // LOG.info(getName() + " " + i);</span>
+<span class="source-line-no">127</span><span id="line-127">        } catch (IOException e) {</span>
+<span class="source-line-no">128</span><span id="line-128">          throw new RuntimeException(e);</span>
+<span class="source-line-no">129</span><span id="line-129">        }</span>
+<span class="source-line-no">130</span><span id="line-130">      }</span>
+<span class="source-line-no">131</span><span id="line-131">    }</span>
+<span class="source-line-no">132</span><span id="line-132">  }</span>
+<span class="source-line-no">133</span><span id="line-133"></span>
+<span class="source-line-no">134</span><span id="line-134">  /**</span>
+<span class="source-line-no">135</span><span id="line-135">   * Increments a random row's Cell &lt;code&gt;count&lt;/code&gt; times.</span>
+<span class="source-line-no">136</span><span id="line-136">   */</span>
+<span class="source-line-no">137</span><span id="line-137">  private static class CrossRowCellIncrementer extends Thread {</span>
+<span class="source-line-no">138</span><span id="line-138">    private final int count;</span>
+<span class="source-line-no">139</span><span id="line-139">    private final HRegion region;</span>
+<span class="source-line-no">140</span><span id="line-140">    private final Increment[] increments;</span>
+<span class="source-line-no">141</span><span id="line-141"></span>
+<span class="source-line-no">142</span><span id="line-142">    CrossRowCellIncrementer(final int i, final int count, final HRegion region, final int range) {</span>
+<span class="source-line-no">143</span><span id="line-143">      super("" + i);</span>
+<span class="source-line-no">144</span><span id="line-144">      setDaemon(true);</span>
+<span class="source-line-no">145</span><span id="line-145">      this.count = count;</span>
+<span class="source-line-no">146</span><span id="line-146">      this.region = region;</span>
+<span class="source-line-no">147</span><span id="line-147">      this.increments = new Increment[range];</span>
+<span class="source-line-no">148</span><span id="line-148">      for (int ii = 0; ii &lt; range; ii++) {</span>
+<span class="source-line-no">149</span><span id="line-149">        this.increments[ii] = new Increment(Bytes.toBytes(i));</span>
+<span class="source-line-no">150</span><span id="line-150">        this.increments[ii].addColumn(INCREMENT_BYTES, INCREMENT_BYTES, 1);</span>
+<span class="source-line-no">151</span><span id="line-151">      }</span>
+<span class="source-line-no">152</span><span id="line-152">    }</span>
+<span class="source-line-no">153</span><span id="line-153"></span>
+<span class="source-line-no">154</span><span id="line-154">    @Override</span>
+<span class="source-line-no">155</span><span id="line-155">    public void run() {</span>
+<span class="source-line-no">156</span><span id="line-156">      for (int i = 0; i &lt; this.count; i++) {</span>
+<span class="source-line-no">157</span><span id="line-157">        try {</span>
+<span class="source-line-no">158</span><span id="line-158">          int index = ThreadLocalRandom.current().nextInt(0, this.increments.length);</span>
+<span class="source-line-no">159</span><span id="line-159">          this.region.increment(this.increments[index]);</span>
+<span class="source-line-no">160</span><span id="line-160">          // LOG.info(getName() + " " + index);</span>
+<span class="source-line-no">161</span><span id="line-161">        } catch (IOException e) {</span>
+<span class="source-line-no">162</span><span id="line-162">          throw new RuntimeException(e);</span>
+<span class="source-line-no">163</span><span id="line-163">        }</span>
+<span class="source-line-no">164</span><span id="line-164">      }</span>
+<span class="source-line-no">165</span><span id="line-165">    }</span>
+<span class="source-line-no">166</span><span id="line-166">  }</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">  /**</span>
+<span class="source-line-no">169</span><span id="line-169">   * Have each thread update its own Cell. Avoid contention with another thread.</span>
+<span class="source-line-no">170</span><span id="line-170">   */</span>
+<span class="source-line-no">171</span><span id="line-171">  @Test</span>
+<span class="source-line-no">172</span><span id="line-172">  public void testUnContendedSingleCellIncrement() throws IOException, InterruptedException {</span>
+<span class="source-line-no">173</span><span id="line-173">    final HRegion region = getRegion(TEST_UTIL.getConfiguration(),</span>
+<span class="source-line-no">174</span><span id="line-174">      TestIncrementsFromClientSide.filterStringSoTableNameSafe(this.name));</span>
+<span class="source-line-no">175</span><span id="line-175">    long startTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">176</span><span id="line-176">    try {</span>
+<span class="source-line-no">177</span><span id="line-177">      SingleCellIncrementer[] threads = new SingleCellIncrementer[THREAD_COUNT];</span>
+<span class="source-line-no">178</span><span id="line-178">      for (int i = 0; i &lt; threads.length; i++) {</span>
+<span class="source-line-no">179</span><span id="line-179">        byte[] rowBytes = Bytes.toBytes(i);</span>
+<span class="source-line-no">180</span><span id="line-180">        Increment increment = new Increment(rowBytes);</span>
+<span class="source-line-no">181</span><span id="line-181">        increment.addColumn(INCREMENT_BYTES, INCREMENT_BYTES, 1);</span>
+<span class="source-line-no">182</span><span id="line-182">        threads[i] = new SingleCellIncrementer(i, INCREMENT_COUNT, region, increment);</span>
+<span class="source-line-no">183</span><span id="line-183">      }</span>
 <span class="source-line-no">184</span><span id="line-184">      for (int i = 0; i &lt; threads.length; i++) {</span>
-<span class="source-line-no">185</span><span id="line-185">        byte[] rowBytes = Bytes.toBytes(i);</span>
-<span class="source-line-no">186</span><span id="line-186">        Increment increment = new Increment(rowBytes);</span>
-<span class="source-line-no">187</span><span id="line-187">        increment.addColumn(INCREMENT_BYTES, INCREMENT_BYTES, 1);</span>
-<span class="source-line-no">188</span><span id="line-188">        threads[i] = new SingleCellIncrementer(i, INCREMENT_COUNT, region, increment);</span>
+<span class="source-line-no">185</span><span id="line-185">        threads[i].start();</span>
+<span class="source-line-no">186</span><span id="line-186">      }</span>
+<span class="source-line-no">187</span><span id="line-187">      for (int i = 0; i &lt; threads.length; i++) {</span>
+<span class="source-line-no">188</span><span id="line-188">        threads[i].join();</span>
 <span class="source-line-no">189</span><span id="line-189">      }</span>
-<span class="source-line-no">190</span><span id="line-190">      for (int i = 0; i &lt; threads.length; i++) {</span>
-<span class="source-line-no">191</span><span id="line-191">        threads[i].start();</span>
-<span class="source-line-no">192</span><span id="line-192">      }</span>
-<span class="source-line-no">193</span><span id="line-193">      for (int i = 0; i &lt; threads.length; i++) {</span>
-<span class="source-line-no">194</span><span id="line-194">        threads[i].join();</span>
-<span class="source-line-no">195</span><span id="line-195">      }</span>
-<span class="source-line-no">196</span><span id="line-196">      RegionScanner regionScanner = region.getScanner(new Scan());</span>
-<span class="source-line-no">197</span><span id="line-197">      List&lt;Cell&gt; cells = new ArrayList&lt;&gt;(THREAD_COUNT);</span>
-<span class="source-line-no">198</span><span id="line-198">      while (regionScanner.next(cells))</span>
-<span class="source-line-no">199</span><span id="line-199">        continue;</span>
-<span class="source-line-no">200</span><span id="line-200">      assertEquals(THREAD_COUNT, cells.size());</span>
-<span class="source-line-no">201</span><span id="line-201">      long total = 0;</span>
-<span class="source-line-no">202</span><span id="line-202">      for (Cell cell : cells)</span>
-<span class="source-line-no">203</span><span id="line-203">        total += Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());</span>
-<span class="source-line-no">204</span><span id="line-204">      assertEquals(INCREMENT_COUNT * THREAD_COUNT, total);</span>
-<span class="source-line-no">205</span><span id="line-205">    } finally {</span>
-<span class="source-line-no">206</span><span id="line-206">      closeRegion(region);</span>
-<span class="source-line-no">207</span><span id="line-207">      LOG.info(this.name.getMethodName() + " " + (EnvironmentEdgeManager.currentTime() - startTime)</span>
-<span class="source-line-no">208</span><span id="line-208">        + "ms");</span>
-<span class="source-line-no">209</span><span id="line-209">    }</span>
-<span class="source-line-no">210</span><span id="line-210">  }</span>
-<span class="source-line-no">211</span><span id="line-211"></span>
-<span class="source-line-no">212</span><span id="line-212">  /**</span>
-<span class="source-line-no">213</span><span id="line-213">   * Have each thread update its own Cell. Avoid contention with another thread.</span>
-<span class="source-line-no">214</span><span id="line-214">   */</span>
-<span class="source-line-no">215</span><span id="line-215">  @Test</span>
-<span class="source-line-no">216</span><span id="line-216">  public void testContendedAcrossCellsIncrement() throws IOException, InterruptedException {</span>
-<span class="source-line-no">217</span><span id="line-217">    final HRegion region = getRegion(TEST_UTIL.getConfiguration(),</span>
-<span class="source-line-no">218</span><span id="line-218">      TestIncrementsFromClientSide.filterStringSoTableNameSafe(this.name.getMethodName()));</span>
-<span class="source-line-no">219</span><span id="line-219">    long startTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">220</span><span id="line-220">    try {</span>
-<span class="source-line-no">221</span><span id="line-221">      CrossRowCellIncrementer[] threads = new CrossRowCellIncrementer[THREAD_COUNT];</span>
-<span class="source-line-no">222</span><span id="line-222">      for (int i = 0; i &lt; threads.length; i++) {</span>
-<span class="source-line-no">223</span><span id="line-223">        threads[i] = new CrossRowCellIncrementer(i, INCREMENT_COUNT, region, THREAD_COUNT);</span>
-<span class="source-line-no">224</span><span id="line-224">      }</span>
-<span class="source-line-no">225</span><span id="line-225">      for (int i = 0; i &lt; threads.length; i++) {</span>
-<span class="source-line-no">226</span><span id="line-226">        threads[i].start();</span>
-<span class="source-line-no">227</span><span id="line-227">      }</span>
-<span class="source-line-no">228</span><span id="line-228">      for (int i = 0; i &lt; threads.length; i++) {</span>
-<span class="source-line-no">229</span><span id="line-229">        threads[i].join();</span>
-<span class="source-line-no">230</span><span id="line-230">      }</span>
-<span class="source-line-no">231</span><span id="line-231">      RegionScanner regionScanner = region.getScanner(new Scan());</span>
-<span class="source-line-no">232</span><span id="line-232">      List&lt;Cell&gt; cells = new ArrayList&lt;&gt;(100);</span>
-<span class="source-line-no">233</span><span id="line-233">      while (regionScanner.next(cells))</span>
-<span class="source-line-no">234</span><span id="line-234">        continue;</span>
-<span class="source-line-no">235</span><span id="line-235">      assertEquals(THREAD_COUNT, cells.size());</span>
-<span class="source-line-no">236</span><span id="line-236">      long total = 0;</span>
-<span class="source-line-no">237</span><span id="line-237">      for (Cell cell : cells)</span>
-<span class="source-line-no">238</span><span id="line-238">        total += Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());</span>
-<span class="source-line-no">239</span><span id="line-239">      assertEquals(INCREMENT_COUNT * THREAD_COUNT, total);</span>
-<span class="source-line-no">240</span><span id="line-240">    } finally {</span>
-<span class="source-line-no">241</span><span id="line-241">      closeRegion(region);</span>
-<span class="source-line-no">242</span><span id="line-242">      LOG.info(this.name.getMethodName() + " " + (EnvironmentEdgeManager.currentTime() - startTime)</span>
-<span class="source-line-no">243</span><span id="line-243">        + "ms");</span>
-<span class="source-line-no">244</span><span id="line-244">    }</span>
-<span class="source-line-no">245</span><span id="line-245">  }</span>
-<span class="source-line-no">246</span><span id="line-246">}</span>
+<span class="source-line-no">190</span><span id="line-190">      RegionScanner regionScanner = region.getScanner(new Scan());</span>
+<span class="source-line-no">191</span><span id="line-191">      List&lt;Cell&gt; cells = new ArrayList&lt;&gt;(THREAD_COUNT);</span>
+<span class="source-line-no">192</span><span id="line-192">      while (regionScanner.next(cells))</span>
+<span class="source-line-no">193</span><span id="line-193">        continue;</span>
+<span class="source-line-no">194</span><span id="line-194">      assertEquals(THREAD_COUNT, cells.size());</span>
+<span class="source-line-no">195</span><span id="line-195">      long total = 0;</span>
+<span class="source-line-no">196</span><span id="line-196">      for (Cell cell : cells)</span>
+<span class="source-line-no">197</span><span id="line-197">        total += Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());</span>
+<span class="source-line-no">198</span><span id="line-198">      assertEquals(INCREMENT_COUNT * THREAD_COUNT, total);</span>
+<span class="source-line-no">199</span><span id="line-199">    } finally {</span>
+<span class="source-line-no">200</span><span id="line-200">      closeRegion(region);</span>
+<span class="source-line-no">201</span><span id="line-201">      LOG.info(this.name + " " + (EnvironmentEdgeManager.currentTime() - startTime) + "ms");</span>
+<span class="source-line-no">202</span><span id="line-202">    }</span>
+<span class="source-line-no">203</span><span id="line-203">  }</span>
+<span class="source-line-no">204</span><span id="line-204"></span>
+<span class="source-line-no">205</span><span id="line-205">  /**</span>
+<span class="source-line-no">206</span><span id="line-206">   * Have each thread update its own Cell. Avoid contention with another thread.</span>
+<span class="source-line-no">207</span><span id="line-207">   */</span>
+<span class="source-line-no">208</span><span id="line-208">  @Test</span>
+<span class="source-line-no">209</span><span id="line-209">  public void testContendedAcrossCellsIncrement() throws IOException, InterruptedException {</span>
+<span class="source-line-no">210</span><span id="line-210">    final HRegion region = getRegion(TEST_UTIL.getConfiguration(),</span>
+<span class="source-line-no">211</span><span id="line-211">      TestIncrementsFromClientSide.filterStringSoTableNameSafe(this.name));</span>
+<span class="source-line-no">212</span><span id="line-212">    long startTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">213</span><span id="line-213">    try {</span>
+<span class="source-line-no">214</span><span id="line-214">      CrossRowCellIncrementer[] threads = new CrossRowCellIncrementer[THREAD_COUNT];</span>
+<span class="source-line-no">215</span><span id="line-215">      for (int i = 0; i &lt; threads.length; i++) {</span>
+<span class="source-line-no">216</span><span id="line-216">        threads[i] = new CrossRowCellIncrementer(i, INCREMENT_COUNT, region, THREAD_COUNT);</span>
+<span class="source-line-no">217</span><span id="line-217">      }</span>
+<span class="source-line-no">218</span><span id="line-218">      for (int i = 0; i &lt; threads.length; i++) {</span>
+<span class="source-line-no">219</span><span id="line-219">        threads[i].start();</span>
+<span class="source-line-no">220</span><span id="line-220">      }</span>
+<span class="source-line-no">221</span><span id="line-221">      for (int i = 0; i &lt; threads.length; i++) {</span>
+<span class="source-line-no">222</span><span id="line-222">        threads[i].join();</span>
+<span class="source-line-no">223</span><span id="line-223">      }</span>
+<span class="source-line-no">224</span><span id="line-224">      RegionScanner regionScanner = region.getScanner(new Scan());</span>
+<span class="source-line-no">225</span><span id="line-225">      List&lt;Cell&gt; cells = new ArrayList&lt;&gt;(100);</span>
+<span class="source-line-no">226</span><span id="line-226">      while (regionScanner.next(cells))</span>
+<span class="source-line-no">227</span><span id="line-227">        continue;</span>
+<span class="source-line-no">228</span><span id="line-228">      assertEquals(THREAD_COUNT, cells.size());</span>
+<span class="source-line-no">229</span><span id="line-229">      long total = 0;</span>
+<span class="source-line-no">230</span><span id="line-230">      for (Cell cell : cells)</span>
+<span class="source-line-no">231</span><span id="line-231">        total += Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());</span>
+<span class="source-line-no">232</span><span id="line-232">      assertEquals(INCREMENT_COUNT * THREAD_COUNT, total);</span>
+<span class="source-line-no">233</span><span id="line-233">    } finally {</span>
+<span class="source-line-no">234</span><span id="line-234">      closeRegion(region);</span>
+<span class="source-line-no">235</span><span id="line-235">      LOG.info(this.name + " " + (EnvironmentEdgeManager.currentTime() - startTime) + "ms");</span>
+<span class="source-line-no">236</span><span id="line-236">    }</span>
+<span class="source-line-no">237</span><span id="line-237">  }</span>
+<span class="source-line-no">238</span><span id="line-238">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html
index dfb09bac749..46d03971d37 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html
@@ -30,485 +30,471 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertArrayEquals;</span>
-<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertEquals;</span>
-<span class="source-line-no">022</span><span id="line-22">import static org.junit.Assert.assertFalse;</span>
-<span class="source-line-no">023</span><span id="line-23">import static org.junit.Assert.assertNotEquals;</span>
-<span class="source-line-no">024</span><span id="line-24">import static org.junit.Assert.assertTrue;</span>
-<span class="source-line-no">025</span><span id="line-25">import static org.junit.Assert.fail;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertArrayEquals;</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertFalse;</span>
+<span class="source-line-no">023</span><span id="line-23">import static org.junit.jupiter.api.Assertions.assertNotEquals;</span>
+<span class="source-line-no">024</span><span id="line-24">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
+<span class="source-line-no">025</span><span id="line-25">import static org.junit.jupiter.api.Assertions.fail;</span>
 <span class="source-line-no">026</span><span id="line-26"></span>
 <span class="source-line-no">027</span><span id="line-27">import java.io.IOException;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.conf.Configuration;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.fs.FileStatus;</span>
 <span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.RegionInfoDisplay;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.master.RegionState;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.util.FSTableDescriptors;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.util.MD5Hash;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.junit.Assert;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.junit.ClassRule;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.junit.Rule;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.junit.Test;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.junit.rules.TestName;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.RegionInfoBuilder;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.RegionInfoDisplay;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.master.RegionState;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.util.FSTableDescriptors;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.util.MD5Hash;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;</span>
+<span class="source-line-no">053</span><span id="line-53"></span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;</span>
 <span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60">@Category({ RegionServerTests.class, SmallTests.class })</span>
-<span class="source-line-no">061</span><span id="line-61">public class TestRegionInfo {</span>
+<span class="source-line-no">057</span><span id="line-57">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">058</span><span id="line-58">@Tag(SmallTests.TAG)</span>
+<span class="source-line-no">059</span><span id="line-59">public class TestRegionInfo {</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61">  private String methodName;</span>
 <span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">  @ClassRule</span>
-<span class="source-line-no">064</span><span id="line-64">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">065</span><span id="line-65">    HBaseClassTestRule.forClass(TestRegionInfo.class);</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67">  @Rule</span>
-<span class="source-line-no">068</span><span id="line-68">  public TestName name = new TestName();</span>
-<span class="source-line-no">069</span><span id="line-69"></span>
-<span class="source-line-no">070</span><span id="line-70">  @Test</span>
-<span class="source-line-no">071</span><span id="line-71">  public void testIsStart() {</span>
-<span class="source-line-no">072</span><span id="line-72">    assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isFirst());</span>
-<span class="source-line-no">073</span><span id="line-73">    org.apache.hadoop.hbase.client.RegionInfo ri = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">074</span><span id="line-74">      .newBuilder(TableName.META_TABLE_NAME).setStartKey(Bytes.toBytes("not_start")).build();</span>
-<span class="source-line-no">075</span><span id="line-75">    assertFalse(ri.isFirst());</span>
-<span class="source-line-no">076</span><span id="line-76">  }</span>
-<span class="source-line-no">077</span><span id="line-77"></span>
-<span class="source-line-no">078</span><span id="line-78">  @Test</span>
-<span class="source-line-no">079</span><span id="line-79">  public void testIsEnd() {</span>
-<span class="source-line-no">080</span><span id="line-80">    assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isFirst());</span>
-<span class="source-line-no">081</span><span id="line-81">    org.apache.hadoop.hbase.client.RegionInfo ri = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">082</span><span id="line-82">      .newBuilder(TableName.META_TABLE_NAME).setEndKey(Bytes.toBytes("not_end")).build();</span>
-<span class="source-line-no">083</span><span id="line-83">    assertFalse(ri.isLast());</span>
-<span class="source-line-no">084</span><span id="line-84">  }</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">  @Test</span>
-<span class="source-line-no">087</span><span id="line-87">  public void testIsNext() {</span>
-<span class="source-line-no">088</span><span id="line-88">    byte[] bytes = Bytes.toBytes("row");</span>
-<span class="source-line-no">089</span><span id="line-89">    org.apache.hadoop.hbase.client.RegionInfo ri = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">090</span><span id="line-90">      .newBuilder(TableName.META_TABLE_NAME).setEndKey(bytes).build();</span>
-<span class="source-line-no">091</span><span id="line-91">    org.apache.hadoop.hbase.client.RegionInfo ri2 = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">092</span><span id="line-92">      .newBuilder(TableName.META_TABLE_NAME).setStartKey(bytes).build();</span>
-<span class="source-line-no">093</span><span id="line-93">    assertFalse(ri.isNext(RegionInfoBuilder.FIRST_META_REGIONINFO));</span>
-<span class="source-line-no">094</span><span id="line-94">    assertTrue(ri.isNext(ri2));</span>
-<span class="source-line-no">095</span><span id="line-95">  }</span>
-<span class="source-line-no">096</span><span id="line-96"></span>
-<span class="source-line-no">097</span><span id="line-97">  @Test</span>
-<span class="source-line-no">098</span><span id="line-98">  public void testIsOverlap() {</span>
-<span class="source-line-no">099</span><span id="line-99">    byte[] a = Bytes.toBytes("a");</span>
-<span class="source-line-no">100</span><span id="line-100">    byte[] b = Bytes.toBytes("b");</span>
-<span class="source-line-no">101</span><span id="line-101">    byte[] c = Bytes.toBytes("c");</span>
-<span class="source-line-no">102</span><span id="line-102">    byte[] d = Bytes.toBytes("d");</span>
-<span class="source-line-no">103</span><span id="line-103">    org.apache.hadoop.hbase.client.RegionInfo all = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
-<span class="source-line-no">104</span><span id="line-104">    org.apache.hadoop.hbase.client.RegionInfo ari = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">105</span><span id="line-105">      .newBuilder(TableName.META_TABLE_NAME).setEndKey(a).build();</span>
-<span class="source-line-no">106</span><span id="line-106">    org.apache.hadoop.hbase.client.RegionInfo abri =</span>
-<span class="source-line-no">107</span><span id="line-107">      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
-<span class="source-line-no">108</span><span id="line-108">        .setStartKey(a).setEndKey(b).build();</span>
-<span class="source-line-no">109</span><span id="line-109">    org.apache.hadoop.hbase.client.RegionInfo adri =</span>
-<span class="source-line-no">110</span><span id="line-110">      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
-<span class="source-line-no">111</span><span id="line-111">        .setStartKey(a).setEndKey(d).build();</span>
-<span class="source-line-no">112</span><span id="line-112">    org.apache.hadoop.hbase.client.RegionInfo cdri =</span>
-<span class="source-line-no">113</span><span id="line-113">      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
-<span class="source-line-no">114</span><span id="line-114">        .setStartKey(c).setEndKey(d).build();</span>
-<span class="source-line-no">115</span><span id="line-115">    org.apache.hadoop.hbase.client.RegionInfo dri = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">116</span><span id="line-116">      .newBuilder(TableName.META_TABLE_NAME).setStartKey(d).build();</span>
-<span class="source-line-no">117</span><span id="line-117">    assertTrue(all.isOverlap(all));</span>
-<span class="source-line-no">118</span><span id="line-118">    assertTrue(all.isOverlap(abri));</span>
-<span class="source-line-no">119</span><span id="line-119">    assertFalse(abri.isOverlap(cdri));</span>
-<span class="source-line-no">120</span><span id="line-120">    assertTrue(all.isOverlap(ari));</span>
-<span class="source-line-no">121</span><span id="line-121">    assertFalse(ari.isOverlap(abri));</span>
-<span class="source-line-no">122</span><span id="line-122">    assertFalse(ari.isOverlap(abri));</span>
-<span class="source-line-no">123</span><span id="line-123">    assertTrue(ari.isOverlap(all));</span>
-<span class="source-line-no">124</span><span id="line-124">    assertTrue(dri.isOverlap(all));</span>
-<span class="source-line-no">125</span><span id="line-125">    assertTrue(abri.isOverlap(adri));</span>
-<span class="source-line-no">126</span><span id="line-126">    assertFalse(dri.isOverlap(ari));</span>
-<span class="source-line-no">127</span><span id="line-127">    assertTrue(abri.isOverlap(adri));</span>
-<span class="source-line-no">128</span><span id="line-128">    assertTrue(adri.isOverlap(abri));</span>
-<span class="source-line-no">129</span><span id="line-129">  }</span>
-<span class="source-line-no">130</span><span id="line-130"></span>
-<span class="source-line-no">131</span><span id="line-131">  /**</span>
-<span class="source-line-no">132</span><span id="line-132">   * Tests {@link RegionInfo#isOverlap(RegionInfo)}</span>
-<span class="source-line-no">133</span><span id="line-133">   */</span>
-<span class="source-line-no">134</span><span id="line-134">  @Test</span>
-<span class="source-line-no">135</span><span id="line-135">  public void testIsOverlaps() {</span>
-<span class="source-line-no">136</span><span id="line-136">    byte[] a = Bytes.toBytes("a");</span>
-<span class="source-line-no">137</span><span id="line-137">    byte[] b = Bytes.toBytes("b");</span>
-<span class="source-line-no">138</span><span id="line-138">    byte[] c = Bytes.toBytes("c");</span>
-<span class="source-line-no">139</span><span id="line-139">    byte[] d = Bytes.toBytes("d");</span>
-<span class="source-line-no">140</span><span id="line-140">    byte[] e = Bytes.toBytes("e");</span>
-<span class="source-line-no">141</span><span id="line-141">    byte[] f = Bytes.toBytes("f");</span>
-<span class="source-line-no">142</span><span id="line-142">    org.apache.hadoop.hbase.client.RegionInfo ari = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">143</span><span id="line-143">      .newBuilder(TableName.META_TABLE_NAME).setEndKey(a).build();</span>
-<span class="source-line-no">144</span><span id="line-144">    org.apache.hadoop.hbase.client.RegionInfo abri =</span>
-<span class="source-line-no">145</span><span id="line-145">      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
-<span class="source-line-no">146</span><span id="line-146">        .setStartKey(a).setEndKey(b).build();</span>
-<span class="source-line-no">147</span><span id="line-147">    org.apache.hadoop.hbase.client.RegionInfo eri = org.apache.hadoop.hbase.client.RegionInfoBuilder</span>
-<span class="source-line-no">148</span><span id="line-148">      .newBuilder(TableName.META_TABLE_NAME).setEndKey(e).build();</span>
-<span class="source-line-no">149</span><span id="line-149">    org.apache.hadoop.hbase.client.RegionInfo cdri =</span>
-<span class="source-line-no">150</span><span id="line-150">      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
-<span class="source-line-no">151</span><span id="line-151">        .setStartKey(c).setEndKey(d).build();</span>
-<span class="source-line-no">152</span><span id="line-152">    org.apache.hadoop.hbase.client.RegionInfo efri =</span>
-<span class="source-line-no">153</span><span id="line-153">      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
-<span class="source-line-no">154</span><span id="line-154">        .setStartKey(e).setEndKey(f).build();</span>
-<span class="source-line-no">155</span><span id="line-155">    assertFalse(ari.isOverlap(abri));</span>
-<span class="source-line-no">156</span><span id="line-156">    assertTrue(abri.isOverlap(eri));</span>
-<span class="source-line-no">157</span><span id="line-157">    assertFalse(cdri.isOverlap(efri));</span>
-<span class="source-line-no">158</span><span id="line-158">    assertTrue(eri.isOverlap(ari));</span>
-<span class="source-line-no">159</span><span id="line-159">  }</span>
-<span class="source-line-no">160</span><span id="line-160"></span>
-<span class="source-line-no">161</span><span id="line-161">  @Test</span>
-<span class="source-line-no">162</span><span id="line-162">  public void testPb() throws DeserializationException {</span>
-<span class="source-line-no">163</span><span id="line-163">    RegionInfo hri = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
-<span class="source-line-no">164</span><span id="line-164">    byte[] bytes = RegionInfo.toByteArray(hri);</span>
-<span class="source-line-no">165</span><span id="line-165">    RegionInfo pbhri = RegionInfo.parseFrom(bytes);</span>
-<span class="source-line-no">166</span><span id="line-166">    assertTrue(hri.equals(pbhri));</span>
-<span class="source-line-no">167</span><span id="line-167">  }</span>
-<span class="source-line-no">168</span><span id="line-168"></span>
-<span class="source-line-no">169</span><span id="line-169">  @Test</span>
-<span class="source-line-no">170</span><span id="line-170">  public void testReadAndWriteHRegionInfoFile() throws IOException, InterruptedException {</span>
-<span class="source-line-no">171</span><span id="line-171">    HBaseTestingUtil htu = new HBaseTestingUtil();</span>
-<span class="source-line-no">172</span><span id="line-172">    RegionInfo hri = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
-<span class="source-line-no">173</span><span id="line-173">    Path basedir = htu.getDataTestDir();</span>
-<span class="source-line-no">174</span><span id="line-174">    // Create a region. That'll write the .regioninfo file.</span>
-<span class="source-line-no">175</span><span id="line-175">    FSTableDescriptors fsTableDescriptors = new FSTableDescriptors(htu.getConfiguration());</span>
-<span class="source-line-no">176</span><span id="line-176">    FSTableDescriptors.tryUpdateMetaTableDescriptor(htu.getConfiguration());</span>
-<span class="source-line-no">177</span><span id="line-177">    HRegion r = HBaseTestingUtil.createRegionAndWAL(hri, basedir, htu.getConfiguration(),</span>
-<span class="source-line-no">178</span><span id="line-178">      fsTableDescriptors.get(TableName.META_TABLE_NAME));</span>
-<span class="source-line-no">179</span><span id="line-179">    // Get modtime on the file.</span>
-<span class="source-line-no">180</span><span id="line-180">    long modtime = getModTime(r);</span>
-<span class="source-line-no">181</span><span id="line-181">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
-<span class="source-line-no">182</span><span id="line-182">    Thread.sleep(1001);</span>
-<span class="source-line-no">183</span><span id="line-183">    r = HRegion.openHRegion(basedir, hri, fsTableDescriptors.get(TableName.META_TABLE_NAME), null,</span>
-<span class="source-line-no">184</span><span id="line-184">      htu.getConfiguration());</span>
-<span class="source-line-no">185</span><span id="line-185">    // Ensure the file is not written for a second time.</span>
-<span class="source-line-no">186</span><span id="line-186">    long modtime2 = getModTime(r);</span>
-<span class="source-line-no">187</span><span id="line-187">    assertEquals(modtime, modtime2);</span>
-<span class="source-line-no">188</span><span id="line-188">    // Now load the file.</span>
-<span class="source-line-no">189</span><span id="line-189">    org.apache.hadoop.hbase.client.RegionInfo deserializedHri =</span>
-<span class="source-line-no">190</span><span id="line-190">      HRegionFileSystem.loadRegionInfoFileContent(r.getRegionFileSystem().getFileSystem(),</span>
-<span class="source-line-no">191</span><span id="line-191">        r.getRegionFileSystem().getRegionDir());</span>
-<span class="source-line-no">192</span><span id="line-192">    assertEquals(0,</span>
-<span class="source-line-no">193</span><span id="line-193">      org.apache.hadoop.hbase.client.RegionInfo.COMPARATOR.compare(hri, deserializedHri));</span>
-<span class="source-line-no">194</span><span id="line-194">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
-<span class="source-line-no">195</span><span id="line-195">  }</span>
-<span class="source-line-no">196</span><span id="line-196"></span>
-<span class="source-line-no">197</span><span id="line-197">  long getModTime(final HRegion r) throws IOException {</span>
-<span class="source-line-no">198</span><span id="line-198">    FileStatus[] statuses = r.getRegionFileSystem().getFileSystem().listStatus(</span>
-<span class="source-line-no">199</span><span id="line-199">      new Path(r.getRegionFileSystem().getRegionDir(), HRegionFileSystem.REGION_INFO_FILE));</span>
-<span class="source-line-no">200</span><span id="line-200">    assertTrue(statuses != null &amp;&amp; statuses.length == 1);</span>
-<span class="source-line-no">201</span><span id="line-201">    return statuses[0].getModificationTime();</span>
-<span class="source-line-no">202</span><span id="line-202">  }</span>
-<span class="source-line-no">203</span><span id="line-203"></span>
-<span class="source-line-no">204</span><span id="line-204">  @Test</span>
-<span class="source-line-no">205</span><span id="line-205">  public void testCreateHRegionInfoName() throws Exception {</span>
-<span class="source-line-no">206</span><span id="line-206">    final String tableName = name.getMethodName();</span>
-<span class="source-line-no">207</span><span id="line-207">    final TableName tn = TableName.valueOf(tableName);</span>
-<span class="source-line-no">208</span><span id="line-208">    String startKey = "startkey";</span>
-<span class="source-line-no">209</span><span id="line-209">    final byte[] sk = Bytes.toBytes(startKey);</span>
-<span class="source-line-no">210</span><span id="line-210">    String id = "id";</span>
-<span class="source-line-no">211</span><span id="line-211"></span>
-<span class="source-line-no">212</span><span id="line-212">    // old format region name</span>
-<span class="source-line-no">213</span><span id="line-213">    byte[] name = RegionInfo.createRegionName(tn, sk, id, false);</span>
-<span class="source-line-no">214</span><span id="line-214">    String nameStr = Bytes.toString(name);</span>
-<span class="source-line-no">215</span><span id="line-215">    assertEquals(tableName + "," + startKey + "," + id, nameStr);</span>
-<span class="source-line-no">216</span><span id="line-216"></span>
-<span class="source-line-no">217</span><span id="line-217">    // new format region name.</span>
-<span class="source-line-no">218</span><span id="line-218">    String md5HashInHex = MD5Hash.getMD5AsHex(name);</span>
-<span class="source-line-no">219</span><span id="line-219">    assertEquals(RegionInfo.MD5_HEX_LENGTH, md5HashInHex.length());</span>
-<span class="source-line-no">220</span><span id="line-220">    name = RegionInfo.createRegionName(tn, sk, id, true);</span>
-<span class="source-line-no">221</span><span id="line-221">    nameStr = Bytes.toString(name);</span>
-<span class="source-line-no">222</span><span id="line-222">    assertEquals(tableName + "," + startKey + "," + id + "." + md5HashInHex + ".", nameStr);</span>
-<span class="source-line-no">223</span><span id="line-223">  }</span>
-<span class="source-line-no">224</span><span id="line-224"></span>
-<span class="source-line-no">225</span><span id="line-225">  @Test</span>
-<span class="source-line-no">226</span><span id="line-226">  public void testContainsRange() {</span>
-<span class="source-line-no">227</span><span id="line-227">    TableDescriptor tableDesc =</span>
-<span class="source-line-no">228</span><span id="line-228">      TableDescriptorBuilder.newBuilder(TableName.valueOf(name.getMethodName())).build();</span>
-<span class="source-line-no">229</span><span id="line-229">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableDesc.getTableName())</span>
-<span class="source-line-no">230</span><span id="line-230">      .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("g")).build();</span>
-<span class="source-line-no">231</span><span id="line-231">    // Single row range at start of region</span>
-<span class="source-line-no">232</span><span id="line-232">    assertTrue(hri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("a")));</span>
-<span class="source-line-no">233</span><span id="line-233">    // Fully contained range</span>
-<span class="source-line-no">234</span><span id="line-234">    assertTrue(hri.containsRange(Bytes.toBytes("b"), Bytes.toBytes("c")));</span>
-<span class="source-line-no">235</span><span id="line-235">    // Range overlapping start of region</span>
-<span class="source-line-no">236</span><span id="line-236">    assertTrue(hri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("c")));</span>
-<span class="source-line-no">237</span><span id="line-237">    // Fully contained single-row range</span>
-<span class="source-line-no">238</span><span id="line-238">    assertTrue(hri.containsRange(Bytes.toBytes("c"), Bytes.toBytes("c")));</span>
-<span class="source-line-no">239</span><span id="line-239">    // Range that overlaps end key and hence doesn't fit</span>
-<span class="source-line-no">240</span><span id="line-240">    assertFalse(hri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("g")));</span>
-<span class="source-line-no">241</span><span id="line-241">    // Single row range on end key</span>
-<span class="source-line-no">242</span><span id="line-242">    assertFalse(hri.containsRange(Bytes.toBytes("g"), Bytes.toBytes("g")));</span>
-<span class="source-line-no">243</span><span id="line-243">    // Single row range entirely outside</span>
-<span class="source-line-no">244</span><span id="line-244">    assertFalse(hri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("z")));</span>
-<span class="source-line-no">245</span><span id="line-245"></span>
-<span class="source-line-no">246</span><span id="line-246">    // Degenerate range</span>
-<span class="source-line-no">247</span><span id="line-247">    try {</span>
-<span class="source-line-no">248</span><span id="line-248">      hri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("a"));</span>
-<span class="source-line-no">249</span><span id="line-249">      fail("Invalid range did not throw IAE");</span>
-<span class="source-line-no">250</span><span id="line-250">    } catch (IllegalArgumentException iae) {</span>
-<span class="source-line-no">251</span><span id="line-251">    }</span>
-<span class="source-line-no">252</span><span id="line-252">  }</span>
-<span class="source-line-no">253</span><span id="line-253"></span>
-<span class="source-line-no">254</span><span id="line-254">  @Test</span>
-<span class="source-line-no">255</span><span id="line-255">  public void testContainsRangeForMetaTable() {</span>
-<span class="source-line-no">256</span><span id="line-256">    TableDescriptor tableDesc =</span>
-<span class="source-line-no">257</span><span id="line-257">      TableDescriptorBuilder.newBuilder(TableName.META_TABLE_NAME).build();</span>
-<span class="source-line-no">258</span><span id="line-258">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableDesc.getTableName()).build();</span>
-<span class="source-line-no">259</span><span id="line-259">    byte[] startRow = HConstants.EMPTY_START_ROW;</span>
-<span class="source-line-no">260</span><span id="line-260">    byte[] row1 = Bytes.toBytes("a,a,0");</span>
-<span class="source-line-no">261</span><span id="line-261">    byte[] row2 = Bytes.toBytes("aaaaa,,1");</span>
-<span class="source-line-no">262</span><span id="line-262">    byte[] row3 = Bytes.toBytes("aaaaa,\u0000\u0000,2");</span>
-<span class="source-line-no">263</span><span id="line-263">    byte[] row4 = Bytes.toBytes("aaaaa,\u0001,3");</span>
-<span class="source-line-no">264</span><span id="line-264">    byte[] row5 = Bytes.toBytes("aaaaa,a,4");</span>
-<span class="source-line-no">265</span><span id="line-265">    byte[] row6 = Bytes.toBytes("aaaaa,\u1000,5");</span>
-<span class="source-line-no">266</span><span id="line-266"></span>
-<span class="source-line-no">267</span><span id="line-267">    // Single row range at start of region</span>
-<span class="source-line-no">268</span><span id="line-268">    assertTrue(hri.containsRange(startRow, startRow));</span>
-<span class="source-line-no">269</span><span id="line-269">    // Fully contained range</span>
-<span class="source-line-no">270</span><span id="line-270">    assertTrue(hri.containsRange(row1, row2));</span>
-<span class="source-line-no">271</span><span id="line-271">    assertTrue(hri.containsRange(row2, row3));</span>
-<span class="source-line-no">272</span><span id="line-272">    assertTrue(hri.containsRange(row3, row4));</span>
-<span class="source-line-no">273</span><span id="line-273">    assertTrue(hri.containsRange(row4, row5));</span>
-<span class="source-line-no">274</span><span id="line-274">    assertTrue(hri.containsRange(row5, row6));</span>
-<span class="source-line-no">275</span><span id="line-275">    // Range overlapping start of region</span>
-<span class="source-line-no">276</span><span id="line-276">    assertTrue(hri.containsRange(startRow, row2));</span>
-<span class="source-line-no">277</span><span id="line-277">    // Fully contained single-row range</span>
-<span class="source-line-no">278</span><span id="line-278">    assertTrue(hri.containsRange(row1, row1));</span>
-<span class="source-line-no">279</span><span id="line-279">    // Degenerate range</span>
-<span class="source-line-no">280</span><span id="line-280">    try {</span>
-<span class="source-line-no">281</span><span id="line-281">      hri.containsRange(row3, row2);</span>
-<span class="source-line-no">282</span><span id="line-282">      fail("Invalid range did not throw IAE");</span>
-<span class="source-line-no">283</span><span id="line-283">    } catch (IllegalArgumentException iae) {</span>
-<span class="source-line-no">284</span><span id="line-284">    }</span>
-<span class="source-line-no">285</span><span id="line-285">  }</span>
-<span class="source-line-no">286</span><span id="line-286"></span>
-<span class="source-line-no">287</span><span id="line-287">  @Test</span>
-<span class="source-line-no">288</span><span id="line-288">  public void testLastRegionCompare() {</span>
-<span class="source-line-no">289</span><span id="line-289">    TableDescriptor tableDesc =</span>
-<span class="source-line-no">290</span><span id="line-290">      TableDescriptorBuilder.newBuilder(TableName.valueOf(name.getMethodName())).build();</span>
-<span class="source-line-no">291</span><span id="line-291">    RegionInfo hrip = RegionInfoBuilder.newBuilder(tableDesc.getTableName())</span>
-<span class="source-line-no">292</span><span id="line-292">      .setStartKey(Bytes.toBytes("a")).build();</span>
-<span class="source-line-no">293</span><span id="line-293">    RegionInfo hric = RegionInfoBuilder.newBuilder(tableDesc.getTableName())</span>
-<span class="source-line-no">294</span><span id="line-294">      .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("b")).build();</span>
-<span class="source-line-no">295</span><span id="line-295">    assertTrue(hrip.compareTo(hric) &gt; 0);</span>
-<span class="source-line-no">296</span><span id="line-296">  }</span>
-<span class="source-line-no">297</span><span id="line-297"></span>
-<span class="source-line-no">298</span><span id="line-298">  @Test</span>
-<span class="source-line-no">299</span><span id="line-299">  public void testMetaTables() {</span>
-<span class="source-line-no">300</span><span id="line-300">    assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isMetaRegion());</span>
-<span class="source-line-no">301</span><span id="line-301">  }</span>
-<span class="source-line-no">302</span><span id="line-302"></span>
-<span class="source-line-no">303</span><span id="line-303">  @SuppressWarnings("SelfComparison")</span>
-<span class="source-line-no">304</span><span id="line-304">  @Test</span>
-<span class="source-line-no">305</span><span id="line-305">  public void testComparator() {</span>
-<span class="source-line-no">306</span><span id="line-306">    final TableName tableName = TableName.valueOf(name.getMethodName());</span>
-<span class="source-line-no">307</span><span id="line-307">    RegionInfo older = RegionInfoBuilder.newBuilder(tableName).setRegionId(0).build();</span>
-<span class="source-line-no">308</span><span id="line-308">    RegionInfo newer = RegionInfoBuilder.newBuilder(tableName).setRegionId(1).build();</span>
-<span class="source-line-no">309</span><span id="line-309">    assertTrue(older.compareTo(newer) &lt; 0);</span>
-<span class="source-line-no">310</span><span id="line-310">    assertTrue(newer.compareTo(older) &gt; 0);</span>
-<span class="source-line-no">311</span><span id="line-311">    assertEquals(0, older.compareTo(older));</span>
-<span class="source-line-no">312</span><span id="line-312">    assertEquals(0, newer.compareTo(newer));</span>
-<span class="source-line-no">313</span><span id="line-313"></span>
-<span class="source-line-no">314</span><span id="line-314">    RegionInfo a = RegionInfoBuilder.newBuilder(TableName.valueOf("a")).build();</span>
-<span class="source-line-no">315</span><span id="line-315">    RegionInfo b = RegionInfoBuilder.newBuilder(TableName.valueOf("b")).build();</span>
-<span class="source-line-no">316</span><span id="line-316">    assertNotEquals(0, a.compareTo(b));</span>
-<span class="source-line-no">317</span><span id="line-317">    TableName t = TableName.valueOf("t");</span>
-<span class="source-line-no">318</span><span id="line-318">    byte[] midway = Bytes.toBytes("midway");</span>
-<span class="source-line-no">319</span><span id="line-319">    a = RegionInfoBuilder.newBuilder(t).setEndKey(midway).build();</span>
-<span class="source-line-no">320</span><span id="line-320">    b = RegionInfoBuilder.newBuilder(t).setStartKey(midway).build();</span>
-<span class="source-line-no">321</span><span id="line-321">    assertTrue(a.compareTo(b) &lt; 0);</span>
-<span class="source-line-no">322</span><span id="line-322">    assertTrue(b.compareTo(a) &gt; 0);</span>
-<span class="source-line-no">323</span><span id="line-323">    assertTrue(a.equals(a));</span>
-<span class="source-line-no">324</span><span id="line-324">    assertEquals(0, a.compareTo(a));</span>
-<span class="source-line-no">325</span><span id="line-325">    a = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("a"))</span>
-<span class="source-line-no">326</span><span id="line-326">      .setEndKey(Bytes.toBytes("d")).build();</span>
-<span class="source-line-no">327</span><span id="line-327">    b = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("e"))</span>
-<span class="source-line-no">328</span><span id="line-328">      .setEndKey(Bytes.toBytes("g")).build();</span>
-<span class="source-line-no">329</span><span id="line-329">    assertTrue(a.compareTo(b) &lt; 0);</span>
-<span class="source-line-no">330</span><span id="line-330">    a = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("aaaa"))</span>
-<span class="source-line-no">331</span><span id="line-331">      .setEndKey(Bytes.toBytes("dddd")).build();</span>
-<span class="source-line-no">332</span><span id="line-332">    b = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("e"))</span>
-<span class="source-line-no">333</span><span id="line-333">      .setEndKey(Bytes.toBytes("g")).build();</span>
-<span class="source-line-no">334</span><span id="line-334">    assertTrue(a.compareTo(b) &lt; 0);</span>
-<span class="source-line-no">335</span><span id="line-335">    a = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("aaaa"))</span>
-<span class="source-line-no">336</span><span id="line-336">      .setEndKey(Bytes.toBytes("dddd")).build();</span>
-<span class="source-line-no">337</span><span id="line-337">    b = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("aaaa"))</span>
-<span class="source-line-no">338</span><span id="line-338">      .setEndKey(Bytes.toBytes("eeee")).build();</span>
-<span class="source-line-no">339</span><span id="line-339">    assertTrue(a.compareTo(b) &lt; 0);</span>
-<span class="source-line-no">340</span><span id="line-340"></span>
-<span class="source-line-no">341</span><span id="line-341">  }</span>
-<span class="source-line-no">342</span><span id="line-342"></span>
-<span class="source-line-no">343</span><span id="line-343">  @Test</span>
-<span class="source-line-no">344</span><span id="line-344">  public void testRegionNameForRegionReplicas() throws Exception {</span>
-<span class="source-line-no">345</span><span id="line-345">    String tableName = name.getMethodName();</span>
-<span class="source-line-no">346</span><span id="line-346">    final TableName tn = TableName.valueOf(tableName);</span>
-<span class="source-line-no">347</span><span id="line-347">    String startKey = "startkey";</span>
-<span class="source-line-no">348</span><span id="line-348">    final byte[] sk = Bytes.toBytes(startKey);</span>
-<span class="source-line-no">349</span><span id="line-349">    String id = "id";</span>
+<span class="source-line-no">063</span><span id="line-63">  @BeforeEach</span>
+<span class="source-line-no">064</span><span id="line-64">  public void setUp(TestInfo testInfo) {</span>
+<span class="source-line-no">065</span><span id="line-65">    methodName = testInfo.getTestMethod().get().getName();</span>
+<span class="source-line-no">066</span><span id="line-66">  }</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">  @Test</span>
+<span class="source-line-no">069</span><span id="line-69">  public void testIsStart() {</span>
+<span class="source-line-no">070</span><span id="line-70">    assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isFirst());</span>
+<span class="source-line-no">071</span><span id="line-71">    RegionInfo ri = RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
+<span class="source-line-no">072</span><span id="line-72">      .setStartKey(Bytes.toBytes("not_start")).build();</span>
+<span class="source-line-no">073</span><span id="line-73">    assertFalse(ri.isFirst());</span>
+<span class="source-line-no">074</span><span id="line-74">  }</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">  @Test</span>
+<span class="source-line-no">077</span><span id="line-77">  public void testIsEnd() {</span>
+<span class="source-line-no">078</span><span id="line-78">    assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isFirst());</span>
+<span class="source-line-no">079</span><span id="line-79">    RegionInfo ri = RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME)</span>
+<span class="source-line-no">080</span><span id="line-80">      .setEndKey(Bytes.toBytes("not_end")).build();</span>
+<span class="source-line-no">081</span><span id="line-81">    assertFalse(ri.isLast());</span>
+<span class="source-line-no">082</span><span id="line-82">  }</span>
+<span class="source-line-no">083</span><span id="line-83"></span>
+<span class="source-line-no">084</span><span id="line-84">  @Test</span>
+<span class="source-line-no">085</span><span id="line-85">  public void testIsNext() {</span>
+<span class="source-line-no">086</span><span id="line-86">    byte[] bytes = Bytes.toBytes("row");</span>
+<span class="source-line-no">087</span><span id="line-87">    RegionInfo ri =</span>
+<span class="source-line-no">088</span><span id="line-88">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setEndKey(bytes).build();</span>
+<span class="source-line-no">089</span><span id="line-89">    RegionInfo ri2 =</span>
+<span class="source-line-no">090</span><span id="line-90">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(bytes).build();</span>
+<span class="source-line-no">091</span><span id="line-91">    assertFalse(ri.isNext(RegionInfoBuilder.FIRST_META_REGIONINFO));</span>
+<span class="source-line-no">092</span><span id="line-92">    assertTrue(ri.isNext(ri2));</span>
+<span class="source-line-no">093</span><span id="line-93">  }</span>
+<span class="source-line-no">094</span><span id="line-94"></span>
+<span class="source-line-no">095</span><span id="line-95">  @Test</span>
+<span class="source-line-no">096</span><span id="line-96">  public void testIsOverlap() {</span>
+<span class="source-line-no">097</span><span id="line-97">    byte[] a = Bytes.toBytes("a");</span>
+<span class="source-line-no">098</span><span id="line-98">    byte[] b = Bytes.toBytes("b");</span>
+<span class="source-line-no">099</span><span id="line-99">    byte[] c = Bytes.toBytes("c");</span>
+<span class="source-line-no">100</span><span id="line-100">    byte[] d = Bytes.toBytes("d");</span>
+<span class="source-line-no">101</span><span id="line-101">    RegionInfo all = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
+<span class="source-line-no">102</span><span id="line-102">    RegionInfo ari = RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setEndKey(a).build();</span>
+<span class="source-line-no">103</span><span id="line-103">    RegionInfo abri =</span>
+<span class="source-line-no">104</span><span id="line-104">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(a).setEndKey(b).build();</span>
+<span class="source-line-no">105</span><span id="line-105">    RegionInfo adri =</span>
+<span class="source-line-no">106</span><span id="line-106">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(a).setEndKey(d).build();</span>
+<span class="source-line-no">107</span><span id="line-107">    RegionInfo cdri =</span>
+<span class="source-line-no">108</span><span id="line-108">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(c).setEndKey(d).build();</span>
+<span class="source-line-no">109</span><span id="line-109">    RegionInfo dri = RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(d).build();</span>
+<span class="source-line-no">110</span><span id="line-110">    assertTrue(all.isOverlap(all));</span>
+<span class="source-line-no">111</span><span id="line-111">    assertTrue(all.isOverlap(abri));</span>
+<span class="source-line-no">112</span><span id="line-112">    assertFalse(abri.isOverlap(cdri));</span>
+<span class="source-line-no">113</span><span id="line-113">    assertTrue(all.isOverlap(ari));</span>
+<span class="source-line-no">114</span><span id="line-114">    assertFalse(ari.isOverlap(abri));</span>
+<span class="source-line-no">115</span><span id="line-115">    assertFalse(ari.isOverlap(abri));</span>
+<span class="source-line-no">116</span><span id="line-116">    assertTrue(ari.isOverlap(all));</span>
+<span class="source-line-no">117</span><span id="line-117">    assertTrue(dri.isOverlap(all));</span>
+<span class="source-line-no">118</span><span id="line-118">    assertTrue(abri.isOverlap(adri));</span>
+<span class="source-line-no">119</span><span id="line-119">    assertFalse(dri.isOverlap(ari));</span>
+<span class="source-line-no">120</span><span id="line-120">    assertTrue(abri.isOverlap(adri));</span>
+<span class="source-line-no">121</span><span id="line-121">    assertTrue(adri.isOverlap(abri));</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">   * Tests {@link RegionInfo#isOverlap(RegionInfo)}</span>
+<span class="source-line-no">126</span><span id="line-126">   */</span>
+<span class="source-line-no">127</span><span id="line-127">  @Test</span>
+<span class="source-line-no">128</span><span id="line-128">  public void testIsOverlaps() {</span>
+<span class="source-line-no">129</span><span id="line-129">    byte[] a = Bytes.toBytes("a");</span>
+<span class="source-line-no">130</span><span id="line-130">    byte[] b = Bytes.toBytes("b");</span>
+<span class="source-line-no">131</span><span id="line-131">    byte[] c = Bytes.toBytes("c");</span>
+<span class="source-line-no">132</span><span id="line-132">    byte[] d = Bytes.toBytes("d");</span>
+<span class="source-line-no">133</span><span id="line-133">    byte[] e = Bytes.toBytes("e");</span>
+<span class="source-line-no">134</span><span id="line-134">    byte[] f = Bytes.toBytes("f");</span>
+<span class="source-line-no">135</span><span id="line-135">    RegionInfo ari = RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setEndKey(a).build();</span>
+<span class="source-line-no">136</span><span id="line-136">    RegionInfo abri =</span>
+<span class="source-line-no">137</span><span id="line-137">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(a).setEndKey(b).build();</span>
+<span class="source-line-no">138</span><span id="line-138">    RegionInfo eri = RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setEndKey(e).build();</span>
+<span class="source-line-no">139</span><span id="line-139">    RegionInfo cdri =</span>
+<span class="source-line-no">140</span><span id="line-140">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(c).setEndKey(d).build();</span>
+<span class="source-line-no">141</span><span id="line-141">    RegionInfo efri =</span>
+<span class="source-line-no">142</span><span id="line-142">      RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).setStartKey(e).setEndKey(f).build();</span>
+<span class="source-line-no">143</span><span id="line-143">    assertFalse(ari.isOverlap(abri));</span>
+<span class="source-line-no">144</span><span id="line-144">    assertTrue(abri.isOverlap(eri));</span>
+<span class="source-line-no">145</span><span id="line-145">    assertFalse(cdri.isOverlap(efri));</span>
+<span class="source-line-no">146</span><span id="line-146">    assertTrue(eri.isOverlap(ari));</span>
+<span class="source-line-no">147</span><span id="line-147">  }</span>
+<span class="source-line-no">148</span><span id="line-148"></span>
+<span class="source-line-no">149</span><span id="line-149">  @Test</span>
+<span class="source-line-no">150</span><span id="line-150">  public void testPb() throws DeserializationException {</span>
+<span class="source-line-no">151</span><span id="line-151">    RegionInfo hri = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
+<span class="source-line-no">152</span><span id="line-152">    byte[] bytes = RegionInfo.toByteArray(hri);</span>
+<span class="source-line-no">153</span><span id="line-153">    RegionInfo pbhri = RegionInfo.parseFrom(bytes);</span>
+<span class="source-line-no">154</span><span id="line-154">    assertEquals(hri, pbhri);</span>
+<span class="source-line-no">155</span><span id="line-155">  }</span>
+<span class="source-line-no">156</span><span id="line-156"></span>
+<span class="source-line-no">157</span><span id="line-157">  @Test</span>
+<span class="source-line-no">158</span><span id="line-158">  public void testReadAndWriteHRegionInfoFile() throws IOException, InterruptedException {</span>
+<span class="source-line-no">159</span><span id="line-159">    HBaseTestingUtil htu = new HBaseTestingUtil();</span>
+<span class="source-line-no">160</span><span id="line-160">    RegionInfo hri = RegionInfoBuilder.FIRST_META_REGIONINFO;</span>
+<span class="source-line-no">161</span><span id="line-161">    Path basedir = htu.getDataTestDir();</span>
+<span class="source-line-no">162</span><span id="line-162">    // Create a region. That'll write the .regioninfo file.</span>
+<span class="source-line-no">163</span><span id="line-163">    FSTableDescriptors fsTableDescriptors = new FSTableDescriptors(htu.getConfiguration());</span>
+<span class="source-line-no">164</span><span id="line-164">    FSTableDescriptors.tryUpdateMetaTableDescriptor(htu.getConfiguration());</span>
+<span class="source-line-no">165</span><span id="line-165">    HRegion r = HBaseTestingUtil.createRegionAndWAL(hri, basedir, htu.getConfiguration(),</span>
+<span class="source-line-no">166</span><span id="line-166">      fsTableDescriptors.get(TableName.META_TABLE_NAME));</span>
+<span class="source-line-no">167</span><span id="line-167">    // Get modtime on the file.</span>
+<span class="source-line-no">168</span><span id="line-168">    long modtime = getModTime(r);</span>
+<span class="source-line-no">169</span><span id="line-169">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
+<span class="source-line-no">170</span><span id="line-170">    Thread.sleep(1001);</span>
+<span class="source-line-no">171</span><span id="line-171">    r = HRegion.openHRegion(basedir, hri, fsTableDescriptors.get(TableName.META_TABLE_NAME), null,</span>
+<span class="source-line-no">172</span><span id="line-172">      htu.getConfiguration());</span>
+<span class="source-line-no">173</span><span id="line-173">    // Ensure the file is not written for a second time.</span>
+<span class="source-line-no">174</span><span id="line-174">    long modtime2 = getModTime(r);</span>
+<span class="source-line-no">175</span><span id="line-175">    assertEquals(modtime, modtime2);</span>
+<span class="source-line-no">176</span><span id="line-176">    // Now load the file.</span>
+<span class="source-line-no">177</span><span id="line-177">    RegionInfo deserializedHri = HRegionFileSystem.loadRegionInfoFileContent(</span>
+<span class="source-line-no">178</span><span id="line-178">      r.getRegionFileSystem().getFileSystem(), r.getRegionFileSystem().getRegionDir());</span>
+<span class="source-line-no">179</span><span id="line-179">    assertEquals(0, RegionInfo.COMPARATOR.compare(hri, deserializedHri));</span>
+<span class="source-line-no">180</span><span id="line-180">    HBaseTestingUtil.closeRegionAndWAL(r);</span>
+<span class="source-line-no">181</span><span id="line-181">  }</span>
+<span class="source-line-no">182</span><span id="line-182"></span>
+<span class="source-line-no">183</span><span id="line-183">  long getModTime(final HRegion r) throws IOException {</span>
+<span class="source-line-no">184</span><span id="line-184">    FileStatus[] statuses = r.getRegionFileSystem().getFileSystem().listStatus(</span>
+<span class="source-line-no">185</span><span id="line-185">      new Path(r.getRegionFileSystem().getRegionDir(), HRegionFileSystem.REGION_INFO_FILE));</span>
+<span class="source-line-no">186</span><span id="line-186">    assertTrue(statuses != null &amp;&amp; statuses.length == 1);</span>
+<span class="source-line-no">187</span><span id="line-187">    return statuses[0].getModificationTime();</span>
+<span class="source-line-no">188</span><span id="line-188">  }</span>
+<span class="source-line-no">189</span><span id="line-189"></span>
+<span class="source-line-no">190</span><span id="line-190">  @Test</span>
+<span class="source-line-no">191</span><span id="line-191">  public void testCreateHRegionInfoName() throws Exception {</span>
+<span class="source-line-no">192</span><span id="line-192">    final String tableName = methodName;</span>
+<span class="source-line-no">193</span><span id="line-193">    final TableName tn = TableName.valueOf(tableName);</span>
+<span class="source-line-no">194</span><span id="line-194">    String startKey = "startkey";</span>
+<span class="source-line-no">195</span><span id="line-195">    final byte[] sk = Bytes.toBytes(startKey);</span>
+<span class="source-line-no">196</span><span id="line-196">    String id = "id";</span>
+<span class="source-line-no">197</span><span id="line-197"></span>
+<span class="source-line-no">198</span><span id="line-198">    // old format region name</span>
+<span class="source-line-no">199</span><span id="line-199">    byte[] name = RegionInfo.createRegionName(tn, sk, id, false);</span>
+<span class="source-line-no">200</span><span id="line-200">    String nameStr = Bytes.toString(name);</span>
+<span class="source-line-no">201</span><span id="line-201">    assertEquals(tableName + "," + startKey + "," + id, nameStr);</span>
+<span class="source-line-no">202</span><span id="line-202"></span>
+<span class="source-line-no">203</span><span id="line-203">    // new format region name.</span>
+<span class="source-line-no">204</span><span id="line-204">    String md5HashInHex = MD5Hash.getMD5AsHex(name);</span>
+<span class="source-line-no">205</span><span id="line-205">    assertEquals(RegionInfo.MD5_HEX_LENGTH, md5HashInHex.length());</span>
+<span class="source-line-no">206</span><span id="line-206">    name = RegionInfo.createRegionName(tn, sk, id, true);</span>
+<span class="source-line-no">207</span><span id="line-207">    nameStr = Bytes.toString(name);</span>
+<span class="source-line-no">208</span><span id="line-208">    assertEquals(tableName + "," + startKey + "," + id + "." + md5HashInHex + ".", nameStr);</span>
+<span class="source-line-no">209</span><span id="line-209">  }</span>
+<span class="source-line-no">210</span><span id="line-210"></span>
+<span class="source-line-no">211</span><span id="line-211">  @Test</span>
+<span class="source-line-no">212</span><span id="line-212">  public void testContainsRange() {</span>
+<span class="source-line-no">213</span><span id="line-213">    TableDescriptor tableDesc =</span>
+<span class="source-line-no">214</span><span id="line-214">      TableDescriptorBuilder.newBuilder(TableName.valueOf(methodName)).build();</span>
+<span class="source-line-no">215</span><span id="line-215">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableDesc.getTableName())</span>
+<span class="source-line-no">216</span><span id="line-216">      .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("g")).build();</span>
+<span class="source-line-no">217</span><span id="line-217">    // Single row range at start of region</span>
+<span class="source-line-no">218</span><span id="line-218">    assertTrue(hri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("a")));</span>
+<span class="source-line-no">219</span><span id="line-219">    // Fully contained range</span>
+<span class="source-line-no">220</span><span id="line-220">    assertTrue(hri.containsRange(Bytes.toBytes("b"), Bytes.toBytes("c")));</span>
+<span class="source-line-no">221</span><span id="line-221">    // Range overlapping start of region</span>
+<span class="source-line-no">222</span><span id="line-222">    assertTrue(hri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("c")));</span>
+<span class="source-line-no">223</span><span id="line-223">    // Fully contained single-row range</span>
+<span class="source-line-no">224</span><span id="line-224">    assertTrue(hri.containsRange(Bytes.toBytes("c"), Bytes.toBytes("c")));</span>
+<span class="source-line-no">225</span><span id="line-225">    // Range that overlaps end key and hence doesn't fit</span>
+<span class="source-line-no">226</span><span id="line-226">    assertFalse(hri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("g")));</span>
+<span class="source-line-no">227</span><span id="line-227">    // Single row range on end key</span>
+<span class="source-line-no">228</span><span id="line-228">    assertFalse(hri.containsRange(Bytes.toBytes("g"), Bytes.toBytes("g")));</span>
+<span class="source-line-no">229</span><span id="line-229">    // Single row range entirely outside</span>
+<span class="source-line-no">230</span><span id="line-230">    assertFalse(hri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("z")));</span>
+<span class="source-line-no">231</span><span id="line-231"></span>
+<span class="source-line-no">232</span><span id="line-232">    // Degenerate range</span>
+<span class="source-line-no">233</span><span id="line-233">    try {</span>
+<span class="source-line-no">234</span><span id="line-234">      hri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("a"));</span>
+<span class="source-line-no">235</span><span id="line-235">      fail("Invalid range did not throw IAE");</span>
+<span class="source-line-no">236</span><span id="line-236">    } catch (IllegalArgumentException iae) {</span>
+<span class="source-line-no">237</span><span id="line-237">    }</span>
+<span class="source-line-no">238</span><span id="line-238">  }</span>
+<span class="source-line-no">239</span><span id="line-239"></span>
+<span class="source-line-no">240</span><span id="line-240">  @Test</span>
+<span class="source-line-no">241</span><span id="line-241">  public void testContainsRangeForMetaTable() {</span>
+<span class="source-line-no">242</span><span id="line-242">    TableDescriptor tableDesc =</span>
+<span class="source-line-no">243</span><span id="line-243">      TableDescriptorBuilder.newBuilder(TableName.META_TABLE_NAME).build();</span>
+<span class="source-line-no">244</span><span id="line-244">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableDesc.getTableName()).build();</span>
+<span class="source-line-no">245</span><span id="line-245">    byte[] startRow = HConstants.EMPTY_START_ROW;</span>
+<span class="source-line-no">246</span><span id="line-246">    byte[] row1 = Bytes.toBytes("a,a,0");</span>
+<span class="source-line-no">247</span><span id="line-247">    byte[] row2 = Bytes.toBytes("aaaaa,,1");</span>
+<span class="source-line-no">248</span><span id="line-248">    byte[] row3 = Bytes.toBytes("aaaaa,\u0000\u0000,2");</span>
+<span class="source-line-no">249</span><span id="line-249">    byte[] row4 = Bytes.toBytes("aaaaa,\u0001,3");</span>
+<span class="source-line-no">250</span><span id="line-250">    byte[] row5 = Bytes.toBytes("aaaaa,a,4");</span>
+<span class="source-line-no">251</span><span id="line-251">    byte[] row6 = Bytes.toBytes("aaaaa,\u1000,5");</span>
+<span class="source-line-no">252</span><span id="line-252"></span>
+<span class="source-line-no">253</span><span id="line-253">    // Single row range at start of region</span>
+<span class="source-line-no">254</span><span id="line-254">    assertTrue(hri.containsRange(startRow, startRow));</span>
+<span class="source-line-no">255</span><span id="line-255">    // Fully contained range</span>
+<span class="source-line-no">256</span><span id="line-256">    assertTrue(hri.containsRange(row1, row2));</span>
+<span class="source-line-no">257</span><span id="line-257">    assertTrue(hri.containsRange(row2, row3));</span>
+<span class="source-line-no">258</span><span id="line-258">    assertTrue(hri.containsRange(row3, row4));</span>
+<span class="source-line-no">259</span><span id="line-259">    assertTrue(hri.containsRange(row4, row5));</span>
+<span class="source-line-no">260</span><span id="line-260">    assertTrue(hri.containsRange(row5, row6));</span>
+<span class="source-line-no">261</span><span id="line-261">    // Range overlapping start of region</span>
+<span class="source-line-no">262</span><span id="line-262">    assertTrue(hri.containsRange(startRow, row2));</span>
+<span class="source-line-no">263</span><span id="line-263">    // Fully contained single-row range</span>
+<span class="source-line-no">264</span><span id="line-264">    assertTrue(hri.containsRange(row1, row1));</span>
+<span class="source-line-no">265</span><span id="line-265">    // Degenerate range</span>
+<span class="source-line-no">266</span><span id="line-266">    try {</span>
+<span class="source-line-no">267</span><span id="line-267">      hri.containsRange(row3, row2);</span>
+<span class="source-line-no">268</span><span id="line-268">      fail("Invalid range did not throw IAE");</span>
+<span class="source-line-no">269</span><span id="line-269">    } catch (IllegalArgumentException iae) {</span>
+<span class="source-line-no">270</span><span id="line-270">    }</span>
+<span class="source-line-no">271</span><span id="line-271">  }</span>
+<span class="source-line-no">272</span><span id="line-272"></span>
+<span class="source-line-no">273</span><span id="line-273">  @Test</span>
+<span class="source-line-no">274</span><span id="line-274">  public void testLastRegionCompare() {</span>
+<span class="source-line-no">275</span><span id="line-275">    TableDescriptor tableDesc =</span>
+<span class="source-line-no">276</span><span id="line-276">      TableDescriptorBuilder.newBuilder(TableName.valueOf(methodName)).build();</span>
+<span class="source-line-no">277</span><span id="line-277">    RegionInfo hrip = RegionInfoBuilder.newBuilder(tableDesc.getTableName())</span>
+<span class="source-line-no">278</span><span id="line-278">      .setStartKey(Bytes.toBytes("a")).build();</span>
+<span class="source-line-no">279</span><span id="line-279">    RegionInfo hric = RegionInfoBuilder.newBuilder(tableDesc.getTableName())</span>
+<span class="source-line-no">280</span><span id="line-280">      .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("b")).build();</span>
+<span class="source-line-no">281</span><span id="line-281">    assertTrue(hrip.compareTo(hric) &gt; 0);</span>
+<span class="source-line-no">282</span><span id="line-282">  }</span>
+<span class="source-line-no">283</span><span id="line-283"></span>
+<span class="source-line-no">284</span><span id="line-284">  @Test</span>
+<span class="source-line-no">285</span><span id="line-285">  public void testMetaTables() {</span>
+<span class="source-line-no">286</span><span id="line-286">    assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isMetaRegion());</span>
+<span class="source-line-no">287</span><span id="line-287">  }</span>
+<span class="source-line-no">288</span><span id="line-288"></span>
+<span class="source-line-no">289</span><span id="line-289">  @SuppressWarnings("SelfComparison")</span>
+<span class="source-line-no">290</span><span id="line-290">  @Test</span>
+<span class="source-line-no">291</span><span id="line-291">  public void testComparator() {</span>
+<span class="source-line-no">292</span><span id="line-292">    final TableName tableName = TableName.valueOf(methodName);</span>
+<span class="source-line-no">293</span><span id="line-293">    RegionInfo older = RegionInfoBuilder.newBuilder(tableName).setRegionId(0).build();</span>
+<span class="source-line-no">294</span><span id="line-294">    RegionInfo newer = RegionInfoBuilder.newBuilder(tableName).setRegionId(1).build();</span>
+<span class="source-line-no">295</span><span id="line-295">    assertTrue(older.compareTo(newer) &lt; 0);</span>
+<span class="source-line-no">296</span><span id="line-296">    assertTrue(newer.compareTo(older) &gt; 0);</span>
+<span class="source-line-no">297</span><span id="line-297">    assertEquals(0, older.compareTo(older));</span>
+<span class="source-line-no">298</span><span id="line-298">    assertEquals(0, newer.compareTo(newer));</span>
+<span class="source-line-no">299</span><span id="line-299"></span>
+<span class="source-line-no">300</span><span id="line-300">    RegionInfo a = RegionInfoBuilder.newBuilder(TableName.valueOf("a")).build();</span>
+<span class="source-line-no">301</span><span id="line-301">    RegionInfo b = RegionInfoBuilder.newBuilder(TableName.valueOf("b")).build();</span>
+<span class="source-line-no">302</span><span id="line-302">    assertNotEquals(0, a.compareTo(b));</span>
+<span class="source-line-no">303</span><span id="line-303">    TableName t = TableName.valueOf("t");</span>
+<span class="source-line-no">304</span><span id="line-304">    byte[] midway = Bytes.toBytes("midway");</span>
+<span class="source-line-no">305</span><span id="line-305">    a = RegionInfoBuilder.newBuilder(t).setEndKey(midway).build();</span>
+<span class="source-line-no">306</span><span id="line-306">    b = RegionInfoBuilder.newBuilder(t).setStartKey(midway).build();</span>
+<span class="source-line-no">307</span><span id="line-307">    assertTrue(a.compareTo(b) &lt; 0);</span>
+<span class="source-line-no">308</span><span id="line-308">    assertTrue(b.compareTo(a) &gt; 0);</span>
+<span class="source-line-no">309</span><span id="line-309">    assertTrue(a.equals(a));</span>
+<span class="source-line-no">310</span><span id="line-310">    assertEquals(0, a.compareTo(a));</span>
+<span class="source-line-no">311</span><span id="line-311">    a = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("a"))</span>
+<span class="source-line-no">312</span><span id="line-312">      .setEndKey(Bytes.toBytes("d")).build();</span>
+<span class="source-line-no">313</span><span id="line-313">    b = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("e"))</span>
+<span class="source-line-no">314</span><span id="line-314">      .setEndKey(Bytes.toBytes("g")).build();</span>
+<span class="source-line-no">315</span><span id="line-315">    assertTrue(a.compareTo(b) &lt; 0);</span>
+<span class="source-line-no">316</span><span id="line-316">    a = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("aaaa"))</span>
+<span class="source-line-no">317</span><span id="line-317">      .setEndKey(Bytes.toBytes("dddd")).build();</span>
+<span class="source-line-no">318</span><span id="line-318">    b = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("e"))</span>
+<span class="source-line-no">319</span><span id="line-319">      .setEndKey(Bytes.toBytes("g")).build();</span>
+<span class="source-line-no">320</span><span id="line-320">    assertTrue(a.compareTo(b) &lt; 0);</span>
+<span class="source-line-no">321</span><span id="line-321">    a = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("aaaa"))</span>
+<span class="source-line-no">322</span><span id="line-322">      .setEndKey(Bytes.toBytes("dddd")).build();</span>
+<span class="source-line-no">323</span><span id="line-323">    b = RegionInfoBuilder.newBuilder(t).setStartKey(Bytes.toBytes("aaaa"))</span>
+<span class="source-line-no">324</span><span id="line-324">      .setEndKey(Bytes.toBytes("eeee")).build();</span>
+<span class="source-line-no">325</span><span id="line-325">    assertTrue(a.compareTo(b) &lt; 0);</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">  @Test</span>
+<span class="source-line-no">330</span><span id="line-330">  public void testRegionNameForRegionReplicas() throws Exception {</span>
+<span class="source-line-no">331</span><span id="line-331">    String tableName = methodName;</span>
+<span class="source-line-no">332</span><span id="line-332">    final TableName tn = TableName.valueOf(tableName);</span>
+<span class="source-line-no">333</span><span id="line-333">    String startKey = "startkey";</span>
+<span class="source-line-no">334</span><span id="line-334">    final byte[] sk = Bytes.toBytes(startKey);</span>
+<span class="source-line-no">335</span><span id="line-335">    String id = "id";</span>
+<span class="source-line-no">336</span><span id="line-336"></span>
+<span class="source-line-no">337</span><span id="line-337">    // assert with only the region name without encoding</span>
+<span class="source-line-no">338</span><span id="line-338"></span>
+<span class="source-line-no">339</span><span id="line-339">    // primary, replicaId = 0</span>
+<span class="source-line-no">340</span><span id="line-340">    byte[] name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0, false);</span>
+<span class="source-line-no">341</span><span id="line-341">    String nameStr = Bytes.toString(name);</span>
+<span class="source-line-no">342</span><span id="line-342">    assertEquals(tableName + "," + startKey + "," + id, nameStr);</span>
+<span class="source-line-no">343</span><span id="line-343"></span>
+<span class="source-line-no">344</span><span id="line-344">    // replicaId = 1</span>
+<span class="source-line-no">345</span><span id="line-345">    name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 1, false);</span>
+<span class="source-line-no">346</span><span id="line-346">    nameStr = Bytes.toString(name);</span>
+<span class="source-line-no">347</span><span id="line-347">    assertEquals(</span>
+<span class="source-line-no">348</span><span id="line-348">      tableName + "," + startKey + "," + id + "_" + String.format(RegionInfo.REPLICA_ID_FORMAT, 1),</span>
+<span class="source-line-no">349</span><span id="line-349">      nameStr);</span>
 <span class="source-line-no">350</span><span id="line-350"></span>
-<span class="source-line-no">351</span><span id="line-351">    // assert with only the region name without encoding</span>
-<span class="source-line-no">352</span><span id="line-352"></span>
-<span class="source-line-no">353</span><span id="line-353">    // primary, replicaId = 0</span>
-<span class="source-line-no">354</span><span id="line-354">    byte[] name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0, false);</span>
-<span class="source-line-no">355</span><span id="line-355">    String nameStr = Bytes.toString(name);</span>
-<span class="source-line-no">356</span><span id="line-356">    assertEquals(tableName + "," + startKey + "," + id, nameStr);</span>
+<span class="source-line-no">351</span><span id="line-351">    // replicaId = max</span>
+<span class="source-line-no">352</span><span id="line-352">    name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0xFFFF, false);</span>
+<span class="source-line-no">353</span><span id="line-353">    nameStr = Bytes.toString(name);</span>
+<span class="source-line-no">354</span><span id="line-354">    assertEquals(tableName + "," + startKey + "," + id + "_"</span>
+<span class="source-line-no">355</span><span id="line-355">      + String.format(RegionInfo.REPLICA_ID_FORMAT, 0xFFFF), nameStr);</span>
+<span class="source-line-no">356</span><span id="line-356">  }</span>
 <span class="source-line-no">357</span><span id="line-357"></span>
-<span class="source-line-no">358</span><span id="line-358">    // replicaId = 1</span>
-<span class="source-line-no">359</span><span id="line-359">    name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 1, false);</span>
-<span class="source-line-no">360</span><span id="line-360">    nameStr = Bytes.toString(name);</span>
-<span class="source-line-no">361</span><span id="line-361">    assertEquals(</span>
-<span class="source-line-no">362</span><span id="line-362">      tableName + "," + startKey + "," + id + "_" + String.format(RegionInfo.REPLICA_ID_FORMAT, 1),</span>
-<span class="source-line-no">363</span><span id="line-363">      nameStr);</span>
+<span class="source-line-no">358</span><span id="line-358">  @Test</span>
+<span class="source-line-no">359</span><span id="line-359">  public void testParseName() throws IOException {</span>
+<span class="source-line-no">360</span><span id="line-360">    final TableName tableName = TableName.valueOf(methodName);</span>
+<span class="source-line-no">361</span><span id="line-361">    byte[] startKey = Bytes.toBytes("startKey");</span>
+<span class="source-line-no">362</span><span id="line-362">    long regionId = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">363</span><span id="line-363">    int replicaId = 42;</span>
 <span class="source-line-no">364</span><span id="line-364"></span>
-<span class="source-line-no">365</span><span id="line-365">    // replicaId = max</span>
-<span class="source-line-no">366</span><span id="line-366">    name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0xFFFF, false);</span>
-<span class="source-line-no">367</span><span id="line-367">    nameStr = Bytes.toString(name);</span>
-<span class="source-line-no">368</span><span id="line-368">    assertEquals(tableName + "," + startKey + "," + id + "_"</span>
-<span class="source-line-no">369</span><span id="line-369">      + String.format(RegionInfo.REPLICA_ID_FORMAT, 0xFFFF), nameStr);</span>
-<span class="source-line-no">370</span><span id="line-370">  }</span>
-<span class="source-line-no">371</span><span id="line-371"></span>
-<span class="source-line-no">372</span><span id="line-372">  @Test</span>
-<span class="source-line-no">373</span><span id="line-373">  public void testParseName() throws IOException {</span>
-<span class="source-line-no">374</span><span id="line-374">    final TableName tableName = TableName.valueOf(name.getMethodName());</span>
-<span class="source-line-no">375</span><span id="line-375">    byte[] startKey = Bytes.toBytes("startKey");</span>
-<span class="source-line-no">376</span><span id="line-376">    long regionId = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">377</span><span id="line-377">    int replicaId = 42;</span>
-<span class="source-line-no">378</span><span id="line-378"></span>
-<span class="source-line-no">379</span><span id="line-379">    // test without replicaId</span>
-<span class="source-line-no">380</span><span id="line-380">    byte[] regionName = RegionInfo.createRegionName(tableName, startKey, regionId, false);</span>
-<span class="source-line-no">381</span><span id="line-381"></span>
-<span class="source-line-no">382</span><span id="line-382">    byte[][] fields = RegionInfo.parseRegionName(regionName);</span>
-<span class="source-line-no">383</span><span id="line-383">    assertArrayEquals(Bytes.toString(fields[0]), tableName.getName(), fields[0]);</span>
-<span class="source-line-no">384</span><span id="line-384">    assertArrayEquals(Bytes.toString(fields[1]), startKey, fields[1]);</span>
-<span class="source-line-no">385</span><span id="line-385">    assertArrayEquals(Bytes.toString(fields[2]), Bytes.toBytes(Long.toString(regionId)), fields[2]);</span>
-<span class="source-line-no">386</span><span id="line-386">    assertEquals(3, fields.length);</span>
-<span class="source-line-no">387</span><span id="line-387"></span>
-<span class="source-line-no">388</span><span id="line-388">    // test with replicaId</span>
-<span class="source-line-no">389</span><span id="line-389">    regionName = RegionInfo.createRegionName(tableName, startKey, regionId, replicaId, false);</span>
-<span class="source-line-no">390</span><span id="line-390"></span>
-<span class="source-line-no">391</span><span id="line-391">    fields = RegionInfo.parseRegionName(regionName);</span>
-<span class="source-line-no">392</span><span id="line-392">    assertArrayEquals(Bytes.toString(fields[0]), tableName.getName(), fields[0]);</span>
-<span class="source-line-no">393</span><span id="line-393">    assertArrayEquals(Bytes.toString(fields[1]), startKey, fields[1]);</span>
-<span class="source-line-no">394</span><span id="line-394">    assertArrayEquals(Bytes.toString(fields[2]), Bytes.toBytes(Long.toString(regionId)), fields[2]);</span>
-<span class="source-line-no">395</span><span id="line-395">    assertArrayEquals(Bytes.toString(fields[3]),</span>
-<span class="source-line-no">396</span><span id="line-396">      Bytes.toBytes(String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId)), fields[3]);</span>
-<span class="source-line-no">397</span><span id="line-397">  }</span>
-<span class="source-line-no">398</span><span id="line-398"></span>
-<span class="source-line-no">399</span><span id="line-399">  @Test</span>
-<span class="source-line-no">400</span><span id="line-400">  public void testConvert() {</span>
-<span class="source-line-no">401</span><span id="line-401">    final TableName tableName = TableName.valueOf("ns1:" + name.getMethodName());</span>
-<span class="source-line-no">402</span><span id="line-402">    byte[] startKey = Bytes.toBytes("startKey");</span>
-<span class="source-line-no">403</span><span id="line-403">    byte[] endKey = Bytes.toBytes("endKey");</span>
-<span class="source-line-no">404</span><span id="line-404">    boolean split = false;</span>
-<span class="source-line-no">405</span><span id="line-405">    long regionId = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">406</span><span id="line-406">    int replicaId = 42;</span>
-<span class="source-line-no">407</span><span id="line-407"></span>
-<span class="source-line-no">408</span><span id="line-408">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).setEndKey(endKey)</span>
-<span class="source-line-no">409</span><span id="line-409">      .setSplit(split).setRegionId(regionId).setReplicaId(replicaId).build();</span>
+<span class="source-line-no">365</span><span id="line-365">    // test without replicaId</span>
+<span class="source-line-no">366</span><span id="line-366">    byte[] regionName = RegionInfo.createRegionName(tableName, startKey, regionId, false);</span>
+<span class="source-line-no">367</span><span id="line-367"></span>
+<span class="source-line-no">368</span><span id="line-368">    byte[][] fields = RegionInfo.parseRegionName(regionName);</span>
+<span class="source-line-no">369</span><span id="line-369">    assertArrayEquals(tableName.getName(), fields[0], Bytes.toString(fields[0]));</span>
+<span class="source-line-no">370</span><span id="line-370">    assertArrayEquals(startKey, fields[1], Bytes.toString(fields[1]));</span>
+<span class="source-line-no">371</span><span id="line-371">    assertArrayEquals(Bytes.toBytes(Long.toString(regionId)), fields[2], Bytes.toString(fields[2]));</span>
+<span class="source-line-no">372</span><span id="line-372">    assertEquals(3, fields.length);</span>
+<span class="source-line-no">373</span><span id="line-373"></span>
+<span class="source-line-no">374</span><span id="line-374">    // test with replicaId</span>
+<span class="source-line-no">375</span><span id="line-375">    regionName = RegionInfo.createRegionName(tableName, startKey, regionId, replicaId, false);</span>
+<span class="source-line-no">376</span><span id="line-376"></span>
+<span class="source-line-no">377</span><span id="line-377">    fields = RegionInfo.parseRegionName(regionName);</span>
+<span class="source-line-no">378</span><span id="line-378">    assertArrayEquals(tableName.getName(), fields[0], Bytes.toString(fields[0]));</span>
+<span class="source-line-no">379</span><span id="line-379">    assertArrayEquals(startKey, fields[1], Bytes.toString(fields[1]));</span>
+<span class="source-line-no">380</span><span id="line-380">    assertArrayEquals(Bytes.toBytes(Long.toString(regionId)), fields[2], Bytes.toString(fields[2]));</span>
+<span class="source-line-no">381</span><span id="line-381">    assertArrayEquals(Bytes.toBytes(String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId)),</span>
+<span class="source-line-no">382</span><span id="line-382">      fields[3], Bytes.toString(fields[3]));</span>
+<span class="source-line-no">383</span><span id="line-383">  }</span>
+<span class="source-line-no">384</span><span id="line-384"></span>
+<span class="source-line-no">385</span><span id="line-385">  @Test</span>
+<span class="source-line-no">386</span><span id="line-386">  public void testConvert() {</span>
+<span class="source-line-no">387</span><span id="line-387">    final TableName tableName = TableName.valueOf("ns1:" + methodName);</span>
+<span class="source-line-no">388</span><span id="line-388">    byte[] startKey = Bytes.toBytes("startKey");</span>
+<span class="source-line-no">389</span><span id="line-389">    byte[] endKey = Bytes.toBytes("endKey");</span>
+<span class="source-line-no">390</span><span id="line-390">    boolean split = false;</span>
+<span class="source-line-no">391</span><span id="line-391">    long regionId = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">392</span><span id="line-392">    int replicaId = 42;</span>
+<span class="source-line-no">393</span><span id="line-393"></span>
+<span class="source-line-no">394</span><span id="line-394">    RegionInfo hri = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).setEndKey(endKey)</span>
+<span class="source-line-no">395</span><span id="line-395">      .setSplit(split).setRegionId(regionId).setReplicaId(replicaId).build();</span>
+<span class="source-line-no">396</span><span id="line-396"></span>
+<span class="source-line-no">397</span><span id="line-397">    // convert two times, compare</span>
+<span class="source-line-no">398</span><span id="line-398">    RegionInfo convertedHri = ProtobufUtil.toRegionInfo(ProtobufUtil.toRegionInfo(hri));</span>
+<span class="source-line-no">399</span><span id="line-399"></span>
+<span class="source-line-no">400</span><span id="line-400">    assertEquals(hri, convertedHri);</span>
+<span class="source-line-no">401</span><span id="line-401"></span>
+<span class="source-line-no">402</span><span id="line-402">    // test convert RegionInfo without replicaId</span>
+<span class="source-line-no">403</span><span id="line-403">    HBaseProtos.RegionInfo info = HBaseProtos.RegionInfo.newBuilder()</span>
+<span class="source-line-no">404</span><span id="line-404">      .setTableName(HBaseProtos.TableName.newBuilder()</span>
+<span class="source-line-no">405</span><span id="line-405">        .setQualifier(UnsafeByteOperations.unsafeWrap(tableName.getQualifier()))</span>
+<span class="source-line-no">406</span><span id="line-406">        .setNamespace(UnsafeByteOperations.unsafeWrap(tableName.getNamespace())).build())</span>
+<span class="source-line-no">407</span><span id="line-407">      .setStartKey(UnsafeByteOperations.unsafeWrap(startKey))</span>
+<span class="source-line-no">408</span><span id="line-408">      .setEndKey(UnsafeByteOperations.unsafeWrap(endKey)).setSplit(split).setRegionId(regionId)</span>
+<span class="source-line-no">409</span><span id="line-409">      .build();</span>
 <span class="source-line-no">410</span><span id="line-410"></span>
-<span class="source-line-no">411</span><span id="line-411">    // convert two times, compare</span>
-<span class="source-line-no">412</span><span id="line-412">    RegionInfo convertedHri = ProtobufUtil.toRegionInfo(ProtobufUtil.toRegionInfo(hri));</span>
-<span class="source-line-no">413</span><span id="line-413"></span>
-<span class="source-line-no">414</span><span id="line-414">    assertEquals(hri, convertedHri);</span>
+<span class="source-line-no">411</span><span id="line-411">    convertedHri = ProtobufUtil.toRegionInfo(info);</span>
+<span class="source-line-no">412</span><span id="line-412">    // expecting default replicaId</span>
+<span class="source-line-no">413</span><span id="line-413">    RegionInfo expectedHri = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey)</span>
+<span class="source-line-no">414</span><span id="line-414">      .setEndKey(endKey).setSplit(split).setRegionId(regionId).setReplicaId(0).build();</span>
 <span class="source-line-no">415</span><span id="line-415"></span>
-<span class="source-line-no">416</span><span id="line-416">    // test convert RegionInfo without replicaId</span>
-<span class="source-line-no">417</span><span id="line-417">    HBaseProtos.RegionInfo info = HBaseProtos.RegionInfo.newBuilder()</span>
-<span class="source-line-no">418</span><span id="line-418">      .setTableName(HBaseProtos.TableName.newBuilder()</span>
-<span class="source-line-no">419</span><span id="line-419">        .setQualifier(UnsafeByteOperations.unsafeWrap(tableName.getQualifier()))</span>
-<span class="source-line-no">420</span><span id="line-420">        .setNamespace(UnsafeByteOperations.unsafeWrap(tableName.getNamespace())).build())</span>
-<span class="source-line-no">421</span><span id="line-421">      .setStartKey(UnsafeByteOperations.unsafeWrap(startKey))</span>
-<span class="source-line-no">422</span><span id="line-422">      .setEndKey(UnsafeByteOperations.unsafeWrap(endKey)).setSplit(split).setRegionId(regionId)</span>
-<span class="source-line-no">423</span><span id="line-423">      .build();</span>
-<span class="source-line-no">424</span><span id="line-424"></span>
-<span class="source-line-no">425</span><span id="line-425">    convertedHri = ProtobufUtil.toRegionInfo(info);</span>
-<span class="source-line-no">426</span><span id="line-426">    // expecting default replicaId</span>
-<span class="source-line-no">427</span><span id="line-427">    RegionInfo expectedHri = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey)</span>
-<span class="source-line-no">428</span><span id="line-428">      .setEndKey(endKey).setSplit(split).setRegionId(regionId).setReplicaId(0).build();</span>
-<span class="source-line-no">429</span><span id="line-429"></span>
-<span class="source-line-no">430</span><span id="line-430">    assertEquals(expectedHri, convertedHri);</span>
-<span class="source-line-no">431</span><span id="line-431">  }</span>
-<span class="source-line-no">432</span><span id="line-432"></span>
-<span class="source-line-no">433</span><span id="line-433">  @Test</span>
-<span class="source-line-no">434</span><span id="line-434">  public void testRegionDetailsForDisplay() throws IOException {</span>
-<span class="source-line-no">435</span><span id="line-435">    byte[] startKey = new byte[] { 0x01, 0x01, 0x02, 0x03 };</span>
-<span class="source-line-no">436</span><span id="line-436">    byte[] endKey = new byte[] { 0x01, 0x01, 0x02, 0x04 };</span>
-<span class="source-line-no">437</span><span id="line-437">    Configuration conf = new Configuration();</span>
-<span class="source-line-no">438</span><span id="line-438">    conf.setBoolean("hbase.display.keys", false);</span>
-<span class="source-line-no">439</span><span id="line-439">    RegionInfo h = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))</span>
-<span class="source-line-no">440</span><span id="line-440">      .setStartKey(startKey).setEndKey(endKey).build();</span>
-<span class="source-line-no">441</span><span id="line-441">    checkEquality(h, conf);</span>
-<span class="source-line-no">442</span><span id="line-442">    // check HRIs with non-default replicaId</span>
-<span class="source-line-no">443</span><span id="line-443">    h = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName())).setStartKey(startKey)</span>
-<span class="source-line-no">444</span><span id="line-444">      .setEndKey(endKey).setRegionId(EnvironmentEdgeManager.currentTime()).setReplicaId(1).build();</span>
-<span class="source-line-no">445</span><span id="line-445">    checkEquality(h, conf);</span>
-<span class="source-line-no">446</span><span id="line-446">    assertArrayEquals(RegionInfoDisplay.HIDDEN_END_KEY,</span>
-<span class="source-line-no">447</span><span id="line-447">      RegionInfoDisplay.getEndKeyForDisplay(h, conf));</span>
-<span class="source-line-no">448</span><span id="line-448">    assertArrayEquals(RegionInfoDisplay.HIDDEN_START_KEY,</span>
-<span class="source-line-no">449</span><span id="line-449">      RegionInfoDisplay.getStartKeyForDisplay(h, conf));</span>
-<span class="source-line-no">450</span><span id="line-450"></span>
-<span class="source-line-no">451</span><span id="line-451">    RegionState state = RegionState.createForTesting(h, RegionState.State.OPEN);</span>
-<span class="source-line-no">452</span><span id="line-452">    String descriptiveNameForDisplay =</span>
-<span class="source-line-no">453</span><span id="line-453">      RegionInfoDisplay.getDescriptiveNameFromRegionStateForDisplay(state, conf);</span>
-<span class="source-line-no">454</span><span id="line-454">    checkDescriptiveNameEquality(descriptiveNameForDisplay, state.toDescriptiveString(), startKey);</span>
-<span class="source-line-no">455</span><span id="line-455"></span>
-<span class="source-line-no">456</span><span id="line-456">    conf.setBoolean("hbase.display.keys", true);</span>
-<span class="source-line-no">457</span><span id="line-457">    assertArrayEquals(endKey, RegionInfoDisplay.getEndKeyForDisplay(h, conf));</span>
-<span class="source-line-no">458</span><span id="line-458">    assertArrayEquals(startKey, RegionInfoDisplay.getStartKeyForDisplay(h, conf));</span>
-<span class="source-line-no">459</span><span id="line-459">    assertEquals(state.toDescriptiveString(),</span>
-<span class="source-line-no">460</span><span id="line-460">      RegionInfoDisplay.getDescriptiveNameFromRegionStateForDisplay(state, conf));</span>
-<span class="source-line-no">461</span><span id="line-461">  }</span>
-<span class="source-line-no">462</span><span id="line-462"></span>
-<span class="source-line-no">463</span><span id="line-463">  private void checkDescriptiveNameEquality(String descriptiveNameForDisplay, String origDesc,</span>
-<span class="source-line-no">464</span><span id="line-464">    byte[] startKey) {</span>
-<span class="source-line-no">465</span><span id="line-465">    // except for the "hidden-start-key" substring everything else should exactly match</span>
-<span class="source-line-no">466</span><span id="line-466">    String firstPart = descriptiveNameForDisplay.substring(0,</span>
-<span class="source-line-no">467</span><span id="line-467">      descriptiveNameForDisplay.indexOf(new String(RegionInfoDisplay.HIDDEN_START_KEY)));</span>
-<span class="source-line-no">468</span><span id="line-468">    String secondPart = descriptiveNameForDisplay</span>
-<span class="source-line-no">469</span><span id="line-469">      .substring(descriptiveNameForDisplay.indexOf(new String(RegionInfoDisplay.HIDDEN_START_KEY))</span>
-<span class="source-line-no">470</span><span id="line-470">        + RegionInfoDisplay.HIDDEN_START_KEY.length);</span>
-<span class="source-line-no">471</span><span id="line-471">    String firstPartOrig = origDesc.substring(0, origDesc.indexOf(Bytes.toStringBinary(startKey)));</span>
-<span class="source-line-no">472</span><span id="line-472">    String secondPartOrig = origDesc.substring(</span>
-<span class="source-line-no">473</span><span id="line-473">      origDesc.indexOf(Bytes.toStringBinary(startKey)) + Bytes.toStringBinary(startKey).length());</span>
-<span class="source-line-no">474</span><span id="line-474">    assert (firstPart.equals(firstPartOrig));</span>
-<span class="source-line-no">475</span><span id="line-475">    assert (secondPart.equals(secondPartOrig));</span>
-<span class="source-line-no">476</span><span id="line-476">  }</span>
-<span class="source-line-no">477</span><span id="line-477"></span>
-<span class="source-line-no">478</span><span id="line-478">  private void checkEquality(RegionInfo h, Configuration conf) throws IOException {</span>
-<span class="source-line-no">479</span><span id="line-479">    byte[] modifiedRegionName = RegionInfoDisplay.getRegionNameForDisplay(h, conf);</span>
-<span class="source-line-no">480</span><span id="line-480">    byte[][] modifiedRegionNameParts = RegionInfo.parseRegionName(modifiedRegionName);</span>
-<span class="source-line-no">481</span><span id="line-481">    byte[][] regionNameParts = RegionInfo.parseRegionName(h.getRegionName());</span>
-<span class="source-line-no">482</span><span id="line-482"></span>
-<span class="source-line-no">483</span><span id="line-483">    // same number of parts</span>
-<span class="source-line-no">484</span><span id="line-484">    assert (modifiedRegionNameParts.length == regionNameParts.length);</span>
-<span class="source-line-no">485</span><span id="line-485"></span>
-<span class="source-line-no">486</span><span id="line-486">    for (int i = 0; i &lt; regionNameParts.length; i++) {</span>
-<span class="source-line-no">487</span><span id="line-487">      // all parts should match except for [1] where in the modified one,</span>
-<span class="source-line-no">488</span><span id="line-488">      // we should have "hidden_start_key"</span>
-<span class="source-line-no">489</span><span id="line-489">      if (i != 1) {</span>
-<span class="source-line-no">490</span><span id="line-490">        Assert.assertArrayEquals(regionNameParts[i], modifiedRegionNameParts[i]);</span>
-<span class="source-line-no">491</span><span id="line-491">      } else {</span>
-<span class="source-line-no">492</span><span id="line-492">        assertNotEquals(regionNameParts[i][0], modifiedRegionNameParts[i][0]);</span>
-<span class="source-line-no">493</span><span id="line-493">        Assert.assertArrayEquals(modifiedRegionNameParts[1],</span>
-<span class="source-line-no">494</span><span id="line-494">          RegionInfoDisplay.getStartKeyForDisplay(h, conf));</span>
-<span class="source-line-no">495</span><span id="line-495">      }</span>
-<span class="source-line-no">496</span><span id="line-496">    }</span>
-<span class="source-line-no">497</span><span id="line-497">  }</span>
-<span class="source-line-no">498</span><span id="line-498">}</span>
+<span class="source-line-no">416</span><span id="line-416">    assertEquals(expectedHri, convertedHri);</span>
+<span class="source-line-no">417</span><span id="line-417">  }</span>
+<span class="source-line-no">418</span><span id="line-418"></span>
+<span class="source-line-no">419</span><span id="line-419">  @Test</span>
+<span class="source-line-no">420</span><span id="line-420">  public void testRegionDetailsForDisplay() throws IOException {</span>
+<span class="source-line-no">421</span><span id="line-421">    byte[] startKey = new byte[] { 0x01, 0x01, 0x02, 0x03 };</span>
+<span class="source-line-no">422</span><span id="line-422">    byte[] endKey = new byte[] { 0x01, 0x01, 0x02, 0x04 };</span>
+<span class="source-line-no">423</span><span id="line-423">    Configuration conf = new Configuration();</span>
+<span class="source-line-no">424</span><span id="line-424">    conf.setBoolean("hbase.display.keys", false);</span>
+<span class="source-line-no">425</span><span id="line-425">    RegionInfo h = RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(startKey)</span>
+<span class="source-line-no">426</span><span id="line-426">      .setEndKey(endKey).build();</span>
+<span class="source-line-no">427</span><span id="line-427">    checkEquality(h, conf);</span>
+<span class="source-line-no">428</span><span id="line-428">    // check HRIs with non-default replicaId</span>
+<span class="source-line-no">429</span><span id="line-429">    h = RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(startKey)</span>
+<span class="source-line-no">430</span><span id="line-430">      .setEndKey(endKey).setRegionId(EnvironmentEdgeManager.currentTime()).setReplicaId(1).build();</span>
+<span class="source-line-no">431</span><span id="line-431">    checkEquality(h, conf);</span>
+<span class="source-line-no">432</span><span id="line-432">    assertArrayEquals(RegionInfoDisplay.HIDDEN_END_KEY,</span>
+<span class="source-line-no">433</span><span id="line-433">      RegionInfoDisplay.getEndKeyForDisplay(h, conf));</span>
+<span class="source-line-no">434</span><span id="line-434">    assertArrayEquals(RegionInfoDisplay.HIDDEN_START_KEY,</span>
+<span class="source-line-no">435</span><span id="line-435">      RegionInfoDisplay.getStartKeyForDisplay(h, conf));</span>
+<span class="source-line-no">436</span><span id="line-436"></span>
+<span class="source-line-no">437</span><span id="line-437">    RegionState state = RegionState.createForTesting(h, RegionState.State.OPEN);</span>
+<span class="source-line-no">438</span><span id="line-438">    String descriptiveNameForDisplay =</span>
+<span class="source-line-no">439</span><span id="line-439">      RegionInfoDisplay.getDescriptiveNameFromRegionStateForDisplay(state, conf);</span>
+<span class="source-line-no">440</span><span id="line-440">    checkDescriptiveNameEquality(descriptiveNameForDisplay, state.toDescriptiveString(), startKey);</span>
+<span class="source-line-no">441</span><span id="line-441"></span>
+<span class="source-line-no">442</span><span id="line-442">    conf.setBoolean("hbase.display.keys", true);</span>
+<span class="source-line-no">443</span><span id="line-443">    assertArrayEquals(endKey, RegionInfoDisplay.getEndKeyForDisplay(h, conf));</span>
+<span class="source-line-no">444</span><span id="line-444">    assertArrayEquals(startKey, RegionInfoDisplay.getStartKeyForDisplay(h, conf));</span>
+<span class="source-line-no">445</span><span id="line-445">    assertEquals(state.toDescriptiveString(),</span>
+<span class="source-line-no">446</span><span id="line-446">      RegionInfoDisplay.getDescriptiveNameFromRegionStateForDisplay(state, conf));</span>
+<span class="source-line-no">447</span><span id="line-447">  }</span>
+<span class="source-line-no">448</span><span id="line-448"></span>
+<span class="source-line-no">449</span><span id="line-449">  private void checkDescriptiveNameEquality(String descriptiveNameForDisplay, String origDesc,</span>
+<span class="source-line-no">450</span><span id="line-450">    byte[] startKey) {</span>
+<span class="source-line-no">451</span><span id="line-451">    // except for the "hidden-start-key" substring everything else should exactly match</span>
+<span class="source-line-no">452</span><span id="line-452">    String firstPart = descriptiveNameForDisplay.substring(0,</span>
+<span class="source-line-no">453</span><span id="line-453">      descriptiveNameForDisplay.indexOf(new String(RegionInfoDisplay.HIDDEN_START_KEY)));</span>
+<span class="source-line-no">454</span><span id="line-454">    String secondPart = descriptiveNameForDisplay</span>
+<span class="source-line-no">455</span><span id="line-455">      .substring(descriptiveNameForDisplay.indexOf(new String(RegionInfoDisplay.HIDDEN_START_KEY))</span>
+<span class="source-line-no">456</span><span id="line-456">        + RegionInfoDisplay.HIDDEN_START_KEY.length);</span>
+<span class="source-line-no">457</span><span id="line-457">    String firstPartOrig = origDesc.substring(0, origDesc.indexOf(Bytes.toStringBinary(startKey)));</span>
+<span class="source-line-no">458</span><span id="line-458">    String secondPartOrig = origDesc.substring(</span>
+<span class="source-line-no">459</span><span id="line-459">      origDesc.indexOf(Bytes.toStringBinary(startKey)) + Bytes.toStringBinary(startKey).length());</span>
+<span class="source-line-no">460</span><span id="line-460">    assert (firstPart.equals(firstPartOrig));</span>
+<span class="source-line-no">461</span><span id="line-461">    assert (secondPart.equals(secondPartOrig));</span>
+<span class="source-line-no">462</span><span id="line-462">  }</span>
+<span class="source-line-no">463</span><span id="line-463"></span>
+<span class="source-line-no">464</span><span id="line-464">  private void checkEquality(RegionInfo h, Configuration conf) throws IOException {</span>
+<span class="source-line-no">465</span><span id="line-465">    byte[] modifiedRegionName = RegionInfoDisplay.getRegionNameForDisplay(h, conf);</span>
+<span class="source-line-no">466</span><span id="line-466">    byte[][] modifiedRegionNameParts = RegionInfo.parseRegionName(modifiedRegionName);</span>
+<span class="source-line-no">467</span><span id="line-467">    byte[][] regionNameParts = RegionInfo.parseRegionName(h.getRegionName());</span>
+<span class="source-line-no">468</span><span id="line-468"></span>
+<span class="source-line-no">469</span><span id="line-469">    // same number of parts</span>
+<span class="source-line-no">470</span><span id="line-470">    assert (modifiedRegionNameParts.length == regionNameParts.length);</span>
+<span class="source-line-no">471</span><span id="line-471"></span>
+<span class="source-line-no">472</span><span id="line-472">    for (int i = 0; i &lt; regionNameParts.length; i++) {</span>
+<span class="source-line-no">473</span><span id="line-473">      // all parts should match except for [1] where in the modified one,</span>
+<span class="source-line-no">474</span><span id="line-474">      // we should have "hidden_start_key"</span>
+<span class="source-line-no">475</span><span id="line-475">      if (i != 1) {</span>
+<span class="source-line-no">476</span><span id="line-476">        assertArrayEquals(regionNameParts[i], modifiedRegionNameParts[i]);</span>
+<span class="source-line-no">477</span><span id="line-477">      } else {</span>
+<span class="source-line-no">478</span><span id="line-478">        assertNotEquals(regionNameParts[i][0], modifiedRegionNameParts[i][0]);</span>
+<span class="source-line-no">479</span><span id="line-479">        assertArrayEquals(modifiedRegionNameParts[1],</span>
+<span class="source-line-no">480</span><span id="line-480">          RegionInfoDisplay.getStartKeyForDisplay(h, conf));</span>
+<span class="source-line-no">481</span><span id="line-481">      }</span>
+<span class="source-line-no">482</span><span id="line-482">    }</span>
+<span class="source-line-no">483</span><span id="line-483">  }</span>
+<span class="source-line-no">484</span><span id="line-484">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.DelayingFilter.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.DelayingFilter.html
index 68db8751f6f..62123d27c53 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.DelayingFilter.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.DelayingFilter.html
@@ -30,7 +30,7 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.io.InterruptedIOException;</span>
@@ -40,335 +40,326 @@
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.Path;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.Cell;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.NotServingRegionException;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.TableNameTestRule;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.Waiter;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Admin;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Append;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.BufferedMutator;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Delete;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Durability;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.Increment;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Result;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.ResultScanner;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.Scan;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.Table;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.coprocessor.ObserverContext;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.coprocessor.RegionObserver;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.filter.FilterBase;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
-<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.wal.WALEdit;</span>
-<span class="source-line-no">063</span><span id="line-63">import org.junit.After;</span>
-<span class="source-line-no">064</span><span id="line-64">import org.junit.Before;</span>
-<span class="source-line-no">065</span><span id="line-65">import org.junit.BeforeClass;</span>
-<span class="source-line-no">066</span><span id="line-66">import org.junit.ClassRule;</span>
-<span class="source-line-no">067</span><span id="line-67">import org.junit.Rule;</span>
-<span class="source-line-no">068</span><span id="line-68">import org.junit.Test;</span>
-<span class="source-line-no">069</span><span id="line-69">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">070</span><span id="line-70">import org.slf4j.Logger;</span>
-<span class="source-line-no">071</span><span id="line-71">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">072</span><span id="line-72"></span>
-<span class="source-line-no">073</span><span id="line-73">@Category({ RegionServerTests.class, LargeTests.class })</span>
-<span class="source-line-no">074</span><span id="line-74">public class TestRegionInterrupt {</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  @ClassRule</span>
-<span class="source-line-no">077</span><span id="line-77">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">078</span><span id="line-78">    HBaseClassTestRule.forClass(TestRegionInterrupt.class);</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">081</span><span id="line-81">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionInterrupt.class);</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  static final byte[] FAMILY = Bytes.toBytes("info");</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">  static long sleepTime;</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">  @Rule</span>
-<span class="source-line-no">088</span><span id="line-88">  public TableNameTestRule name = new TableNameTestRule();</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90">  @BeforeClass</span>
-<span class="source-line-no">091</span><span id="line-91">  public static void setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">092</span><span id="line-92">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">093</span><span id="line-93">    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);</span>
-<span class="source-line-no">094</span><span id="line-94">    conf.setClass(HConstants.REGION_IMPL, InterruptInterceptingHRegion.class, Region.class);</span>
-<span class="source-line-no">095</span><span id="line-95">    conf.setBoolean(HRegion.CLOSE_WAIT_ABORT, true);</span>
-<span class="source-line-no">096</span><span id="line-96">    // Ensure the sleep interval is long enough for interrupts to occur.</span>
-<span class="source-line-no">097</span><span id="line-97">    long waitInterval =</span>
-<span class="source-line-no">098</span><span id="line-98">      conf.getLong(HRegion.CLOSE_WAIT_INTERVAL, HRegion.DEFAULT_CLOSE_WAIT_INTERVAL);</span>
-<span class="source-line-no">099</span><span id="line-99">    sleepTime = waitInterval * 2;</span>
-<span class="source-line-no">100</span><span id="line-100">    // Try to bound the running time of this unit if expected actions do not take place.</span>
-<span class="source-line-no">101</span><span id="line-101">    conf.setLong(HRegion.CLOSE_WAIT_TIME, sleepTime * 2);</span>
-<span class="source-line-no">102</span><span id="line-102">  }</span>
-<span class="source-line-no">103</span><span id="line-103"></span>
-<span class="source-line-no">104</span><span id="line-104">  @Before</span>
-<span class="source-line-no">105</span><span id="line-105">  public void setUp() throws Exception {</span>
-<span class="source-line-no">106</span><span id="line-106">    TEST_UTIL.startMiniCluster();</span>
-<span class="source-line-no">107</span><span id="line-107">  }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">  @After</span>
-<span class="source-line-no">110</span><span id="line-110">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">111</span><span id="line-111">    TEST_UTIL.shutdownMiniCluster();</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">  @Test</span>
-<span class="source-line-no">115</span><span id="line-115">  public void testCloseInterruptScanning() throws Exception {</span>
-<span class="source-line-no">116</span><span id="line-116">    final TableName tableName = name.getTableName();</span>
-<span class="source-line-no">117</span><span id="line-117">    LOG.info("Creating table " + tableName);</span>
-<span class="source-line-no">118</span><span id="line-118">    try (Table table = TEST_UTIL.createTable(tableName, FAMILY)) {</span>
-<span class="source-line-no">119</span><span id="line-119">      // load some data</span>
-<span class="source-line-no">120</span><span id="line-120">      TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
-<span class="source-line-no">121</span><span id="line-121">      TEST_UTIL.loadTable(table, FAMILY);</span>
-<span class="source-line-no">122</span><span id="line-122">      final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
-<span class="source-line-no">123</span><span id="line-123">      // scan the table in the background</span>
-<span class="source-line-no">124</span><span id="line-124">      Thread scanner = new Thread(new Runnable() {</span>
-<span class="source-line-no">125</span><span id="line-125">        @Override</span>
-<span class="source-line-no">126</span><span id="line-126">        public void run() {</span>
-<span class="source-line-no">127</span><span id="line-127">          Scan scan = new Scan();</span>
-<span class="source-line-no">128</span><span id="line-128">          scan.addFamily(FAMILY);</span>
-<span class="source-line-no">129</span><span id="line-129">          scan.setFilter(new DelayingFilter());</span>
-<span class="source-line-no">130</span><span id="line-130">          try {</span>
-<span class="source-line-no">131</span><span id="line-131">            LOG.info("Starting scan");</span>
-<span class="source-line-no">132</span><span id="line-132">            try (ResultScanner rs = table.getScanner(scan)) {</span>
-<span class="source-line-no">133</span><span id="line-133">              Result r;</span>
-<span class="source-line-no">134</span><span id="line-134">              do {</span>
-<span class="source-line-no">135</span><span id="line-135">                r = rs.next();</span>
-<span class="source-line-no">136</span><span id="line-136">                if (r != null) {</span>
-<span class="source-line-no">137</span><span id="line-137">                  LOG.info("Scanned row " + Bytes.toStringBinary(r.getRow()));</span>
-<span class="source-line-no">138</span><span id="line-138">                }</span>
-<span class="source-line-no">139</span><span id="line-139">              } while (r != null);</span>
-<span class="source-line-no">140</span><span id="line-140">            }</span>
-<span class="source-line-no">141</span><span id="line-141">          } catch (IOException e) {</span>
-<span class="source-line-no">142</span><span id="line-142">            LOG.info("Scanner caught exception", e);</span>
-<span class="source-line-no">143</span><span id="line-143">            expectedExceptionCaught.set(true);</span>
-<span class="source-line-no">144</span><span id="line-144">          } finally {</span>
-<span class="source-line-no">145</span><span id="line-145">            LOG.info("Finished scan");</span>
-<span class="source-line-no">146</span><span id="line-146">          }</span>
-<span class="source-line-no">147</span><span id="line-147">        }</span>
-<span class="source-line-no">148</span><span id="line-148">      });</span>
-<span class="source-line-no">149</span><span id="line-149">      scanner.start();</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.NotServingRegionException;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.Waiter;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.Admin;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Append;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.BufferedMutator;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.Delete;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.Durability;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Increment;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Put;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.Result;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.ResultScanner;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Scan;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.Table;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.coprocessor.ObserverContext;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.coprocessor.RegionObserver;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.filter.FilterBase;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.wal.WALEdit;</span>
+<span class="source-line-no">061</span><span id="line-61">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">062</span><span id="line-62">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">063</span><span id="line-63">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">064</span><span id="line-64">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">065</span><span id="line-65">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">066</span><span id="line-66">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">067</span><span id="line-67">import org.slf4j.Logger;</span>
+<span class="source-line-no">068</span><span id="line-68">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">071</span><span id="line-71">@Tag(LargeTests.TAG)</span>
+<span class="source-line-no">072</span><span id="line-72">public class TestRegionInterrupt {</span>
+<span class="source-line-no">073</span><span id="line-73"></span>
+<span class="source-line-no">074</span><span id="line-74">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">075</span><span id="line-75">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionInterrupt.class);</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  static final byte[] FAMILY = Bytes.toBytes("info");</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">  static long sleepTime;</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">  @BeforeAll</span>
+<span class="source-line-no">082</span><span id="line-82">  public static void setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">083</span><span id="line-83">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">084</span><span id="line-84">    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);</span>
+<span class="source-line-no">085</span><span id="line-85">    conf.setClass(HConstants.REGION_IMPL, InterruptInterceptingHRegion.class, Region.class);</span>
+<span class="source-line-no">086</span><span id="line-86">    conf.setBoolean(HRegion.CLOSE_WAIT_ABORT, true);</span>
+<span class="source-line-no">087</span><span id="line-87">    // Ensure the sleep interval is long enough for interrupts to occur.</span>
+<span class="source-line-no">088</span><span id="line-88">    long waitInterval =</span>
+<span class="source-line-no">089</span><span id="line-89">      conf.getLong(HRegion.CLOSE_WAIT_INTERVAL, HRegion.DEFAULT_CLOSE_WAIT_INTERVAL);</span>
+<span class="source-line-no">090</span><span id="line-90">    sleepTime = waitInterval * 2;</span>
+<span class="source-line-no">091</span><span id="line-91">    // Try to bound the running time of this unit if expected actions do not take place.</span>
+<span class="source-line-no">092</span><span id="line-92">    conf.setLong(HRegion.CLOSE_WAIT_TIME, sleepTime * 2);</span>
+<span class="source-line-no">093</span><span id="line-93">  }</span>
+<span class="source-line-no">094</span><span id="line-94"></span>
+<span class="source-line-no">095</span><span id="line-95">  @BeforeEach</span>
+<span class="source-line-no">096</span><span id="line-96">  public void setUp() throws Exception {</span>
+<span class="source-line-no">097</span><span id="line-97">    TEST_UTIL.startMiniCluster();</span>
+<span class="source-line-no">098</span><span id="line-98">  }</span>
+<span class="source-line-no">099</span><span id="line-99"></span>
+<span class="source-line-no">100</span><span id="line-100">  @AfterEach</span>
+<span class="source-line-no">101</span><span id="line-101">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">102</span><span id="line-102">    TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">103</span><span id="line-103">  }</span>
+<span class="source-line-no">104</span><span id="line-104"></span>
+<span class="source-line-no">105</span><span id="line-105">  @Test</span>
+<span class="source-line-no">106</span><span id="line-106">  public void testCloseInterruptScanning(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">107</span><span id="line-107">    final TableName tableName = TableName.valueOf(testInfo.getTestMethod().get().getName());</span>
+<span class="source-line-no">108</span><span id="line-108">    LOG.info("Creating table " + tableName);</span>
+<span class="source-line-no">109</span><span id="line-109">    try (Table table = TEST_UTIL.createTable(tableName, FAMILY)) {</span>
+<span class="source-line-no">110</span><span id="line-110">      // load some data</span>
+<span class="source-line-no">111</span><span id="line-111">      TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
+<span class="source-line-no">112</span><span id="line-112">      TEST_UTIL.loadTable(table, FAMILY);</span>
+<span class="source-line-no">113</span><span id="line-113">      final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
+<span class="source-line-no">114</span><span id="line-114">      // scan the table in the background</span>
+<span class="source-line-no">115</span><span id="line-115">      Thread scanner = new Thread(new Runnable() {</span>
+<span class="source-line-no">116</span><span id="line-116">        @Override</span>
+<span class="source-line-no">117</span><span id="line-117">        public void run() {</span>
+<span class="source-line-no">118</span><span id="line-118">          Scan scan = new Scan();</span>
+<span class="source-line-no">119</span><span id="line-119">          scan.addFamily(FAMILY);</span>
+<span class="source-line-no">120</span><span id="line-120">          scan.setFilter(new DelayingFilter());</span>
+<span class="source-line-no">121</span><span id="line-121">          try {</span>
+<span class="source-line-no">122</span><span id="line-122">            LOG.info("Starting scan");</span>
+<span class="source-line-no">123</span><span id="line-123">            try (ResultScanner rs = table.getScanner(scan)) {</span>
+<span class="source-line-no">124</span><span id="line-124">              Result r;</span>
+<span class="source-line-no">125</span><span id="line-125">              do {</span>
+<span class="source-line-no">126</span><span id="line-126">                r = rs.next();</span>
+<span class="source-line-no">127</span><span id="line-127">                if (r != null) {</span>
+<span class="source-line-no">128</span><span id="line-128">                  LOG.info("Scanned row " + Bytes.toStringBinary(r.getRow()));</span>
+<span class="source-line-no">129</span><span id="line-129">                }</span>
+<span class="source-line-no">130</span><span id="line-130">              } while (r != null);</span>
+<span class="source-line-no">131</span><span id="line-131">            }</span>
+<span class="source-line-no">132</span><span id="line-132">          } catch (IOException e) {</span>
+<span class="source-line-no">133</span><span id="line-133">            LOG.info("Scanner caught exception", e);</span>
+<span class="source-line-no">134</span><span id="line-134">            expectedExceptionCaught.set(true);</span>
+<span class="source-line-no">135</span><span id="line-135">          } finally {</span>
+<span class="source-line-no">136</span><span id="line-136">            LOG.info("Finished scan");</span>
+<span class="source-line-no">137</span><span id="line-137">          }</span>
+<span class="source-line-no">138</span><span id="line-138">        }</span>
+<span class="source-line-no">139</span><span id="line-139">      });</span>
+<span class="source-line-no">140</span><span id="line-140">      scanner.start();</span>
+<span class="source-line-no">141</span><span id="line-141"></span>
+<span class="source-line-no">142</span><span id="line-142">      // Wait for the filter to begin sleeping</span>
+<span class="source-line-no">143</span><span id="line-143">      LOG.info("Waiting for scanner to start");</span>
+<span class="source-line-no">144</span><span id="line-144">      Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">145</span><span id="line-145">        @Override</span>
+<span class="source-line-no">146</span><span id="line-146">        public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">147</span><span id="line-147">          return DelayingFilter.isSleeping();</span>
+<span class="source-line-no">148</span><span id="line-148">        }</span>
+<span class="source-line-no">149</span><span id="line-149">      });</span>
 <span class="source-line-no">150</span><span id="line-150"></span>
-<span class="source-line-no">151</span><span id="line-151">      // Wait for the filter to begin sleeping</span>
-<span class="source-line-no">152</span><span id="line-152">      LOG.info("Waiting for scanner to start");</span>
-<span class="source-line-no">153</span><span id="line-153">      Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
-<span class="source-line-no">154</span><span id="line-154">        @Override</span>
-<span class="source-line-no">155</span><span id="line-155">        public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">156</span><span id="line-156">          return DelayingFilter.isSleeping();</span>
-<span class="source-line-no">157</span><span id="line-157">        }</span>
-<span class="source-line-no">158</span><span id="line-158">      });</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160">      // Offline the table, this will trigger closing</span>
-<span class="source-line-no">161</span><span id="line-161">      LOG.info("Offlining table " + tableName);</span>
-<span class="source-line-no">162</span><span id="line-162">      TEST_UTIL.getAdmin().disableTable(tableName);</span>
-<span class="source-line-no">163</span><span id="line-163"></span>
-<span class="source-line-no">164</span><span id="line-164">      // Wait for scanner termination</span>
-<span class="source-line-no">165</span><span id="line-165">      scanner.join();</span>
-<span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">      // When we get here the region has closed and the table is offline</span>
-<span class="source-line-no">168</span><span id="line-168">      assertTrue("Region operations were not interrupted",</span>
-<span class="source-line-no">169</span><span id="line-169">        InterruptInterceptingHRegion.wasInterrupted());</span>
-<span class="source-line-no">170</span><span id="line-170">      assertTrue("Scanner did not catch expected exception", expectedExceptionCaught.get());</span>
-<span class="source-line-no">171</span><span id="line-171">    }</span>
-<span class="source-line-no">172</span><span id="line-172">  }</span>
-<span class="source-line-no">173</span><span id="line-173"></span>
-<span class="source-line-no">174</span><span id="line-174">  @Test</span>
-<span class="source-line-no">175</span><span id="line-175">  public void testCloseInterruptMutation() throws Exception {</span>
-<span class="source-line-no">176</span><span id="line-176">    final TableName tableName = name.getTableName();</span>
-<span class="source-line-no">177</span><span id="line-177">    final Admin admin = TEST_UTIL.getAdmin();</span>
-<span class="source-line-no">178</span><span id="line-178">    // Create the test table</span>
-<span class="source-line-no">179</span><span id="line-179">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)</span>
-<span class="source-line-no">180</span><span id="line-180">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY))</span>
-<span class="source-line-no">181</span><span id="line-181">      .setCoprocessor(MutationDelayingCoprocessor.class.getName()).build();</span>
-<span class="source-line-no">182</span><span id="line-182">    LOG.info("Creating table " + tableName);</span>
-<span class="source-line-no">183</span><span id="line-183">    admin.createTable(htd);</span>
-<span class="source-line-no">184</span><span id="line-184">    TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
-<span class="source-line-no">185</span><span id="line-185"></span>
-<span class="source-line-no">186</span><span id="line-186">    // Insert some data in the background</span>
-<span class="source-line-no">187</span><span id="line-187">    LOG.info("Starting writes to table " + tableName);</span>
-<span class="source-line-no">188</span><span id="line-188">    final int NUM_ROWS = 100;</span>
-<span class="source-line-no">189</span><span id="line-189">    final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
-<span class="source-line-no">190</span><span id="line-190">    Thread inserter = new Thread(new Runnable() {</span>
-<span class="source-line-no">191</span><span id="line-191">      @Override</span>
-<span class="source-line-no">192</span><span id="line-192">      public void run() {</span>
-<span class="source-line-no">193</span><span id="line-193">        try (BufferedMutator t = admin.getConnection().getBufferedMutator(tableName)) {</span>
-<span class="source-line-no">194</span><span id="line-194">          for (int i = 0; i &lt; NUM_ROWS; i++) {</span>
-<span class="source-line-no">195</span><span id="line-195">            LOG.info("Writing row " + i + " to " + tableName);</span>
-<span class="source-line-no">196</span><span id="line-196">            byte[] value = new byte[10], row = Bytes.toBytes(Integer.toString(i));</span>
-<span class="source-line-no">197</span><span id="line-197">            Bytes.random(value);</span>
-<span class="source-line-no">198</span><span id="line-198">            t.mutate(new Put(row).addColumn(FAMILY, HConstants.EMPTY_BYTE_ARRAY, value));</span>
-<span class="source-line-no">199</span><span id="line-199">            t.flush();</span>
-<span class="source-line-no">200</span><span id="line-200">          }</span>
-<span class="source-line-no">201</span><span id="line-201">        } catch (IOException e) {</span>
-<span class="source-line-no">202</span><span id="line-202">          LOG.info("Inserter caught exception", e);</span>
-<span class="source-line-no">203</span><span id="line-203">          expectedExceptionCaught.set(true);</span>
-<span class="source-line-no">204</span><span id="line-204">        }</span>
-<span class="source-line-no">205</span><span id="line-205">      }</span>
-<span class="source-line-no">206</span><span id="line-206">    });</span>
-<span class="source-line-no">207</span><span id="line-207">    inserter.start();</span>
+<span class="source-line-no">151</span><span id="line-151">      // Offline the table, this will trigger closing</span>
+<span class="source-line-no">152</span><span id="line-152">      LOG.info("Offlining table " + tableName);</span>
+<span class="source-line-no">153</span><span id="line-153">      TEST_UTIL.getAdmin().disableTable(tableName);</span>
+<span class="source-line-no">154</span><span id="line-154"></span>
+<span class="source-line-no">155</span><span id="line-155">      // Wait for scanner termination</span>
+<span class="source-line-no">156</span><span id="line-156">      scanner.join();</span>
+<span class="source-line-no">157</span><span id="line-157"></span>
+<span class="source-line-no">158</span><span id="line-158">      // When we get here the region has closed and the table is offline</span>
+<span class="source-line-no">159</span><span id="line-159">      assertTrue(InterruptInterceptingHRegion.wasInterrupted(),</span>
+<span class="source-line-no">160</span><span id="line-160">        "Region operations were not interrupted");</span>
+<span class="source-line-no">161</span><span id="line-161">      assertTrue(expectedExceptionCaught.get(), "Scanner did not catch expected exception");</span>
+<span class="source-line-no">162</span><span id="line-162">    }</span>
+<span class="source-line-no">163</span><span id="line-163">  }</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165">  @Test</span>
+<span class="source-line-no">166</span><span id="line-166">  public void testCloseInterruptMutation(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">167</span><span id="line-167">    final TableName tableName = TableName.valueOf(testInfo.getTestMethod().get().getName());</span>
+<span class="source-line-no">168</span><span id="line-168">    final Admin admin = TEST_UTIL.getAdmin();</span>
+<span class="source-line-no">169</span><span id="line-169">    // Create the test table</span>
+<span class="source-line-no">170</span><span id="line-170">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)</span>
+<span class="source-line-no">171</span><span id="line-171">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY))</span>
+<span class="source-line-no">172</span><span id="line-172">      .setCoprocessor(MutationDelayingCoprocessor.class.getName()).build();</span>
+<span class="source-line-no">173</span><span id="line-173">    LOG.info("Creating table " + tableName);</span>
+<span class="source-line-no">174</span><span id="line-174">    admin.createTable(htd);</span>
+<span class="source-line-no">175</span><span id="line-175">    TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
+<span class="source-line-no">176</span><span id="line-176"></span>
+<span class="source-line-no">177</span><span id="line-177">    // Insert some data in the background</span>
+<span class="source-line-no">178</span><span id="line-178">    LOG.info("Starting writes to table " + tableName);</span>
+<span class="source-line-no">179</span><span id="line-179">    final int NUM_ROWS = 100;</span>
+<span class="source-line-no">180</span><span id="line-180">    final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
+<span class="source-line-no">181</span><span id="line-181">    Thread inserter = new Thread(new Runnable() {</span>
+<span class="source-line-no">182</span><span id="line-182">      @Override</span>
+<span class="source-line-no">183</span><span id="line-183">      public void run() {</span>
+<span class="source-line-no">184</span><span id="line-184">        try (BufferedMutator t = admin.getConnection().getBufferedMutator(tableName)) {</span>
+<span class="source-line-no">185</span><span id="line-185">          for (int i = 0; i &lt; NUM_ROWS; i++) {</span>
+<span class="source-line-no">186</span><span id="line-186">            LOG.info("Writing row " + i + " to " + tableName);</span>
+<span class="source-line-no">187</span><span id="line-187">            byte[] value = new byte[10], row = Bytes.toBytes(Integer.toString(i));</span>
+<span class="source-line-no">188</span><span id="line-188">            Bytes.random(value);</span>
+<span class="source-line-no">189</span><span id="line-189">            t.mutate(new Put(row).addColumn(FAMILY, HConstants.EMPTY_BYTE_ARRAY, value));</span>
+<span class="source-line-no">190</span><span id="line-190">            t.flush();</span>
+<span class="source-line-no">191</span><span id="line-191">          }</span>
+<span class="source-line-no">192</span><span id="line-192">        } catch (IOException e) {</span>
+<span class="source-line-no">193</span><span id="line-193">          LOG.info("Inserter caught exception", e);</span>
+<span class="source-line-no">194</span><span id="line-194">          expectedExceptionCaught.set(true);</span>
+<span class="source-line-no">195</span><span id="line-195">        }</span>
+<span class="source-line-no">196</span><span id="line-196">      }</span>
+<span class="source-line-no">197</span><span id="line-197">    });</span>
+<span class="source-line-no">198</span><span id="line-198">    inserter.start();</span>
+<span class="source-line-no">199</span><span id="line-199"></span>
+<span class="source-line-no">200</span><span id="line-200">    // Wait for delayed insertion to begin</span>
+<span class="source-line-no">201</span><span id="line-201">    LOG.info("Waiting for mutations to start");</span>
+<span class="source-line-no">202</span><span id="line-202">    Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">203</span><span id="line-203">      @Override</span>
+<span class="source-line-no">204</span><span id="line-204">      public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">205</span><span id="line-205">        return MutationDelayingCoprocessor.isSleeping();</span>
+<span class="source-line-no">206</span><span id="line-206">      }</span>
+<span class="source-line-no">207</span><span id="line-207">    });</span>
 <span class="source-line-no">208</span><span id="line-208"></span>
-<span class="source-line-no">209</span><span id="line-209">    // Wait for delayed insertion to begin</span>
-<span class="source-line-no">210</span><span id="line-210">    LOG.info("Waiting for mutations to start");</span>
-<span class="source-line-no">211</span><span id="line-211">    Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
-<span class="source-line-no">212</span><span id="line-212">      @Override</span>
-<span class="source-line-no">213</span><span id="line-213">      public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">214</span><span id="line-214">        return MutationDelayingCoprocessor.isSleeping();</span>
-<span class="source-line-no">215</span><span id="line-215">      }</span>
-<span class="source-line-no">216</span><span id="line-216">    });</span>
-<span class="source-line-no">217</span><span id="line-217"></span>
-<span class="source-line-no">218</span><span id="line-218">    // Offline the table, this will trigger closing</span>
-<span class="source-line-no">219</span><span id="line-219">    LOG.info("Offlining table " + tableName);</span>
-<span class="source-line-no">220</span><span id="line-220">    admin.disableTable(tableName);</span>
-<span class="source-line-no">221</span><span id="line-221"></span>
-<span class="source-line-no">222</span><span id="line-222">    // Wait for the inserter to finish</span>
-<span class="source-line-no">223</span><span id="line-223">    inserter.join();</span>
+<span class="source-line-no">209</span><span id="line-209">    // Offline the table, this will trigger closing</span>
+<span class="source-line-no">210</span><span id="line-210">    LOG.info("Offlining table " + tableName);</span>
+<span class="source-line-no">211</span><span id="line-211">    admin.disableTable(tableName);</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">    // Wait for the inserter to finish</span>
+<span class="source-line-no">214</span><span id="line-214">    inserter.join();</span>
+<span class="source-line-no">215</span><span id="line-215"></span>
+<span class="source-line-no">216</span><span id="line-216">    // When we get here the region has closed and the table is offline</span>
+<span class="source-line-no">217</span><span id="line-217">    assertTrue(InterruptInterceptingHRegion.wasInterrupted(),</span>
+<span class="source-line-no">218</span><span id="line-218">      "Region operations were not interrupted");</span>
+<span class="source-line-no">219</span><span id="line-219">    assertTrue(expectedExceptionCaught.get(), "Inserter did not catch expected exception");</span>
+<span class="source-line-no">220</span><span id="line-220"></span>
+<span class="source-line-no">221</span><span id="line-221">  }</span>
+<span class="source-line-no">222</span><span id="line-222"></span>
+<span class="source-line-no">223</span><span id="line-223">  public static class InterruptInterceptingHRegion extends HRegion {</span>
 <span class="source-line-no">224</span><span id="line-224"></span>
-<span class="source-line-no">225</span><span id="line-225">    // When we get here the region has closed and the table is offline</span>
-<span class="source-line-no">226</span><span id="line-226">    assertTrue("Region operations were not interrupted",</span>
-<span class="source-line-no">227</span><span id="line-227">      InterruptInterceptingHRegion.wasInterrupted());</span>
-<span class="source-line-no">228</span><span id="line-228">    assertTrue("Inserter did not catch expected exception", expectedExceptionCaught.get());</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230">  }</span>
-<span class="source-line-no">231</span><span id="line-231"></span>
-<span class="source-line-no">232</span><span id="line-232">  public static class InterruptInterceptingHRegion extends HRegion {</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234">    private static boolean interrupted = false;</span>
+<span class="source-line-no">225</span><span id="line-225">    private static boolean interrupted = false;</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227">    public static boolean wasInterrupted() {</span>
+<span class="source-line-no">228</span><span id="line-228">      return interrupted;</span>
+<span class="source-line-no">229</span><span id="line-229">    }</span>
+<span class="source-line-no">230</span><span id="line-230"></span>
+<span class="source-line-no">231</span><span id="line-231">    public InterruptInterceptingHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration conf,</span>
+<span class="source-line-no">232</span><span id="line-232">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">233</span><span id="line-233">      super(tableDir, wal, fs, conf, regionInfo, htd, rsServices);</span>
+<span class="source-line-no">234</span><span id="line-234">    }</span>
 <span class="source-line-no">235</span><span id="line-235"></span>
-<span class="source-line-no">236</span><span id="line-236">    public static boolean wasInterrupted() {</span>
-<span class="source-line-no">237</span><span id="line-237">      return interrupted;</span>
-<span class="source-line-no">238</span><span id="line-238">    }</span>
-<span class="source-line-no">239</span><span id="line-239"></span>
-<span class="source-line-no">240</span><span id="line-240">    public InterruptInterceptingHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration conf,</span>
-<span class="source-line-no">241</span><span id="line-241">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">242</span><span id="line-242">      super(tableDir, wal, fs, conf, regionInfo, htd, rsServices);</span>
-<span class="source-line-no">243</span><span id="line-243">    }</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245">    public InterruptInterceptingHRegion(HRegionFileSystem fs, WAL wal, Configuration conf,</span>
-<span class="source-line-no">246</span><span id="line-246">      TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">247</span><span id="line-247">      super(fs, wal, conf, htd, rsServices);</span>
-<span class="source-line-no">248</span><span id="line-248">    }</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250">    @Override</span>
-<span class="source-line-no">251</span><span id="line-251">    void checkInterrupt() throws NotServingRegionException, InterruptedIOException {</span>
-<span class="source-line-no">252</span><span id="line-252">      try {</span>
-<span class="source-line-no">253</span><span id="line-253">        super.checkInterrupt();</span>
-<span class="source-line-no">254</span><span id="line-254">      } catch (NotServingRegionException | InterruptedIOException e) {</span>
-<span class="source-line-no">255</span><span id="line-255">        interrupted = true;</span>
-<span class="source-line-no">256</span><span id="line-256">        throw e;</span>
-<span class="source-line-no">257</span><span id="line-257">      }</span>
-<span class="source-line-no">258</span><span id="line-258">    }</span>
-<span class="source-line-no">259</span><span id="line-259"></span>
-<span class="source-line-no">260</span><span id="line-260">    @Override</span>
-<span class="source-line-no">261</span><span id="line-261">    IOException throwOnInterrupt(Throwable t) {</span>
-<span class="source-line-no">262</span><span id="line-262">      interrupted = true;</span>
-<span class="source-line-no">263</span><span id="line-263">      return super.throwOnInterrupt(t);</span>
-<span class="source-line-no">264</span><span id="line-264">    }</span>
-<span class="source-line-no">265</span><span id="line-265"></span>
-<span class="source-line-no">266</span><span id="line-266">  }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268">  public static class DelayingFilter extends FilterBase {</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270">    static volatile boolean sleeping = false;</span>
-<span class="source-line-no">271</span><span id="line-271"></span>
-<span class="source-line-no">272</span><span id="line-272">    public static boolean isSleeping() {</span>
-<span class="source-line-no">273</span><span id="line-273">      return sleeping;</span>
-<span class="source-line-no">274</span><span id="line-274">    }</span>
-<span class="source-line-no">275</span><span id="line-275"></span>
-<span class="source-line-no">276</span><span id="line-276">    @Override</span>
-<span class="source-line-no">277</span><span id="line-277">    public ReturnCode filterCell(Cell v) throws IOException {</span>
-<span class="source-line-no">278</span><span id="line-278">      LOG.info("Starting sleep on " + v);</span>
-<span class="source-line-no">279</span><span id="line-279">      sleeping = true;</span>
-<span class="source-line-no">280</span><span id="line-280">      try {</span>
-<span class="source-line-no">281</span><span id="line-281">        Thread.sleep(sleepTime);</span>
-<span class="source-line-no">282</span><span id="line-282">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">283</span><span id="line-283">        // restore interrupt status so region scanner can handle it as expected</span>
-<span class="source-line-no">284</span><span id="line-284">        Thread.currentThread().interrupt();</span>
-<span class="source-line-no">285</span><span id="line-285">        LOG.info("Interrupted during sleep on " + v);</span>
-<span class="source-line-no">286</span><span id="line-286">      } finally {</span>
-<span class="source-line-no">287</span><span id="line-287">        LOG.info("Done sleep on " + v);</span>
-<span class="source-line-no">288</span><span id="line-288">        sleeping = false;</span>
-<span class="source-line-no">289</span><span id="line-289">      }</span>
-<span class="source-line-no">290</span><span id="line-290">      return ReturnCode.INCLUDE;</span>
-<span class="source-line-no">291</span><span id="line-291">    }</span>
+<span class="source-line-no">236</span><span id="line-236">    public InterruptInterceptingHRegion(HRegionFileSystem fs, WAL wal, Configuration conf,</span>
+<span class="source-line-no">237</span><span id="line-237">      TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">238</span><span id="line-238">      super(fs, wal, conf, htd, rsServices);</span>
+<span class="source-line-no">239</span><span id="line-239">    }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241">    @Override</span>
+<span class="source-line-no">242</span><span id="line-242">    void checkInterrupt() throws NotServingRegionException, InterruptedIOException {</span>
+<span class="source-line-no">243</span><span id="line-243">      try {</span>
+<span class="source-line-no">244</span><span id="line-244">        super.checkInterrupt();</span>
+<span class="source-line-no">245</span><span id="line-245">      } catch (NotServingRegionException | InterruptedIOException e) {</span>
+<span class="source-line-no">246</span><span id="line-246">        interrupted = true;</span>
+<span class="source-line-no">247</span><span id="line-247">        throw e;</span>
+<span class="source-line-no">248</span><span id="line-248">      }</span>
+<span class="source-line-no">249</span><span id="line-249">    }</span>
+<span class="source-line-no">250</span><span id="line-250"></span>
+<span class="source-line-no">251</span><span id="line-251">    @Override</span>
+<span class="source-line-no">252</span><span id="line-252">    IOException throwOnInterrupt(Throwable t) {</span>
+<span class="source-line-no">253</span><span id="line-253">      interrupted = true;</span>
+<span class="source-line-no">254</span><span id="line-254">      return super.throwOnInterrupt(t);</span>
+<span class="source-line-no">255</span><span id="line-255">    }</span>
+<span class="source-line-no">256</span><span id="line-256"></span>
+<span class="source-line-no">257</span><span id="line-257">  }</span>
+<span class="source-line-no">258</span><span id="line-258"></span>
+<span class="source-line-no">259</span><span id="line-259">  public static class DelayingFilter extends FilterBase {</span>
+<span class="source-line-no">260</span><span id="line-260"></span>
+<span class="source-line-no">261</span><span id="line-261">    static volatile boolean sleeping = false;</span>
+<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">263</span><span id="line-263">    public static boolean isSleeping() {</span>
+<span class="source-line-no">264</span><span id="line-264">      return sleeping;</span>
+<span class="source-line-no">265</span><span id="line-265">    }</span>
+<span class="source-line-no">266</span><span id="line-266"></span>
+<span class="source-line-no">267</span><span id="line-267">    @Override</span>
+<span class="source-line-no">268</span><span id="line-268">    public ReturnCode filterCell(Cell v) throws IOException {</span>
+<span class="source-line-no">269</span><span id="line-269">      LOG.info("Starting sleep on " + v);</span>
+<span class="source-line-no">270</span><span id="line-270">      sleeping = true;</span>
+<span class="source-line-no">271</span><span id="line-271">      try {</span>
+<span class="source-line-no">272</span><span id="line-272">        Thread.sleep(sleepTime);</span>
+<span class="source-line-no">273</span><span id="line-273">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">274</span><span id="line-274">        // restore interrupt status so region scanner can handle it as expected</span>
+<span class="source-line-no">275</span><span id="line-275">        Thread.currentThread().interrupt();</span>
+<span class="source-line-no">276</span><span id="line-276">        LOG.info("Interrupted during sleep on " + v);</span>
+<span class="source-line-no">277</span><span id="line-277">      } finally {</span>
+<span class="source-line-no">278</span><span id="line-278">        LOG.info("Done sleep on " + v);</span>
+<span class="source-line-no">279</span><span id="line-279">        sleeping = false;</span>
+<span class="source-line-no">280</span><span id="line-280">      }</span>
+<span class="source-line-no">281</span><span id="line-281">      return ReturnCode.INCLUDE;</span>
+<span class="source-line-no">282</span><span id="line-282">    }</span>
+<span class="source-line-no">283</span><span id="line-283"></span>
+<span class="source-line-no">284</span><span id="line-284">    public static DelayingFilter parseFrom(final byte[] pbBytes) throws DeserializationException {</span>
+<span class="source-line-no">285</span><span id="line-285">      // Just return a new instance.</span>
+<span class="source-line-no">286</span><span id="line-286">      return new DelayingFilter();</span>
+<span class="source-line-no">287</span><span id="line-287">    }</span>
+<span class="source-line-no">288</span><span id="line-288"></span>
+<span class="source-line-no">289</span><span id="line-289">  }</span>
+<span class="source-line-no">290</span><span id="line-290"></span>
+<span class="source-line-no">291</span><span id="line-291">  public static class MutationDelayingCoprocessor implements RegionCoprocessor, RegionObserver {</span>
 <span class="source-line-no">292</span><span id="line-292"></span>
-<span class="source-line-no">293</span><span id="line-293">    public static DelayingFilter parseFrom(final byte[] pbBytes) throws DeserializationException {</span>
-<span class="source-line-no">294</span><span id="line-294">      // Just return a new instance.</span>
-<span class="source-line-no">295</span><span id="line-295">      return new DelayingFilter();</span>
-<span class="source-line-no">296</span><span id="line-296">    }</span>
-<span class="source-line-no">297</span><span id="line-297"></span>
-<span class="source-line-no">298</span><span id="line-298">  }</span>
-<span class="source-line-no">299</span><span id="line-299"></span>
-<span class="source-line-no">300</span><span id="line-300">  public static class MutationDelayingCoprocessor implements RegionCoprocessor, RegionObserver {</span>
-<span class="source-line-no">301</span><span id="line-301"></span>
-<span class="source-line-no">302</span><span id="line-302">    static volatile boolean sleeping = false;</span>
-<span class="source-line-no">303</span><span id="line-303"></span>
-<span class="source-line-no">304</span><span id="line-304">    public static boolean isSleeping() {</span>
-<span class="source-line-no">305</span><span id="line-305">      return sleeping;</span>
-<span class="source-line-no">306</span><span id="line-306">    }</span>
-<span class="source-line-no">307</span><span id="line-307"></span>
-<span class="source-line-no">308</span><span id="line-308">    private void doSleep(Region.Operation op) {</span>
-<span class="source-line-no">309</span><span id="line-309">      LOG.info("Starting sleep for " + op);</span>
-<span class="source-line-no">310</span><span id="line-310">      sleeping = true;</span>
-<span class="source-line-no">311</span><span id="line-311">      try {</span>
-<span class="source-line-no">312</span><span id="line-312">        Thread.sleep(sleepTime);</span>
-<span class="source-line-no">313</span><span id="line-313">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">314</span><span id="line-314">        // restore interrupt status so doMiniBatchMutation etc. can handle it as expected</span>
-<span class="source-line-no">315</span><span id="line-315">        Thread.currentThread().interrupt();</span>
-<span class="source-line-no">316</span><span id="line-316">        LOG.info("Interrupted during " + op);</span>
-<span class="source-line-no">317</span><span id="line-317">      } finally {</span>
-<span class="source-line-no">318</span><span id="line-318">        LOG.info("Done");</span>
-<span class="source-line-no">319</span><span id="line-319">        sleeping = false;</span>
-<span class="source-line-no">320</span><span id="line-320">      }</span>
-<span class="source-line-no">321</span><span id="line-321">    }</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323">    @Override</span>
-<span class="source-line-no">324</span><span id="line-324">    public Optional&lt;RegionObserver&gt; getRegionObserver() {</span>
-<span class="source-line-no">325</span><span id="line-325">      return Optional.of(this);</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">    @Override</span>
-<span class="source-line-no">329</span><span id="line-329">    public void prePut(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Put put,</span>
-<span class="source-line-no">330</span><span id="line-330">      WALEdit edit, Durability durability) throws IOException {</span>
-<span class="source-line-no">331</span><span id="line-331">      doSleep(Region.Operation.PUT);</span>
-<span class="source-line-no">332</span><span id="line-332">      RegionObserver.super.prePut(c, put, edit, durability);</span>
-<span class="source-line-no">333</span><span id="line-333">    }</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335">    @Override</span>
-<span class="source-line-no">336</span><span id="line-336">    public void preDelete(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Delete delete,</span>
-<span class="source-line-no">337</span><span id="line-337">      WALEdit edit, Durability durability) throws IOException {</span>
-<span class="source-line-no">338</span><span id="line-338">      doSleep(Region.Operation.DELETE);</span>
-<span class="source-line-no">339</span><span id="line-339">      RegionObserver.super.preDelete(c, delete, edit, durability);</span>
-<span class="source-line-no">340</span><span id="line-340">    }</span>
-<span class="source-line-no">341</span><span id="line-341"></span>
-<span class="source-line-no">342</span><span id="line-342">    @Override</span>
-<span class="source-line-no">343</span><span id="line-343">    public Result preAppend(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
-<span class="source-line-no">344</span><span id="line-344">      Append append) throws IOException {</span>
-<span class="source-line-no">345</span><span id="line-345">      doSleep(Region.Operation.APPEND);</span>
-<span class="source-line-no">346</span><span id="line-346">      return RegionObserver.super.preAppend(c, append);</span>
-<span class="source-line-no">347</span><span id="line-347">    }</span>
+<span class="source-line-no">293</span><span id="line-293">    static volatile boolean sleeping = false;</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295">    public static boolean isSleeping() {</span>
+<span class="source-line-no">296</span><span id="line-296">      return sleeping;</span>
+<span class="source-line-no">297</span><span id="line-297">    }</span>
+<span class="source-line-no">298</span><span id="line-298"></span>
+<span class="source-line-no">299</span><span id="line-299">    private void doSleep(Region.Operation op) {</span>
+<span class="source-line-no">300</span><span id="line-300">      LOG.info("Starting sleep for " + op);</span>
+<span class="source-line-no">301</span><span id="line-301">      sleeping = true;</span>
+<span class="source-line-no">302</span><span id="line-302">      try {</span>
+<span class="source-line-no">303</span><span id="line-303">        Thread.sleep(sleepTime);</span>
+<span class="source-line-no">304</span><span id="line-304">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">305</span><span id="line-305">        // restore interrupt status so doMiniBatchMutation etc. can handle it as expected</span>
+<span class="source-line-no">306</span><span id="line-306">        Thread.currentThread().interrupt();</span>
+<span class="source-line-no">307</span><span id="line-307">        LOG.info("Interrupted during " + op);</span>
+<span class="source-line-no">308</span><span id="line-308">      } finally {</span>
+<span class="source-line-no">309</span><span id="line-309">        LOG.info("Done");</span>
+<span class="source-line-no">310</span><span id="line-310">        sleeping = false;</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"></span>
+<span class="source-line-no">314</span><span id="line-314">    @Override</span>
+<span class="source-line-no">315</span><span id="line-315">    public Optional&lt;RegionObserver&gt; getRegionObserver() {</span>
+<span class="source-line-no">316</span><span id="line-316">      return Optional.of(this);</span>
+<span class="source-line-no">317</span><span id="line-317">    }</span>
+<span class="source-line-no">318</span><span id="line-318"></span>
+<span class="source-line-no">319</span><span id="line-319">    @Override</span>
+<span class="source-line-no">320</span><span id="line-320">    public void prePut(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Put put,</span>
+<span class="source-line-no">321</span><span id="line-321">      WALEdit edit, Durability durability) throws IOException {</span>
+<span class="source-line-no">322</span><span id="line-322">      doSleep(Region.Operation.PUT);</span>
+<span class="source-line-no">323</span><span id="line-323">      RegionObserver.super.prePut(c, put, edit, durability);</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">    @Override</span>
+<span class="source-line-no">327</span><span id="line-327">    public void preDelete(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Delete delete,</span>
+<span class="source-line-no">328</span><span id="line-328">      WALEdit edit, Durability durability) throws IOException {</span>
+<span class="source-line-no">329</span><span id="line-329">      doSleep(Region.Operation.DELETE);</span>
+<span class="source-line-no">330</span><span id="line-330">      RegionObserver.super.preDelete(c, delete, edit, durability);</span>
+<span class="source-line-no">331</span><span id="line-331">    }</span>
+<span class="source-line-no">332</span><span id="line-332"></span>
+<span class="source-line-no">333</span><span id="line-333">    @Override</span>
+<span class="source-line-no">334</span><span id="line-334">    public Result preAppend(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
+<span class="source-line-no">335</span><span id="line-335">      Append append) throws IOException {</span>
+<span class="source-line-no">336</span><span id="line-336">      doSleep(Region.Operation.APPEND);</span>
+<span class="source-line-no">337</span><span id="line-337">      return RegionObserver.super.preAppend(c, append);</span>
+<span class="source-line-no">338</span><span id="line-338">    }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340">    @Override</span>
+<span class="source-line-no">341</span><span id="line-341">    public Result preIncrement(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
+<span class="source-line-no">342</span><span id="line-342">      Increment increment) throws IOException {</span>
+<span class="source-line-no">343</span><span id="line-343">      doSleep(Region.Operation.INCREMENT);</span>
+<span class="source-line-no">344</span><span id="line-344">      return RegionObserver.super.preIncrement(c, increment);</span>
+<span class="source-line-no">345</span><span id="line-345">    }</span>
+<span class="source-line-no">346</span><span id="line-346"></span>
+<span class="source-line-no">347</span><span id="line-347">  }</span>
 <span class="source-line-no">348</span><span id="line-348"></span>
-<span class="source-line-no">349</span><span id="line-349">    @Override</span>
-<span class="source-line-no">350</span><span id="line-350">    public Result preIncrement(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
-<span class="source-line-no">351</span><span id="line-351">      Increment increment) throws IOException {</span>
-<span class="source-line-no">352</span><span id="line-352">      doSleep(Region.Operation.INCREMENT);</span>
-<span class="source-line-no">353</span><span id="line-353">      return RegionObserver.super.preIncrement(c, increment);</span>
-<span class="source-line-no">354</span><span id="line-354">    }</span>
-<span class="source-line-no">355</span><span id="line-355"></span>
-<span class="source-line-no">356</span><span id="line-356">  }</span>
-<span class="source-line-no">357</span><span id="line-357"></span>
-<span class="source-line-no">358</span><span id="line-358">}</span>
+<span class="source-line-no">349</span><span id="line-349">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.InterruptInterceptingHRegion.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.InterruptInterceptingHRegion.html
index 0bc02918722..ecab79c1033 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.InterruptInterceptingHRegion.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.InterruptInterceptingHRegion.html
@@ -30,7 +30,7 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.io.InterruptedIOException;</span>
@@ -40,335 +40,326 @@
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.Path;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.Cell;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.NotServingRegionException;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.TableNameTestRule;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.Waiter;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Admin;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Append;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.BufferedMutator;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Delete;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Durability;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.Increment;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Result;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.ResultScanner;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.Scan;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.Table;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.coprocessor.ObserverContext;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.coprocessor.RegionObserver;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.filter.FilterBase;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
-<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.wal.WALEdit;</span>
-<span class="source-line-no">063</span><span id="line-63">import org.junit.After;</span>
-<span class="source-line-no">064</span><span id="line-64">import org.junit.Before;</span>
-<span class="source-line-no">065</span><span id="line-65">import org.junit.BeforeClass;</span>
-<span class="source-line-no">066</span><span id="line-66">import org.junit.ClassRule;</span>
-<span class="source-line-no">067</span><span id="line-67">import org.junit.Rule;</span>
-<span class="source-line-no">068</span><span id="line-68">import org.junit.Test;</span>
-<span class="source-line-no">069</span><span id="line-69">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">070</span><span id="line-70">import org.slf4j.Logger;</span>
-<span class="source-line-no">071</span><span id="line-71">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">072</span><span id="line-72"></span>
-<span class="source-line-no">073</span><span id="line-73">@Category({ RegionServerTests.class, LargeTests.class })</span>
-<span class="source-line-no">074</span><span id="line-74">public class TestRegionInterrupt {</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  @ClassRule</span>
-<span class="source-line-no">077</span><span id="line-77">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">078</span><span id="line-78">    HBaseClassTestRule.forClass(TestRegionInterrupt.class);</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">081</span><span id="line-81">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionInterrupt.class);</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  static final byte[] FAMILY = Bytes.toBytes("info");</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">  static long sleepTime;</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">  @Rule</span>
-<span class="source-line-no">088</span><span id="line-88">  public TableNameTestRule name = new TableNameTestRule();</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90">  @BeforeClass</span>
-<span class="source-line-no">091</span><span id="line-91">  public static void setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">092</span><span id="line-92">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">093</span><span id="line-93">    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);</span>
-<span class="source-line-no">094</span><span id="line-94">    conf.setClass(HConstants.REGION_IMPL, InterruptInterceptingHRegion.class, Region.class);</span>
-<span class="source-line-no">095</span><span id="line-95">    conf.setBoolean(HRegion.CLOSE_WAIT_ABORT, true);</span>
-<span class="source-line-no">096</span><span id="line-96">    // Ensure the sleep interval is long enough for interrupts to occur.</span>
-<span class="source-line-no">097</span><span id="line-97">    long waitInterval =</span>
-<span class="source-line-no">098</span><span id="line-98">      conf.getLong(HRegion.CLOSE_WAIT_INTERVAL, HRegion.DEFAULT_CLOSE_WAIT_INTERVAL);</span>
-<span class="source-line-no">099</span><span id="line-99">    sleepTime = waitInterval * 2;</span>
-<span class="source-line-no">100</span><span id="line-100">    // Try to bound the running time of this unit if expected actions do not take place.</span>
-<span class="source-line-no">101</span><span id="line-101">    conf.setLong(HRegion.CLOSE_WAIT_TIME, sleepTime * 2);</span>
-<span class="source-line-no">102</span><span id="line-102">  }</span>
-<span class="source-line-no">103</span><span id="line-103"></span>
-<span class="source-line-no">104</span><span id="line-104">  @Before</span>
-<span class="source-line-no">105</span><span id="line-105">  public void setUp() throws Exception {</span>
-<span class="source-line-no">106</span><span id="line-106">    TEST_UTIL.startMiniCluster();</span>
-<span class="source-line-no">107</span><span id="line-107">  }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">  @After</span>
-<span class="source-line-no">110</span><span id="line-110">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">111</span><span id="line-111">    TEST_UTIL.shutdownMiniCluster();</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">  @Test</span>
-<span class="source-line-no">115</span><span id="line-115">  public void testCloseInterruptScanning() throws Exception {</span>
-<span class="source-line-no">116</span><span id="line-116">    final TableName tableName = name.getTableName();</span>
-<span class="source-line-no">117</span><span id="line-117">    LOG.info("Creating table " + tableName);</span>
-<span class="source-line-no">118</span><span id="line-118">    try (Table table = TEST_UTIL.createTable(tableName, FAMILY)) {</span>
-<span class="source-line-no">119</span><span id="line-119">      // load some data</span>
-<span class="source-line-no">120</span><span id="line-120">      TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
-<span class="source-line-no">121</span><span id="line-121">      TEST_UTIL.loadTable(table, FAMILY);</span>
-<span class="source-line-no">122</span><span id="line-122">      final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
-<span class="source-line-no">123</span><span id="line-123">      // scan the table in the background</span>
-<span class="source-line-no">124</span><span id="line-124">      Thread scanner = new Thread(new Runnable() {</span>
-<span class="source-line-no">125</span><span id="line-125">        @Override</span>
-<span class="source-line-no">126</span><span id="line-126">        public void run() {</span>
-<span class="source-line-no">127</span><span id="line-127">          Scan scan = new Scan();</span>
-<span class="source-line-no">128</span><span id="line-128">          scan.addFamily(FAMILY);</span>
-<span class="source-line-no">129</span><span id="line-129">          scan.setFilter(new DelayingFilter());</span>
-<span class="source-line-no">130</span><span id="line-130">          try {</span>
-<span class="source-line-no">131</span><span id="line-131">            LOG.info("Starting scan");</span>
-<span class="source-line-no">132</span><span id="line-132">            try (ResultScanner rs = table.getScanner(scan)) {</span>
-<span class="source-line-no">133</span><span id="line-133">              Result r;</span>
-<span class="source-line-no">134</span><span id="line-134">              do {</span>
-<span class="source-line-no">135</span><span id="line-135">                r = rs.next();</span>
-<span class="source-line-no">136</span><span id="line-136">                if (r != null) {</span>
-<span class="source-line-no">137</span><span id="line-137">                  LOG.info("Scanned row " + Bytes.toStringBinary(r.getRow()));</span>
-<span class="source-line-no">138</span><span id="line-138">                }</span>
-<span class="source-line-no">139</span><span id="line-139">              } while (r != null);</span>
-<span class="source-line-no">140</span><span id="line-140">            }</span>
-<span class="source-line-no">141</span><span id="line-141">          } catch (IOException e) {</span>
-<span class="source-line-no">142</span><span id="line-142">            LOG.info("Scanner caught exception", e);</span>
-<span class="source-line-no">143</span><span id="line-143">            expectedExceptionCaught.set(true);</span>
-<span class="source-line-no">144</span><span id="line-144">          } finally {</span>
-<span class="source-line-no">145</span><span id="line-145">            LOG.info("Finished scan");</span>
-<span class="source-line-no">146</span><span id="line-146">          }</span>
-<span class="source-line-no">147</span><span id="line-147">        }</span>
-<span class="source-line-no">148</span><span id="line-148">      });</span>
-<span class="source-line-no">149</span><span id="line-149">      scanner.start();</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.NotServingRegionException;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.Waiter;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.Admin;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Append;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.BufferedMutator;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.Delete;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.Durability;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Increment;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Put;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.Result;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.ResultScanner;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Scan;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.Table;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.coprocessor.ObserverContext;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.coprocessor.RegionObserver;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.filter.FilterBase;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.wal.WALEdit;</span>
+<span class="source-line-no">061</span><span id="line-61">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">062</span><span id="line-62">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">063</span><span id="line-63">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">064</span><span id="line-64">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">065</span><span id="line-65">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">066</span><span id="line-66">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">067</span><span id="line-67">import org.slf4j.Logger;</span>
+<span class="source-line-no">068</span><span id="line-68">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">071</span><span id="line-71">@Tag(LargeTests.TAG)</span>
+<span class="source-line-no">072</span><span id="line-72">public class TestRegionInterrupt {</span>
+<span class="source-line-no">073</span><span id="line-73"></span>
+<span class="source-line-no">074</span><span id="line-74">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">075</span><span id="line-75">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionInterrupt.class);</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  static final byte[] FAMILY = Bytes.toBytes("info");</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">  static long sleepTime;</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">  @BeforeAll</span>
+<span class="source-line-no">082</span><span id="line-82">  public static void setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">083</span><span id="line-83">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">084</span><span id="line-84">    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);</span>
+<span class="source-line-no">085</span><span id="line-85">    conf.setClass(HConstants.REGION_IMPL, InterruptInterceptingHRegion.class, Region.class);</span>
+<span class="source-line-no">086</span><span id="line-86">    conf.setBoolean(HRegion.CLOSE_WAIT_ABORT, true);</span>
+<span class="source-line-no">087</span><span id="line-87">    // Ensure the sleep interval is long enough for interrupts to occur.</span>
+<span class="source-line-no">088</span><span id="line-88">    long waitInterval =</span>
+<span class="source-line-no">089</span><span id="line-89">      conf.getLong(HRegion.CLOSE_WAIT_INTERVAL, HRegion.DEFAULT_CLOSE_WAIT_INTERVAL);</span>
+<span class="source-line-no">090</span><span id="line-90">    sleepTime = waitInterval * 2;</span>
+<span class="source-line-no">091</span><span id="line-91">    // Try to bound the running time of this unit if expected actions do not take place.</span>
+<span class="source-line-no">092</span><span id="line-92">    conf.setLong(HRegion.CLOSE_WAIT_TIME, sleepTime * 2);</span>
+<span class="source-line-no">093</span><span id="line-93">  }</span>
+<span class="source-line-no">094</span><span id="line-94"></span>
+<span class="source-line-no">095</span><span id="line-95">  @BeforeEach</span>
+<span class="source-line-no">096</span><span id="line-96">  public void setUp() throws Exception {</span>
+<span class="source-line-no">097</span><span id="line-97">    TEST_UTIL.startMiniCluster();</span>
+<span class="source-line-no">098</span><span id="line-98">  }</span>
+<span class="source-line-no">099</span><span id="line-99"></span>
+<span class="source-line-no">100</span><span id="line-100">  @AfterEach</span>
+<span class="source-line-no">101</span><span id="line-101">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">102</span><span id="line-102">    TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">103</span><span id="line-103">  }</span>
+<span class="source-line-no">104</span><span id="line-104"></span>
+<span class="source-line-no">105</span><span id="line-105">  @Test</span>
+<span class="source-line-no">106</span><span id="line-106">  public void testCloseInterruptScanning(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">107</span><span id="line-107">    final TableName tableName = TableName.valueOf(testInfo.getTestMethod().get().getName());</span>
+<span class="source-line-no">108</span><span id="line-108">    LOG.info("Creating table " + tableName);</span>
+<span class="source-line-no">109</span><span id="line-109">    try (Table table = TEST_UTIL.createTable(tableName, FAMILY)) {</span>
+<span class="source-line-no">110</span><span id="line-110">      // load some data</span>
+<span class="source-line-no">111</span><span id="line-111">      TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
+<span class="source-line-no">112</span><span id="line-112">      TEST_UTIL.loadTable(table, FAMILY);</span>
+<span class="source-line-no">113</span><span id="line-113">      final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
+<span class="source-line-no">114</span><span id="line-114">      // scan the table in the background</span>
+<span class="source-line-no">115</span><span id="line-115">      Thread scanner = new Thread(new Runnable() {</span>
+<span class="source-line-no">116</span><span id="line-116">        @Override</span>
+<span class="source-line-no">117</span><span id="line-117">        public void run() {</span>
+<span class="source-line-no">118</span><span id="line-118">          Scan scan = new Scan();</span>
+<span class="source-line-no">119</span><span id="line-119">          scan.addFamily(FAMILY);</span>
+<span class="source-line-no">120</span><span id="line-120">          scan.setFilter(new DelayingFilter());</span>
+<span class="source-line-no">121</span><span id="line-121">          try {</span>
+<span class="source-line-no">122</span><span id="line-122">            LOG.info("Starting scan");</span>
+<span class="source-line-no">123</span><span id="line-123">            try (ResultScanner rs = table.getScanner(scan)) {</span>
+<span class="source-line-no">124</span><span id="line-124">              Result r;</span>
+<span class="source-line-no">125</span><span id="line-125">              do {</span>
+<span class="source-line-no">126</span><span id="line-126">                r = rs.next();</span>
+<span class="source-line-no">127</span><span id="line-127">                if (r != null) {</span>
+<span class="source-line-no">128</span><span id="line-128">                  LOG.info("Scanned row " + Bytes.toStringBinary(r.getRow()));</span>
+<span class="source-line-no">129</span><span id="line-129">                }</span>
+<span class="source-line-no">130</span><span id="line-130">              } while (r != null);</span>
+<span class="source-line-no">131</span><span id="line-131">            }</span>
+<span class="source-line-no">132</span><span id="line-132">          } catch (IOException e) {</span>
+<span class="source-line-no">133</span><span id="line-133">            LOG.info("Scanner caught exception", e);</span>
+<span class="source-line-no">134</span><span id="line-134">            expectedExceptionCaught.set(true);</span>
+<span class="source-line-no">135</span><span id="line-135">          } finally {</span>
+<span class="source-line-no">136</span><span id="line-136">            LOG.info("Finished scan");</span>
+<span class="source-line-no">137</span><span id="line-137">          }</span>
+<span class="source-line-no">138</span><span id="line-138">        }</span>
+<span class="source-line-no">139</span><span id="line-139">      });</span>
+<span class="source-line-no">140</span><span id="line-140">      scanner.start();</span>
+<span class="source-line-no">141</span><span id="line-141"></span>
+<span class="source-line-no">142</span><span id="line-142">      // Wait for the filter to begin sleeping</span>
+<span class="source-line-no">143</span><span id="line-143">      LOG.info("Waiting for scanner to start");</span>
+<span class="source-line-no">144</span><span id="line-144">      Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">145</span><span id="line-145">        @Override</span>
+<span class="source-line-no">146</span><span id="line-146">        public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">147</span><span id="line-147">          return DelayingFilter.isSleeping();</span>
+<span class="source-line-no">148</span><span id="line-148">        }</span>
+<span class="source-line-no">149</span><span id="line-149">      });</span>
 <span class="source-line-no">150</span><span id="line-150"></span>
-<span class="source-line-no">151</span><span id="line-151">      // Wait for the filter to begin sleeping</span>
-<span class="source-line-no">152</span><span id="line-152">      LOG.info("Waiting for scanner to start");</span>
-<span class="source-line-no">153</span><span id="line-153">      Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
-<span class="source-line-no">154</span><span id="line-154">        @Override</span>
-<span class="source-line-no">155</span><span id="line-155">        public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">156</span><span id="line-156">          return DelayingFilter.isSleeping();</span>
-<span class="source-line-no">157</span><span id="line-157">        }</span>
-<span class="source-line-no">158</span><span id="line-158">      });</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160">      // Offline the table, this will trigger closing</span>
-<span class="source-line-no">161</span><span id="line-161">      LOG.info("Offlining table " + tableName);</span>
-<span class="source-line-no">162</span><span id="line-162">      TEST_UTIL.getAdmin().disableTable(tableName);</span>
-<span class="source-line-no">163</span><span id="line-163"></span>
-<span class="source-line-no">164</span><span id="line-164">      // Wait for scanner termination</span>
-<span class="source-line-no">165</span><span id="line-165">      scanner.join();</span>
-<span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">      // When we get here the region has closed and the table is offline</span>
-<span class="source-line-no">168</span><span id="line-168">      assertTrue("Region operations were not interrupted",</span>
-<span class="source-line-no">169</span><span id="line-169">        InterruptInterceptingHRegion.wasInterrupted());</span>
-<span class="source-line-no">170</span><span id="line-170">      assertTrue("Scanner did not catch expected exception", expectedExceptionCaught.get());</span>
-<span class="source-line-no">171</span><span id="line-171">    }</span>
-<span class="source-line-no">172</span><span id="line-172">  }</span>
-<span class="source-line-no">173</span><span id="line-173"></span>
-<span class="source-line-no">174</span><span id="line-174">  @Test</span>
-<span class="source-line-no">175</span><span id="line-175">  public void testCloseInterruptMutation() throws Exception {</span>
-<span class="source-line-no">176</span><span id="line-176">    final TableName tableName = name.getTableName();</span>
-<span class="source-line-no">177</span><span id="line-177">    final Admin admin = TEST_UTIL.getAdmin();</span>
-<span class="source-line-no">178</span><span id="line-178">    // Create the test table</span>
-<span class="source-line-no">179</span><span id="line-179">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)</span>
-<span class="source-line-no">180</span><span id="line-180">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY))</span>
-<span class="source-line-no">181</span><span id="line-181">      .setCoprocessor(MutationDelayingCoprocessor.class.getName()).build();</span>
-<span class="source-line-no">182</span><span id="line-182">    LOG.info("Creating table " + tableName);</span>
-<span class="source-line-no">183</span><span id="line-183">    admin.createTable(htd);</span>
-<span class="source-line-no">184</span><span id="line-184">    TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
-<span class="source-line-no">185</span><span id="line-185"></span>
-<span class="source-line-no">186</span><span id="line-186">    // Insert some data in the background</span>
-<span class="source-line-no">187</span><span id="line-187">    LOG.info("Starting writes to table " + tableName);</span>
-<span class="source-line-no">188</span><span id="line-188">    final int NUM_ROWS = 100;</span>
-<span class="source-line-no">189</span><span id="line-189">    final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
-<span class="source-line-no">190</span><span id="line-190">    Thread inserter = new Thread(new Runnable() {</span>
-<span class="source-line-no">191</span><span id="line-191">      @Override</span>
-<span class="source-line-no">192</span><span id="line-192">      public void run() {</span>
-<span class="source-line-no">193</span><span id="line-193">        try (BufferedMutator t = admin.getConnection().getBufferedMutator(tableName)) {</span>
-<span class="source-line-no">194</span><span id="line-194">          for (int i = 0; i &lt; NUM_ROWS; i++) {</span>
-<span class="source-line-no">195</span><span id="line-195">            LOG.info("Writing row " + i + " to " + tableName);</span>
-<span class="source-line-no">196</span><span id="line-196">            byte[] value = new byte[10], row = Bytes.toBytes(Integer.toString(i));</span>
-<span class="source-line-no">197</span><span id="line-197">            Bytes.random(value);</span>
-<span class="source-line-no">198</span><span id="line-198">            t.mutate(new Put(row).addColumn(FAMILY, HConstants.EMPTY_BYTE_ARRAY, value));</span>
-<span class="source-line-no">199</span><span id="line-199">            t.flush();</span>
-<span class="source-line-no">200</span><span id="line-200">          }</span>
-<span class="source-line-no">201</span><span id="line-201">        } catch (IOException e) {</span>
-<span class="source-line-no">202</span><span id="line-202">          LOG.info("Inserter caught exception", e);</span>
-<span class="source-line-no">203</span><span id="line-203">          expectedExceptionCaught.set(true);</span>
-<span class="source-line-no">204</span><span id="line-204">        }</span>
-<span class="source-line-no">205</span><span id="line-205">      }</span>
-<span class="source-line-no">206</span><span id="line-206">    });</span>
-<span class="source-line-no">207</span><span id="line-207">    inserter.start();</span>
+<span class="source-line-no">151</span><span id="line-151">      // Offline the table, this will trigger closing</span>
+<span class="source-line-no">152</span><span id="line-152">      LOG.info("Offlining table " + tableName);</span>
+<span class="source-line-no">153</span><span id="line-153">      TEST_UTIL.getAdmin().disableTable(tableName);</span>
+<span class="source-line-no">154</span><span id="line-154"></span>
+<span class="source-line-no">155</span><span id="line-155">      // Wait for scanner termination</span>
+<span class="source-line-no">156</span><span id="line-156">      scanner.join();</span>
+<span class="source-line-no">157</span><span id="line-157"></span>
+<span class="source-line-no">158</span><span id="line-158">      // When we get here the region has closed and the table is offline</span>
+<span class="source-line-no">159</span><span id="line-159">      assertTrue(InterruptInterceptingHRegion.wasInterrupted(),</span>
+<span class="source-line-no">160</span><span id="line-160">        "Region operations were not interrupted");</span>
+<span class="source-line-no">161</span><span id="line-161">      assertTrue(expectedExceptionCaught.get(), "Scanner did not catch expected exception");</span>
+<span class="source-line-no">162</span><span id="line-162">    }</span>
+<span class="source-line-no">163</span><span id="line-163">  }</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165">  @Test</span>
+<span class="source-line-no">166</span><span id="line-166">  public void testCloseInterruptMutation(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">167</span><span id="line-167">    final TableName tableName = TableName.valueOf(testInfo.getTestMethod().get().getName());</span>
+<span class="source-line-no">168</span><span id="line-168">    final Admin admin = TEST_UTIL.getAdmin();</span>
+<span class="source-line-no">169</span><span id="line-169">    // Create the test table</span>
+<span class="source-line-no">170</span><span id="line-170">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)</span>
+<span class="source-line-no">171</span><span id="line-171">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY))</span>
+<span class="source-line-no">172</span><span id="line-172">      .setCoprocessor(MutationDelayingCoprocessor.class.getName()).build();</span>
+<span class="source-line-no">173</span><span id="line-173">    LOG.info("Creating table " + tableName);</span>
+<span class="source-line-no">174</span><span id="line-174">    admin.createTable(htd);</span>
+<span class="source-line-no">175</span><span id="line-175">    TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
+<span class="source-line-no">176</span><span id="line-176"></span>
+<span class="source-line-no">177</span><span id="line-177">    // Insert some data in the background</span>
+<span class="source-line-no">178</span><span id="line-178">    LOG.info("Starting writes to table " + tableName);</span>
+<span class="source-line-no">179</span><span id="line-179">    final int NUM_ROWS = 100;</span>
+<span class="source-line-no">180</span><span id="line-180">    final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
+<span class="source-line-no">181</span><span id="line-181">    Thread inserter = new Thread(new Runnable() {</span>
+<span class="source-line-no">182</span><span id="line-182">      @Override</span>
+<span class="source-line-no">183</span><span id="line-183">      public void run() {</span>
+<span class="source-line-no">184</span><span id="line-184">        try (BufferedMutator t = admin.getConnection().getBufferedMutator(tableName)) {</span>
+<span class="source-line-no">185</span><span id="line-185">          for (int i = 0; i &lt; NUM_ROWS; i++) {</span>
+<span class="source-line-no">186</span><span id="line-186">            LOG.info("Writing row " + i + " to " + tableName);</span>
+<span class="source-line-no">187</span><span id="line-187">            byte[] value = new byte[10], row = Bytes.toBytes(Integer.toString(i));</span>
+<span class="source-line-no">188</span><span id="line-188">            Bytes.random(value);</span>
+<span class="source-line-no">189</span><span id="line-189">            t.mutate(new Put(row).addColumn(FAMILY, HConstants.EMPTY_BYTE_ARRAY, value));</span>
+<span class="source-line-no">190</span><span id="line-190">            t.flush();</span>
+<span class="source-line-no">191</span><span id="line-191">          }</span>
+<span class="source-line-no">192</span><span id="line-192">        } catch (IOException e) {</span>
+<span class="source-line-no">193</span><span id="line-193">          LOG.info("Inserter caught exception", e);</span>
+<span class="source-line-no">194</span><span id="line-194">          expectedExceptionCaught.set(true);</span>
+<span class="source-line-no">195</span><span id="line-195">        }</span>
+<span class="source-line-no">196</span><span id="line-196">      }</span>
+<span class="source-line-no">197</span><span id="line-197">    });</span>
+<span class="source-line-no">198</span><span id="line-198">    inserter.start();</span>
+<span class="source-line-no">199</span><span id="line-199"></span>
+<span class="source-line-no">200</span><span id="line-200">    // Wait for delayed insertion to begin</span>
+<span class="source-line-no">201</span><span id="line-201">    LOG.info("Waiting for mutations to start");</span>
+<span class="source-line-no">202</span><span id="line-202">    Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">203</span><span id="line-203">      @Override</span>
+<span class="source-line-no">204</span><span id="line-204">      public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">205</span><span id="line-205">        return MutationDelayingCoprocessor.isSleeping();</span>
+<span class="source-line-no">206</span><span id="line-206">      }</span>
+<span class="source-line-no">207</span><span id="line-207">    });</span>
 <span class="source-line-no">208</span><span id="line-208"></span>
-<span class="source-line-no">209</span><span id="line-209">    // Wait for delayed insertion to begin</span>
-<span class="source-line-no">210</span><span id="line-210">    LOG.info("Waiting for mutations to start");</span>
-<span class="source-line-no">211</span><span id="line-211">    Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
-<span class="source-line-no">212</span><span id="line-212">      @Override</span>
-<span class="source-line-no">213</span><span id="line-213">      public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">214</span><span id="line-214">        return MutationDelayingCoprocessor.isSleeping();</span>
-<span class="source-line-no">215</span><span id="line-215">      }</span>
-<span class="source-line-no">216</span><span id="line-216">    });</span>
-<span class="source-line-no">217</span><span id="line-217"></span>
-<span class="source-line-no">218</span><span id="line-218">    // Offline the table, this will trigger closing</span>
-<span class="source-line-no">219</span><span id="line-219">    LOG.info("Offlining table " + tableName);</span>
-<span class="source-line-no">220</span><span id="line-220">    admin.disableTable(tableName);</span>
-<span class="source-line-no">221</span><span id="line-221"></span>
-<span class="source-line-no">222</span><span id="line-222">    // Wait for the inserter to finish</span>
-<span class="source-line-no">223</span><span id="line-223">    inserter.join();</span>
+<span class="source-line-no">209</span><span id="line-209">    // Offline the table, this will trigger closing</span>
+<span class="source-line-no">210</span><span id="line-210">    LOG.info("Offlining table " + tableName);</span>
+<span class="source-line-no">211</span><span id="line-211">    admin.disableTable(tableName);</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">    // Wait for the inserter to finish</span>
+<span class="source-line-no">214</span><span id="line-214">    inserter.join();</span>
+<span class="source-line-no">215</span><span id="line-215"></span>
+<span class="source-line-no">216</span><span id="line-216">    // When we get here the region has closed and the table is offline</span>
+<span class="source-line-no">217</span><span id="line-217">    assertTrue(InterruptInterceptingHRegion.wasInterrupted(),</span>
+<span class="source-line-no">218</span><span id="line-218">      "Region operations were not interrupted");</span>
+<span class="source-line-no">219</span><span id="line-219">    assertTrue(expectedExceptionCaught.get(), "Inserter did not catch expected exception");</span>
+<span class="source-line-no">220</span><span id="line-220"></span>
+<span class="source-line-no">221</span><span id="line-221">  }</span>
+<span class="source-line-no">222</span><span id="line-222"></span>
+<span class="source-line-no">223</span><span id="line-223">  public static class InterruptInterceptingHRegion extends HRegion {</span>
 <span class="source-line-no">224</span><span id="line-224"></span>
-<span class="source-line-no">225</span><span id="line-225">    // When we get here the region has closed and the table is offline</span>
-<span class="source-line-no">226</span><span id="line-226">    assertTrue("Region operations were not interrupted",</span>
-<span class="source-line-no">227</span><span id="line-227">      InterruptInterceptingHRegion.wasInterrupted());</span>
-<span class="source-line-no">228</span><span id="line-228">    assertTrue("Inserter did not catch expected exception", expectedExceptionCaught.get());</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230">  }</span>
-<span class="source-line-no">231</span><span id="line-231"></span>
-<span class="source-line-no">232</span><span id="line-232">  public static class InterruptInterceptingHRegion extends HRegion {</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234">    private static boolean interrupted = false;</span>
+<span class="source-line-no">225</span><span id="line-225">    private static boolean interrupted = false;</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227">    public static boolean wasInterrupted() {</span>
+<span class="source-line-no">228</span><span id="line-228">      return interrupted;</span>
+<span class="source-line-no">229</span><span id="line-229">    }</span>
+<span class="source-line-no">230</span><span id="line-230"></span>
+<span class="source-line-no">231</span><span id="line-231">    public InterruptInterceptingHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration conf,</span>
+<span class="source-line-no">232</span><span id="line-232">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">233</span><span id="line-233">      super(tableDir, wal, fs, conf, regionInfo, htd, rsServices);</span>
+<span class="source-line-no">234</span><span id="line-234">    }</span>
 <span class="source-line-no">235</span><span id="line-235"></span>
-<span class="source-line-no">236</span><span id="line-236">    public static boolean wasInterrupted() {</span>
-<span class="source-line-no">237</span><span id="line-237">      return interrupted;</span>
-<span class="source-line-no">238</span><span id="line-238">    }</span>
-<span class="source-line-no">239</span><span id="line-239"></span>
-<span class="source-line-no">240</span><span id="line-240">    public InterruptInterceptingHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration conf,</span>
-<span class="source-line-no">241</span><span id="line-241">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">242</span><span id="line-242">      super(tableDir, wal, fs, conf, regionInfo, htd, rsServices);</span>
-<span class="source-line-no">243</span><span id="line-243">    }</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245">    public InterruptInterceptingHRegion(HRegionFileSystem fs, WAL wal, Configuration conf,</span>
-<span class="source-line-no">246</span><span id="line-246">      TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">247</span><span id="line-247">      super(fs, wal, conf, htd, rsServices);</span>
-<span class="source-line-no">248</span><span id="line-248">    }</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250">    @Override</span>
-<span class="source-line-no">251</span><span id="line-251">    void checkInterrupt() throws NotServingRegionException, InterruptedIOException {</span>
-<span class="source-line-no">252</span><span id="line-252">      try {</span>
-<span class="source-line-no">253</span><span id="line-253">        super.checkInterrupt();</span>
-<span class="source-line-no">254</span><span id="line-254">      } catch (NotServingRegionException | InterruptedIOException e) {</span>
-<span class="source-line-no">255</span><span id="line-255">        interrupted = true;</span>
-<span class="source-line-no">256</span><span id="line-256">        throw e;</span>
-<span class="source-line-no">257</span><span id="line-257">      }</span>
-<span class="source-line-no">258</span><span id="line-258">    }</span>
-<span class="source-line-no">259</span><span id="line-259"></span>
-<span class="source-line-no">260</span><span id="line-260">    @Override</span>
-<span class="source-line-no">261</span><span id="line-261">    IOException throwOnInterrupt(Throwable t) {</span>
-<span class="source-line-no">262</span><span id="line-262">      interrupted = true;</span>
-<span class="source-line-no">263</span><span id="line-263">      return super.throwOnInterrupt(t);</span>
-<span class="source-line-no">264</span><span id="line-264">    }</span>
-<span class="source-line-no">265</span><span id="line-265"></span>
-<span class="source-line-no">266</span><span id="line-266">  }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268">  public static class DelayingFilter extends FilterBase {</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270">    static volatile boolean sleeping = false;</span>
-<span class="source-line-no">271</span><span id="line-271"></span>
-<span class="source-line-no">272</span><span id="line-272">    public static boolean isSleeping() {</span>
-<span class="source-line-no">273</span><span id="line-273">      return sleeping;</span>
-<span class="source-line-no">274</span><span id="line-274">    }</span>
-<span class="source-line-no">275</span><span id="line-275"></span>
-<span class="source-line-no">276</span><span id="line-276">    @Override</span>
-<span class="source-line-no">277</span><span id="line-277">    public ReturnCode filterCell(Cell v) throws IOException {</span>
-<span class="source-line-no">278</span><span id="line-278">      LOG.info("Starting sleep on " + v);</span>
-<span class="source-line-no">279</span><span id="line-279">      sleeping = true;</span>
-<span class="source-line-no">280</span><span id="line-280">      try {</span>
-<span class="source-line-no">281</span><span id="line-281">        Thread.sleep(sleepTime);</span>
-<span class="source-line-no">282</span><span id="line-282">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">283</span><span id="line-283">        // restore interrupt status so region scanner can handle it as expected</span>
-<span class="source-line-no">284</span><span id="line-284">        Thread.currentThread().interrupt();</span>
-<span class="source-line-no">285</span><span id="line-285">        LOG.info("Interrupted during sleep on " + v);</span>
-<span class="source-line-no">286</span><span id="line-286">      } finally {</span>
-<span class="source-line-no">287</span><span id="line-287">        LOG.info("Done sleep on " + v);</span>
-<span class="source-line-no">288</span><span id="line-288">        sleeping = false;</span>
-<span class="source-line-no">289</span><span id="line-289">      }</span>
-<span class="source-line-no">290</span><span id="line-290">      return ReturnCode.INCLUDE;</span>
-<span class="source-line-no">291</span><span id="line-291">    }</span>
+<span class="source-line-no">236</span><span id="line-236">    public InterruptInterceptingHRegion(HRegionFileSystem fs, WAL wal, Configuration conf,</span>
+<span class="source-line-no">237</span><span id="line-237">      TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">238</span><span id="line-238">      super(fs, wal, conf, htd, rsServices);</span>
+<span class="source-line-no">239</span><span id="line-239">    }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241">    @Override</span>
+<span class="source-line-no">242</span><span id="line-242">    void checkInterrupt() throws NotServingRegionException, InterruptedIOException {</span>
+<span class="source-line-no">243</span><span id="line-243">      try {</span>
+<span class="source-line-no">244</span><span id="line-244">        super.checkInterrupt();</span>
+<span class="source-line-no">245</span><span id="line-245">      } catch (NotServingRegionException | InterruptedIOException e) {</span>
+<span class="source-line-no">246</span><span id="line-246">        interrupted = true;</span>
+<span class="source-line-no">247</span><span id="line-247">        throw e;</span>
+<span class="source-line-no">248</span><span id="line-248">      }</span>
+<span class="source-line-no">249</span><span id="line-249">    }</span>
+<span class="source-line-no">250</span><span id="line-250"></span>
+<span class="source-line-no">251</span><span id="line-251">    @Override</span>
+<span class="source-line-no">252</span><span id="line-252">    IOException throwOnInterrupt(Throwable t) {</span>
+<span class="source-line-no">253</span><span id="line-253">      interrupted = true;</span>
+<span class="source-line-no">254</span><span id="line-254">      return super.throwOnInterrupt(t);</span>
+<span class="source-line-no">255</span><span id="line-255">    }</span>
+<span class="source-line-no">256</span><span id="line-256"></span>
+<span class="source-line-no">257</span><span id="line-257">  }</span>
+<span class="source-line-no">258</span><span id="line-258"></span>
+<span class="source-line-no">259</span><span id="line-259">  public static class DelayingFilter extends FilterBase {</span>
+<span class="source-line-no">260</span><span id="line-260"></span>
+<span class="source-line-no">261</span><span id="line-261">    static volatile boolean sleeping = false;</span>
+<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">263</span><span id="line-263">    public static boolean isSleeping() {</span>
+<span class="source-line-no">264</span><span id="line-264">      return sleeping;</span>
+<span class="source-line-no">265</span><span id="line-265">    }</span>
+<span class="source-line-no">266</span><span id="line-266"></span>
+<span class="source-line-no">267</span><span id="line-267">    @Override</span>
+<span class="source-line-no">268</span><span id="line-268">    public ReturnCode filterCell(Cell v) throws IOException {</span>
+<span class="source-line-no">269</span><span id="line-269">      LOG.info("Starting sleep on " + v);</span>
+<span class="source-line-no">270</span><span id="line-270">      sleeping = true;</span>
+<span class="source-line-no">271</span><span id="line-271">      try {</span>
+<span class="source-line-no">272</span><span id="line-272">        Thread.sleep(sleepTime);</span>
+<span class="source-line-no">273</span><span id="line-273">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">274</span><span id="line-274">        // restore interrupt status so region scanner can handle it as expected</span>
+<span class="source-line-no">275</span><span id="line-275">        Thread.currentThread().interrupt();</span>
+<span class="source-line-no">276</span><span id="line-276">        LOG.info("Interrupted during sleep on " + v);</span>
+<span class="source-line-no">277</span><span id="line-277">      } finally {</span>
+<span class="source-line-no">278</span><span id="line-278">        LOG.info("Done sleep on " + v);</span>
+<span class="source-line-no">279</span><span id="line-279">        sleeping = false;</span>
+<span class="source-line-no">280</span><span id="line-280">      }</span>
+<span class="source-line-no">281</span><span id="line-281">      return ReturnCode.INCLUDE;</span>
+<span class="source-line-no">282</span><span id="line-282">    }</span>
+<span class="source-line-no">283</span><span id="line-283"></span>
+<span class="source-line-no">284</span><span id="line-284">    public static DelayingFilter parseFrom(final byte[] pbBytes) throws DeserializationException {</span>
+<span class="source-line-no">285</span><span id="line-285">      // Just return a new instance.</span>
+<span class="source-line-no">286</span><span id="line-286">      return new DelayingFilter();</span>
+<span class="source-line-no">287</span><span id="line-287">    }</span>
+<span class="source-line-no">288</span><span id="line-288"></span>
+<span class="source-line-no">289</span><span id="line-289">  }</span>
+<span class="source-line-no">290</span><span id="line-290"></span>
+<span class="source-line-no">291</span><span id="line-291">  public static class MutationDelayingCoprocessor implements RegionCoprocessor, RegionObserver {</span>
 <span class="source-line-no">292</span><span id="line-292"></span>
-<span class="source-line-no">293</span><span id="line-293">    public static DelayingFilter parseFrom(final byte[] pbBytes) throws DeserializationException {</span>
-<span class="source-line-no">294</span><span id="line-294">      // Just return a new instance.</span>
-<span class="source-line-no">295</span><span id="line-295">      return new DelayingFilter();</span>
-<span class="source-line-no">296</span><span id="line-296">    }</span>
-<span class="source-line-no">297</span><span id="line-297"></span>
-<span class="source-line-no">298</span><span id="line-298">  }</span>
-<span class="source-line-no">299</span><span id="line-299"></span>
-<span class="source-line-no">300</span><span id="line-300">  public static class MutationDelayingCoprocessor implements RegionCoprocessor, RegionObserver {</span>
-<span class="source-line-no">301</span><span id="line-301"></span>
-<span class="source-line-no">302</span><span id="line-302">    static volatile boolean sleeping = false;</span>
-<span class="source-line-no">303</span><span id="line-303"></span>
-<span class="source-line-no">304</span><span id="line-304">    public static boolean isSleeping() {</span>
-<span class="source-line-no">305</span><span id="line-305">      return sleeping;</span>
-<span class="source-line-no">306</span><span id="line-306">    }</span>
-<span class="source-line-no">307</span><span id="line-307"></span>
-<span class="source-line-no">308</span><span id="line-308">    private void doSleep(Region.Operation op) {</span>
-<span class="source-line-no">309</span><span id="line-309">      LOG.info("Starting sleep for " + op);</span>
-<span class="source-line-no">310</span><span id="line-310">      sleeping = true;</span>
-<span class="source-line-no">311</span><span id="line-311">      try {</span>
-<span class="source-line-no">312</span><span id="line-312">        Thread.sleep(sleepTime);</span>
-<span class="source-line-no">313</span><span id="line-313">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">314</span><span id="line-314">        // restore interrupt status so doMiniBatchMutation etc. can handle it as expected</span>
-<span class="source-line-no">315</span><span id="line-315">        Thread.currentThread().interrupt();</span>
-<span class="source-line-no">316</span><span id="line-316">        LOG.info("Interrupted during " + op);</span>
-<span class="source-line-no">317</span><span id="line-317">      } finally {</span>
-<span class="source-line-no">318</span><span id="line-318">        LOG.info("Done");</span>
-<span class="source-line-no">319</span><span id="line-319">        sleeping = false;</span>
-<span class="source-line-no">320</span><span id="line-320">      }</span>
-<span class="source-line-no">321</span><span id="line-321">    }</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323">    @Override</span>
-<span class="source-line-no">324</span><span id="line-324">    public Optional&lt;RegionObserver&gt; getRegionObserver() {</span>
-<span class="source-line-no">325</span><span id="line-325">      return Optional.of(this);</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">    @Override</span>
-<span class="source-line-no">329</span><span id="line-329">    public void prePut(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Put put,</span>
-<span class="source-line-no">330</span><span id="line-330">      WALEdit edit, Durability durability) throws IOException {</span>
-<span class="source-line-no">331</span><span id="line-331">      doSleep(Region.Operation.PUT);</span>
-<span class="source-line-no">332</span><span id="line-332">      RegionObserver.super.prePut(c, put, edit, durability);</span>
-<span class="source-line-no">333</span><span id="line-333">    }</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335">    @Override</span>
-<span class="source-line-no">336</span><span id="line-336">    public void preDelete(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Delete delete,</span>
-<span class="source-line-no">337</span><span id="line-337">      WALEdit edit, Durability durability) throws IOException {</span>
-<span class="source-line-no">338</span><span id="line-338">      doSleep(Region.Operation.DELETE);</span>
-<span class="source-line-no">339</span><span id="line-339">      RegionObserver.super.preDelete(c, delete, edit, durability);</span>
-<span class="source-line-no">340</span><span id="line-340">    }</span>
-<span class="source-line-no">341</span><span id="line-341"></span>
-<span class="source-line-no">342</span><span id="line-342">    @Override</span>
-<span class="source-line-no">343</span><span id="line-343">    public Result preAppend(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
-<span class="source-line-no">344</span><span id="line-344">      Append append) throws IOException {</span>
-<span class="source-line-no">345</span><span id="line-345">      doSleep(Region.Operation.APPEND);</span>
-<span class="source-line-no">346</span><span id="line-346">      return RegionObserver.super.preAppend(c, append);</span>
-<span class="source-line-no">347</span><span id="line-347">    }</span>
+<span class="source-line-no">293</span><span id="line-293">    static volatile boolean sleeping = false;</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295">    public static boolean isSleeping() {</span>
+<span class="source-line-no">296</span><span id="line-296">      return sleeping;</span>
+<span class="source-line-no">297</span><span id="line-297">    }</span>
+<span class="source-line-no">298</span><span id="line-298"></span>
+<span class="source-line-no">299</span><span id="line-299">    private void doSleep(Region.Operation op) {</span>
+<span class="source-line-no">300</span><span id="line-300">      LOG.info("Starting sleep for " + op);</span>
+<span class="source-line-no">301</span><span id="line-301">      sleeping = true;</span>
+<span class="source-line-no">302</span><span id="line-302">      try {</span>
+<span class="source-line-no">303</span><span id="line-303">        Thread.sleep(sleepTime);</span>
+<span class="source-line-no">304</span><span id="line-304">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">305</span><span id="line-305">        // restore interrupt status so doMiniBatchMutation etc. can handle it as expected</span>
+<span class="source-line-no">306</span><span id="line-306">        Thread.currentThread().interrupt();</span>
+<span class="source-line-no">307</span><span id="line-307">        LOG.info("Interrupted during " + op);</span>
+<span class="source-line-no">308</span><span id="line-308">      } finally {</span>
+<span class="source-line-no">309</span><span id="line-309">        LOG.info("Done");</span>
+<span class="source-line-no">310</span><span id="line-310">        sleeping = false;</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"></span>
+<span class="source-line-no">314</span><span id="line-314">    @Override</span>
+<span class="source-line-no">315</span><span id="line-315">    public Optional&lt;RegionObserver&gt; getRegionObserver() {</span>
+<span class="source-line-no">316</span><span id="line-316">      return Optional.of(this);</span>
+<span class="source-line-no">317</span><span id="line-317">    }</span>
+<span class="source-line-no">318</span><span id="line-318"></span>
+<span class="source-line-no">319</span><span id="line-319">    @Override</span>
+<span class="source-line-no">320</span><span id="line-320">    public void prePut(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Put put,</span>
+<span class="source-line-no">321</span><span id="line-321">      WALEdit edit, Durability durability) throws IOException {</span>
+<span class="source-line-no">322</span><span id="line-322">      doSleep(Region.Operation.PUT);</span>
+<span class="source-line-no">323</span><span id="line-323">      RegionObserver.super.prePut(c, put, edit, durability);</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">    @Override</span>
+<span class="source-line-no">327</span><span id="line-327">    public void preDelete(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c, Delete delete,</span>
+<span class="source-line-no">328</span><span id="line-328">      WALEdit edit, Durability durability) throws IOException {</span>
+<span class="source-line-no">329</span><span id="line-329">      doSleep(Region.Operation.DELETE);</span>
+<span class="source-line-no">330</span><span id="line-330">      RegionObserver.super.preDelete(c, delete, edit, durability);</span>
+<span class="source-line-no">331</span><span id="line-331">    }</span>
+<span class="source-line-no">332</span><span id="line-332"></span>
+<span class="source-line-no">333</span><span id="line-333">    @Override</span>
+<span class="source-line-no">334</span><span id="line-334">    public Result preAppend(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
+<span class="source-line-no">335</span><span id="line-335">      Append append) throws IOException {</span>
+<span class="source-line-no">336</span><span id="line-336">      doSleep(Region.Operation.APPEND);</span>
+<span class="source-line-no">337</span><span id="line-337">      return RegionObserver.super.preAppend(c, append);</span>
+<span class="source-line-no">338</span><span id="line-338">    }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340">    @Override</span>
+<span class="source-line-no">341</span><span id="line-341">    public Result preIncrement(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
+<span class="source-line-no">342</span><span id="line-342">      Increment increment) throws IOException {</span>
+<span class="source-line-no">343</span><span id="line-343">      doSleep(Region.Operation.INCREMENT);</span>
+<span class="source-line-no">344</span><span id="line-344">      return RegionObserver.super.preIncrement(c, increment);</span>
+<span class="source-line-no">345</span><span id="line-345">    }</span>
+<span class="source-line-no">346</span><span id="line-346"></span>
+<span class="source-line-no">347</span><span id="line-347">  }</span>
 <span class="source-line-no">348</span><span id="line-348"></span>
-<span class="source-line-no">349</span><span id="line-349">    @Override</span>
-<span class="source-line-no">350</span><span id="line-350">    public Result preIncrement(ObserverContext&lt;? extends RegionCoprocessorEnvironment&gt; c,</span>
-<span class="source-line-no">351</span><span id="line-351">      Increment increment) throws IOException {</span>
-<span class="source-line-no">352</span><span id="line-352">      doSleep(Region.Operation.INCREMENT);</span>
-<span class="source-line-no">353</span><span id="line-353">      return RegionObserver.super.preIncrement(c, increment);</span>
-<span class="source-line-no">354</span><span id="line-354">    }</span>
-<span class="source-line-no">355</span><span id="line-355"></span>
-<span class="source-line-no">356</span><span id="line-356">  }</span>
-<span class="source-line-no">357</span><span id="line-357"></span>
-<span class="source-line-no">358</span><span id="line-358">}</span>
+<span class="source-line-no">349</span><span id="line-349">}</span>
 
 
 
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.MutationDelayingCoprocessor.html b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.MutationDelayingCoprocessor.html
index 0824cfeb1c1..aa3531be6ce 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.MutationDelayingCoprocessor.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.MutationDelayingCoprocessor.html
@@ -30,7 +30,7 @@
 <span class="source-line-no">017</span><span id="line-17"> */</span>
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</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.junit.Assert.assertTrue;</span>
+<span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
 <span class="source-line-no">021</span><span id="line-21"></span>
 <span class="source-line-no">022</span><span id="line-22">import java.io.IOException;</span>
 <span class="source-line-no">023</span><span id="line-23">import java.io.InterruptedIOException;</span>
@@ -40,335 +40,326 @@
 <span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.fs.FileSystem;</span>
 <span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.Path;</span>
 <span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.Cell;</span>
-<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseClassTestRule;</span>
-<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
-<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.NotServingRegionException;</span>
-<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.TableName;</span>
-<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.TableNameTestRule;</span>
-<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.Waiter;</span>
-<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Admin;</span>
-<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Append;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.BufferedMutator;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Delete;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Durability;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.Increment;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Result;</span>
-<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.ResultScanner;</span>
-<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.Scan;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.Table;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.coprocessor.ObserverContext;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.coprocessor.RegionObserver;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.filter.FilterBase;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
-<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
-<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.apache.hadoop.hbase.wal.WAL;</span>
-<span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.wal.WALEdit;</span>
-<span class="source-line-no">063</span><span id="line-63">import org.junit.After;</span>
-<span class="source-line-no">064</span><span id="line-64">import org.junit.Before;</span>
-<span class="source-line-no">065</span><span id="line-65">import org.junit.BeforeClass;</span>
-<span class="source-line-no">066</span><span id="line-66">import org.junit.ClassRule;</span>
-<span class="source-line-no">067</span><span id="line-67">import org.junit.Rule;</span>
-<span class="source-line-no">068</span><span id="line-68">import org.junit.Test;</span>
-<span class="source-line-no">069</span><span id="line-69">import org.junit.experimental.categories.Category;</span>
-<span class="source-line-no">070</span><span id="line-70">import org.slf4j.Logger;</span>
-<span class="source-line-no">071</span><span id="line-71">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">072</span><span id="line-72"></span>
-<span class="source-line-no">073</span><span id="line-73">@Category({ RegionServerTests.class, LargeTests.class })</span>
-<span class="source-line-no">074</span><span id="line-74">public class TestRegionInterrupt {</span>
-<span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">  @ClassRule</span>
-<span class="source-line-no">077</span><span id="line-77">  public static final HBaseClassTestRule CLASS_RULE =</span>
-<span class="source-line-no">078</span><span id="line-78">    HBaseClassTestRule.forClass(TestRegionInterrupt.class);</span>
-<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
-<span class="source-line-no">081</span><span id="line-81">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionInterrupt.class);</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  static final byte[] FAMILY = Bytes.toBytes("info");</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">  static long sleepTime;</span>
-<span class="source-line-no">086</span><span id="line-86"></span>
-<span class="source-line-no">087</span><span id="line-87">  @Rule</span>
-<span class="source-line-no">088</span><span id="line-88">  public TableNameTestRule name = new TableNameTestRule();</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90">  @BeforeClass</span>
-<span class="source-line-no">091</span><span id="line-91">  public static void setUpBeforeClass() throws Exception {</span>
-<span class="source-line-no">092</span><span id="line-92">    Configuration conf = TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">093</span><span id="line-93">    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);</span>
-<span class="source-line-no">094</span><span id="line-94">    conf.setClass(HConstants.REGION_IMPL, InterruptInterceptingHRegion.class, Region.class);</span>
-<span class="source-line-no">095</span><span id="line-95">    conf.setBoolean(HRegion.CLOSE_WAIT_ABORT, true);</span>
-<span class="source-line-no">096</span><span id="line-96">    // Ensure the sleep interval is long enough for interrupts to occur.</span>
-<span class="source-line-no">097</span><span id="line-97">    long waitInterval =</span>
-<span class="source-line-no">098</span><span id="line-98">      conf.getLong(HRegion.CLOSE_WAIT_INTERVAL, HRegion.DEFAULT_CLOSE_WAIT_INTERVAL);</span>
-<span class="source-line-no">099</span><span id="line-99">    sleepTime = waitInterval * 2;</span>
-<span class="source-line-no">100</span><span id="line-100">    // Try to bound the running time of this unit if expected actions do not take place.</span>
-<span class="source-line-no">101</span><span id="line-101">    conf.setLong(HRegion.CLOSE_WAIT_TIME, sleepTime * 2);</span>
-<span class="source-line-no">102</span><span id="line-102">  }</span>
-<span class="source-line-no">103</span><span id="line-103"></span>
-<span class="source-line-no">104</span><span id="line-104">  @Before</span>
-<span class="source-line-no">105</span><span id="line-105">  public void setUp() throws Exception {</span>
-<span class="source-line-no">106</span><span id="line-106">    TEST_UTIL.startMiniCluster();</span>
-<span class="source-line-no">107</span><span id="line-107">  }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">  @After</span>
-<span class="source-line-no">110</span><span id="line-110">  public void tearDown() throws Exception {</span>
-<span class="source-line-no">111</span><span id="line-111">    TEST_UTIL.shutdownMiniCluster();</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">  @Test</span>
-<span class="source-line-no">115</span><span id="line-115">  public void testCloseInterruptScanning() throws Exception {</span>
-<span class="source-line-no">116</span><span id="line-116">    final TableName tableName = name.getTableName();</span>
-<span class="source-line-no">117</span><span id="line-117">    LOG.info("Creating table " + tableName);</span>
-<span class="source-line-no">118</span><span id="line-118">    try (Table table = TEST_UTIL.createTable(tableName, FAMILY)) {</span>
-<span class="source-line-no">119</span><span id="line-119">      // load some data</span>
-<span class="source-line-no">120</span><span id="line-120">      TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
-<span class="source-line-no">121</span><span id="line-121">      TEST_UTIL.loadTable(table, FAMILY);</span>
-<span class="source-line-no">122</span><span id="line-122">      final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
-<span class="source-line-no">123</span><span id="line-123">      // scan the table in the background</span>
-<span class="source-line-no">124</span><span id="line-124">      Thread scanner = new Thread(new Runnable() {</span>
-<span class="source-line-no">125</span><span id="line-125">        @Override</span>
-<span class="source-line-no">126</span><span id="line-126">        public void run() {</span>
-<span class="source-line-no">127</span><span id="line-127">          Scan scan = new Scan();</span>
-<span class="source-line-no">128</span><span id="line-128">          scan.addFamily(FAMILY);</span>
-<span class="source-line-no">129</span><span id="line-129">          scan.setFilter(new DelayingFilter());</span>
-<span class="source-line-no">130</span><span id="line-130">          try {</span>
-<span class="source-line-no">131</span><span id="line-131">            LOG.info("Starting scan");</span>
-<span class="source-line-no">132</span><span id="line-132">            try (ResultScanner rs = table.getScanner(scan)) {</span>
-<span class="source-line-no">133</span><span id="line-133">              Result r;</span>
-<span class="source-line-no">134</span><span id="line-134">              do {</span>
-<span class="source-line-no">135</span><span id="line-135">                r = rs.next();</span>
-<span class="source-line-no">136</span><span id="line-136">                if (r != null) {</span>
-<span class="source-line-no">137</span><span id="line-137">                  LOG.info("Scanned row " + Bytes.toStringBinary(r.getRow()));</span>
-<span class="source-line-no">138</span><span id="line-138">                }</span>
-<span class="source-line-no">139</span><span id="line-139">              } while (r != null);</span>
-<span class="source-line-no">140</span><span id="line-140">            }</span>
-<span class="source-line-no">141</span><span id="line-141">          } catch (IOException e) {</span>
-<span class="source-line-no">142</span><span id="line-142">            LOG.info("Scanner caught exception", e);</span>
-<span class="source-line-no">143</span><span id="line-143">            expectedExceptionCaught.set(true);</span>
-<span class="source-line-no">144</span><span id="line-144">          } finally {</span>
-<span class="source-line-no">145</span><span id="line-145">            LOG.info("Finished scan");</span>
-<span class="source-line-no">146</span><span id="line-146">          }</span>
-<span class="source-line-no">147</span><span id="line-147">        }</span>
-<span class="source-line-no">148</span><span id="line-148">      });</span>
-<span class="source-line-no">149</span><span id="line-149">      scanner.start();</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.HBaseTestingUtil;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.NotServingRegionException;</span>
+<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.TableName;</span>
+<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.Waiter;</span>
+<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.Admin;</span>
+<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Append;</span>
+<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.BufferedMutator;</span>
+<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.client.Delete;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.client.Durability;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.client.Increment;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.Put;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.client.Result;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.client.ResultScanner;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.Scan;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.Table;</span>
+<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.client.TableDescriptorBuilder;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.coprocessor.ObserverContext;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.coprocessor.RegionObserver;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.exceptions.DeserializationException;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.filter.FilterBase;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.testclassification.LargeTests;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.testclassification.RegionServerTests;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.wal.WAL;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.wal.WALEdit;</span>
+<span class="source-line-no">061</span><span id="line-61">import org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">062</span><span id="line-62">import org.junit.jupiter.api.BeforeAll;</span>
+<span class="source-line-no">063</span><span id="line-63">import org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">064</span><span id="line-64">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">065</span><span id="line-65">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">066</span><span id="line-66">import org.junit.jupiter.api.TestInfo;</span>
+<span class="source-line-no">067</span><span id="line-67">import org.slf4j.Logger;</span>
+<span class="source-line-no">068</span><span id="line-68">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">@Tag(RegionServerTests.TAG)</span>
+<span class="source-line-no">071</span><span id="line-71">@Tag(LargeTests.TAG)</span>
+<span class="source-line-no">072</span><span id="line-72">public class TestRegionInterrupt {</span>
+<span class="source-line-no">073</span><span id="line-73"></span>
+<span class="source-line-no">074</span><span id="line-74">  private static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</span>
+<span class="source-line-no">075</span><span id="line-75">  private static final Logger LOG = LoggerFactory.getLogger(TestRegionInterrupt.class);</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">  static final byte[] FAMILY = Bytes.toBytes("info");</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">  static long sleepTime;</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">  @BeforeAll</span>
+<span class="source-line-no">082</span><span id="line-82">  public static void setUpBeforeClass() throws Exception {</span>
+<span class="source-line-no">083</span><span id="line-83">    Configuration conf = TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">084</span><span id="line-84">    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);</span>
+<span class="source-line-no">085</span><span id="line-85">    conf.setClass(HConstants.REGION_IMPL, InterruptInterceptingHRegion.class, Region.class);</span>
+<span class="source-line-no">086</span><span id="line-86">    conf.setBoolean(HRegion.CLOSE_WAIT_ABORT, true);</span>
+<span class="source-line-no">087</span><span id="line-87">    // Ensure the sleep interval is long enough for interrupts to occur.</span>
+<span class="source-line-no">088</span><span id="line-88">    long waitInterval =</span>
+<span class="source-line-no">089</span><span id="line-89">      conf.getLong(HRegion.CLOSE_WAIT_INTERVAL, HRegion.DEFAULT_CLOSE_WAIT_INTERVAL);</span>
+<span class="source-line-no">090</span><span id="line-90">    sleepTime = waitInterval * 2;</span>
+<span class="source-line-no">091</span><span id="line-91">    // Try to bound the running time of this unit if expected actions do not take place.</span>
+<span class="source-line-no">092</span><span id="line-92">    conf.setLong(HRegion.CLOSE_WAIT_TIME, sleepTime * 2);</span>
+<span class="source-line-no">093</span><span id="line-93">  }</span>
+<span class="source-line-no">094</span><span id="line-94"></span>
+<span class="source-line-no">095</span><span id="line-95">  @BeforeEach</span>
+<span class="source-line-no">096</span><span id="line-96">  public void setUp() throws Exception {</span>
+<span class="source-line-no">097</span><span id="line-97">    TEST_UTIL.startMiniCluster();</span>
+<span class="source-line-no">098</span><span id="line-98">  }</span>
+<span class="source-line-no">099</span><span id="line-99"></span>
+<span class="source-line-no">100</span><span id="line-100">  @AfterEach</span>
+<span class="source-line-no">101</span><span id="line-101">  public void tearDown() throws Exception {</span>
+<span class="source-line-no">102</span><span id="line-102">    TEST_UTIL.shutdownMiniCluster();</span>
+<span class="source-line-no">103</span><span id="line-103">  }</span>
+<span class="source-line-no">104</span><span id="line-104"></span>
+<span class="source-line-no">105</span><span id="line-105">  @Test</span>
+<span class="source-line-no">106</span><span id="line-106">  public void testCloseInterruptScanning(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">107</span><span id="line-107">    final TableName tableName = TableName.valueOf(testInfo.getTestMethod().get().getName());</span>
+<span class="source-line-no">108</span><span id="line-108">    LOG.info("Creating table " + tableName);</span>
+<span class="source-line-no">109</span><span id="line-109">    try (Table table = TEST_UTIL.createTable(tableName, FAMILY)) {</span>
+<span class="source-line-no">110</span><span id="line-110">      // load some data</span>
+<span class="source-line-no">111</span><span id="line-111">      TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
+<span class="source-line-no">112</span><span id="line-112">      TEST_UTIL.loadTable(table, FAMILY);</span>
+<span class="source-line-no">113</span><span id="line-113">      final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
+<span class="source-line-no">114</span><span id="line-114">      // scan the table in the background</span>
+<span class="source-line-no">115</span><span id="line-115">      Thread scanner = new Thread(new Runnable() {</span>
+<span class="source-line-no">116</span><span id="line-116">        @Override</span>
+<span class="source-line-no">117</span><span id="line-117">        public void run() {</span>
+<span class="source-line-no">118</span><span id="line-118">          Scan scan = new Scan();</span>
+<span class="source-line-no">119</span><span id="line-119">          scan.addFamily(FAMILY);</span>
+<span class="source-line-no">120</span><span id="line-120">          scan.setFilter(new DelayingFilter());</span>
+<span class="source-line-no">121</span><span id="line-121">          try {</span>
+<span class="source-line-no">122</span><span id="line-122">            LOG.info("Starting scan");</span>
+<span class="source-line-no">123</span><span id="line-123">            try (ResultScanner rs = table.getScanner(scan)) {</span>
+<span class="source-line-no">124</span><span id="line-124">              Result r;</span>
+<span class="source-line-no">125</span><span id="line-125">              do {</span>
+<span class="source-line-no">126</span><span id="line-126">                r = rs.next();</span>
+<span class="source-line-no">127</span><span id="line-127">                if (r != null) {</span>
+<span class="source-line-no">128</span><span id="line-128">                  LOG.info("Scanned row " + Bytes.toStringBinary(r.getRow()));</span>
+<span class="source-line-no">129</span><span id="line-129">                }</span>
+<span class="source-line-no">130</span><span id="line-130">              } while (r != null);</span>
+<span class="source-line-no">131</span><span id="line-131">            }</span>
+<span class="source-line-no">132</span><span id="line-132">          } catch (IOException e) {</span>
+<span class="source-line-no">133</span><span id="line-133">            LOG.info("Scanner caught exception", e);</span>
+<span class="source-line-no">134</span><span id="line-134">            expectedExceptionCaught.set(true);</span>
+<span class="source-line-no">135</span><span id="line-135">          } finally {</span>
+<span class="source-line-no">136</span><span id="line-136">            LOG.info("Finished scan");</span>
+<span class="source-line-no">137</span><span id="line-137">          }</span>
+<span class="source-line-no">138</span><span id="line-138">        }</span>
+<span class="source-line-no">139</span><span id="line-139">      });</span>
+<span class="source-line-no">140</span><span id="line-140">      scanner.start();</span>
+<span class="source-line-no">141</span><span id="line-141"></span>
+<span class="source-line-no">142</span><span id="line-142">      // Wait for the filter to begin sleeping</span>
+<span class="source-line-no">143</span><span id="line-143">      LOG.info("Waiting for scanner to start");</span>
+<span class="source-line-no">144</span><span id="line-144">      Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">145</span><span id="line-145">        @Override</span>
+<span class="source-line-no">146</span><span id="line-146">        public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">147</span><span id="line-147">          return DelayingFilter.isSleeping();</span>
+<span class="source-line-no">148</span><span id="line-148">        }</span>
+<span class="source-line-no">149</span><span id="line-149">      });</span>
 <span class="source-line-no">150</span><span id="line-150"></span>
-<span class="source-line-no">151</span><span id="line-151">      // Wait for the filter to begin sleeping</span>
-<span class="source-line-no">152</span><span id="line-152">      LOG.info("Waiting for scanner to start");</span>
-<span class="source-line-no">153</span><span id="line-153">      Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
-<span class="source-line-no">154</span><span id="line-154">        @Override</span>
-<span class="source-line-no">155</span><span id="line-155">        public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">156</span><span id="line-156">          return DelayingFilter.isSleeping();</span>
-<span class="source-line-no">157</span><span id="line-157">        }</span>
-<span class="source-line-no">158</span><span id="line-158">      });</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160">      // Offline the table, this will trigger closing</span>
-<span class="source-line-no">161</span><span id="line-161">      LOG.info("Offlining table " + tableName);</span>
-<span class="source-line-no">162</span><span id="line-162">      TEST_UTIL.getAdmin().disableTable(tableName);</span>
-<span class="source-line-no">163</span><span id="line-163"></span>
-<span class="source-line-no">164</span><span id="line-164">      // Wait for scanner termination</span>
-<span class="source-line-no">165</span><span id="line-165">      scanner.join();</span>
-<span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167">      // When we get here the region has closed and the table is offline</span>
-<span class="source-line-no">168</span><span id="line-168">      assertTrue("Region operations were not interrupted",</span>
-<span class="source-line-no">169</span><span id="line-169">        InterruptInterceptingHRegion.wasInterrupted());</span>
-<span class="source-line-no">170</span><span id="line-170">      assertTrue("Scanner did not catch expected exception", expectedExceptionCaught.get());</span>
-<span class="source-line-no">171</span><span id="line-171">    }</span>
-<span class="source-line-no">172</span><span id="line-172">  }</span>
-<span class="source-line-no">173</span><span id="line-173"></span>
-<span class="source-line-no">174</span><span id="line-174">  @Test</span>
-<span class="source-line-no">175</span><span id="line-175">  public void testCloseInterruptMutation() throws Exception {</span>
-<span class="source-line-no">176</span><span id="line-176">    final TableName tableName = name.getTableName();</span>
-<span class="source-line-no">177</span><span id="line-177">    final Admin admin = TEST_UTIL.getAdmin();</span>
-<span class="source-line-no">178</span><span id="line-178">    // Create the test table</span>
-<span class="source-line-no">179</span><span id="line-179">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)</span>
-<span class="source-line-no">180</span><span id="line-180">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY))</span>
-<span class="source-line-no">181</span><span id="line-181">      .setCoprocessor(MutationDelayingCoprocessor.class.getName()).build();</span>
-<span class="source-line-no">182</span><span id="line-182">    LOG.info("Creating table " + tableName);</span>
-<span class="source-line-no">183</span><span id="line-183">    admin.createTable(htd);</span>
-<span class="source-line-no">184</span><span id="line-184">    TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
-<span class="source-line-no">185</span><span id="line-185"></span>
-<span class="source-line-no">186</span><span id="line-186">    // Insert some data in the background</span>
-<span class="source-line-no">187</span><span id="line-187">    LOG.info("Starting writes to table " + tableName);</span>
-<span class="source-line-no">188</span><span id="line-188">    final int NUM_ROWS = 100;</span>
-<span class="source-line-no">189</span><span id="line-189">    final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
-<span class="source-line-no">190</span><span id="line-190">    Thread inserter = new Thread(new Runnable() {</span>
-<span class="source-line-no">191</span><span id="line-191">      @Override</span>
-<span class="source-line-no">192</span><span id="line-192">      public void run() {</span>
-<span class="source-line-no">193</span><span id="line-193">        try (BufferedMutator t = admin.getConnection().getBufferedMutator(tableName)) {</span>
-<span class="source-line-no">194</span><span id="line-194">          for (int i = 0; i &lt; NUM_ROWS; i++) {</span>
-<span class="source-line-no">195</span><span id="line-195">            LOG.info("Writing row " + i + " to " + tableName);</span>
-<span class="source-line-no">196</span><span id="line-196">            byte[] value = new byte[10], row = Bytes.toBytes(Integer.toString(i));</span>
-<span class="source-line-no">197</span><span id="line-197">            Bytes.random(value);</span>
-<span class="source-line-no">198</span><span id="line-198">            t.mutate(new Put(row).addColumn(FAMILY, HConstants.EMPTY_BYTE_ARRAY, value));</span>
-<span class="source-line-no">199</span><span id="line-199">            t.flush();</span>
-<span class="source-line-no">200</span><span id="line-200">          }</span>
-<span class="source-line-no">201</span><span id="line-201">        } catch (IOException e) {</span>
-<span class="source-line-no">202</span><span id="line-202">          LOG.info("Inserter caught exception", e);</span>
-<span class="source-line-no">203</span><span id="line-203">          expectedExceptionCaught.set(true);</span>
-<span class="source-line-no">204</span><span id="line-204">        }</span>
-<span class="source-line-no">205</span><span id="line-205">      }</span>
-<span class="source-line-no">206</span><span id="line-206">    });</span>
-<span class="source-line-no">207</span><span id="line-207">    inserter.start();</span>
+<span class="source-line-no">151</span><span id="line-151">      // Offline the table, this will trigger closing</span>
+<span class="source-line-no">152</span><span id="line-152">      LOG.info("Offlining table " + tableName);</span>
+<span class="source-line-no">153</span><span id="line-153">      TEST_UTIL.getAdmin().disableTable(tableName);</span>
+<span class="source-line-no">154</span><span id="line-154"></span>
+<span class="source-line-no">155</span><span id="line-155">      // Wait for scanner termination</span>
+<span class="source-line-no">156</span><span id="line-156">      scanner.join();</span>
+<span class="source-line-no">157</span><span id="line-157"></span>
+<span class="source-line-no">158</span><span id="line-158">      // When we get here the region has closed and the table is offline</span>
+<span class="source-line-no">159</span><span id="line-159">      assertTrue(InterruptInterceptingHRegion.wasInterrupted(),</span>
+<span class="source-line-no">160</span><span id="line-160">        "Region operations were not interrupted");</span>
+<span class="source-line-no">161</span><span id="line-161">      assertTrue(expectedExceptionCaught.get(), "Scanner did not catch expected exception");</span>
+<span class="source-line-no">162</span><span id="line-162">    }</span>
+<span class="source-line-no">163</span><span id="line-163">  }</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165">  @Test</span>
+<span class="source-line-no">166</span><span id="line-166">  public void testCloseInterruptMutation(TestInfo testInfo) throws Exception {</span>
+<span class="source-line-no">167</span><span id="line-167">    final TableName tableName = TableName.valueOf(testInfo.getTestMethod().get().getName());</span>
+<span class="source-line-no">168</span><span id="line-168">    final Admin admin = TEST_UTIL.getAdmin();</span>
+<span class="source-line-no">169</span><span id="line-169">    // Create the test table</span>
+<span class="source-line-no">170</span><span id="line-170">    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)</span>
+<span class="source-line-no">171</span><span id="line-171">      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY))</span>
+<span class="source-line-no">172</span><span id="line-172">      .setCoprocessor(MutationDelayingCoprocessor.class.getName()).build();</span>
+<span class="source-line-no">173</span><span id="line-173">    LOG.info("Creating table " + tableName);</span>
+<span class="source-line-no">174</span><span id="line-174">    admin.createTable(htd);</span>
+<span class="source-line-no">175</span><span id="line-175">    TEST_UTIL.waitUntilAllRegionsAssigned(tableName);</span>
+<span class="source-line-no">176</span><span id="line-176"></span>
+<span class="source-line-no">177</span><span id="line-177">    // Insert some data in the background</span>
+<span class="source-line-no">178</span><span id="line-178">    LOG.info("Starting writes to table " + tableName);</span>
+<span class="source-line-no">179</span><span id="line-179">    final int NUM_ROWS = 100;</span>
+<span class="source-line-no">180</span><span id="line-180">    final AtomicBoolean expectedExceptionCaught = new AtomicBoolean(false);</span>
+<span class="source-line-no">181</span><span id="line-181">    Thread inserter = new Thread(new Runnable() {</span>
+<span class="source-line-no">182</span><span id="line-182">      @Override</span>
+<span class="source-line-no">183</span><span id="line-183">      public void run() {</span>
+<span class="source-line-no">184</span><span id="line-184">        try (BufferedMutator t = admin.getConnection().getBufferedMutator(tableName)) {</span>
+<span class="source-line-no">185</span><span id="line-185">          for (int i = 0; i &lt; NUM_ROWS; i++) {</span>
+<span class="source-line-no">186</span><span id="line-186">            LOG.info("Writing row " + i + " to " + tableName);</span>
+<span class="source-line-no">187</span><span id="line-187">            byte[] value = new byte[10], row = Bytes.toBytes(Integer.toString(i));</span>
+<span class="source-line-no">188</span><span id="line-188">            Bytes.random(value);</span>
+<span class="source-line-no">189</span><span id="line-189">            t.mutate(new Put(row).addColumn(FAMILY, HConstants.EMPTY_BYTE_ARRAY, value));</span>
+<span class="source-line-no">190</span><span id="line-190">            t.flush();</span>
+<span class="source-line-no">191</span><span id="line-191">          }</span>
+<span class="source-line-no">192</span><span id="line-192">        } catch (IOException e) {</span>
+<span class="source-line-no">193</span><span id="line-193">          LOG.info("Inserter caught exception", e);</span>
+<span class="source-line-no">194</span><span id="line-194">          expectedExceptionCaught.set(true);</span>
+<span class="source-line-no">195</span><span id="line-195">        }</span>
+<span class="source-line-no">196</span><span id="line-196">      }</span>
+<span class="source-line-no">197</span><span id="line-197">    });</span>
+<span class="source-line-no">198</span><span id="line-198">    inserter.start();</span>
+<span class="source-line-no">199</span><span id="line-199"></span>
+<span class="source-line-no">200</span><span id="line-200">    // Wait for delayed insertion to begin</span>
+<span class="source-line-no">201</span><span id="line-201">    LOG.info("Waiting for mutations to start");</span>
+<span class="source-line-no">202</span><span id="line-202">    Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
+<span class="source-line-no">203</span><span id="line-203">      @Override</span>
+<span class="source-line-no">204</span><span id="line-204">      public boolean evaluate() throws Exception {</span>
+<span class="source-line-no">205</span><span id="line-205">        return MutationDelayingCoprocessor.isSleeping();</span>
+<span class="source-line-no">206</span><span id="line-206">      }</span>
+<span class="source-line-no">207</span><span id="line-207">    });</span>
 <span class="source-line-no">208</span><span id="line-208"></span>
-<span class="source-line-no">209</span><span id="line-209">    // Wait for delayed insertion to begin</span>
-<span class="source-line-no">210</span><span id="line-210">    LOG.info("Waiting for mutations to start");</span>
-<span class="source-line-no">211</span><span id="line-211">    Waiter.waitFor(TEST_UTIL.getConfiguration(), 10 * 1000, new Waiter.Predicate&lt;Exception&gt;() {</span>
-<span class="source-line-no">212</span><span id="line-212">      @Override</span>
-<span class="source-line-no">213</span><span id="line-213">      public boolean evaluate() throws Exception {</span>
-<span class="source-line-no">214</span><span id="line-214">        return MutationDelayingCoprocessor.isSleeping();</span>
-<span class="source-line-no">215</span><span id="line-215">      }</span>
-<span class="source-line-no">216</span><span id="line-216">    });</span>
-<span class="source-line-no">217</span><span id="line-217"></span>
-<span class="source-line-no">218</span><span id="line-218">    // Offline the table, this will trigger closing</span>
-<span class="source-line-no">219</span><span id="line-219">    LOG.info("Offlining table " + tableName);</span>
-<span class="source-line-no">220</span><span id="line-220">    admin.disableTable(tableName);</span>
-<span class="source-line-no">221</span><span id="line-221"></span>
-<span class="source-line-no">222</span><span id="line-222">    // Wait for the inserter to finish</span>
-<span class="source-line-no">223</span><span id="line-223">    inserter.join();</span>
+<span class="source-line-no">209</span><span id="line-209">    // Offline the table, this will trigger closing</span>
+<span class="source-line-no">210</span><span id="line-210">    LOG.info("Offlining table " + tableName);</span>
+<span class="source-line-no">211</span><span id="line-211">    admin.disableTable(tableName);</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">    // Wait for the inserter to finish</span>
+<span class="source-line-no">214</span><span id="line-214">    inserter.join();</span>
+<span class="source-line-no">215</span><span id="line-215"></span>
+<span class="source-line-no">216</span><span id="line-216">    // When we get here the region has closed and the table is offline</span>
+<span class="source-line-no">217</span><span id="line-217">    assertTrue(InterruptInterceptingHRegion.wasInterrupted(),</span>
+<span class="source-line-no">218</span><span id="line-218">      "Region operations were not interrupted");</span>
+<span class="source-line-no">219</span><span id="line-219">    assertTrue(expectedExceptionCaught.get(), "Inserter did not catch expected exception");</span>
+<span class="source-line-no">220</span><span id="line-220"></span>
+<span class="source-line-no">221</span><span id="line-221">  }</span>
+<span class="source-line-no">222</span><span id="line-222"></span>
+<span class="source-line-no">223</span><span id="line-223">  public static class InterruptInterceptingHRegion extends HRegion {</span>
 <span class="source-line-no">224</span><span id="line-224"></span>
-<span class="source-line-no">225</span><span id="line-225">    // When we get here the region has closed and the table is offline</span>
-<span class="source-line-no">226</span><span id="line-226">    assertTrue("Region operations were not interrupted",</span>
-<span class="source-line-no">227</span><span id="line-227">      InterruptInterceptingHRegion.wasInterrupted());</span>
-<span class="source-line-no">228</span><span id="line-228">    assertTrue("Inserter did not catch expected exception", expectedExceptionCaught.get());</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230">  }</span>
-<span class="source-line-no">231</span><span id="line-231"></span>
-<span class="source-line-no">232</span><span id="line-232">  public static class InterruptInterceptingHRegion extends HRegion {</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234">    private static boolean interrupted = false;</span>
+<span class="source-line-no">225</span><span id="line-225">    private static boolean interrupted = false;</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227">    public static boolean wasInterrupted() {</span>
+<span class="source-line-no">228</span><span id="line-228">      return interrupted;</span>
+<span class="source-line-no">229</span><span id="line-229">    }</span>
+<span class="source-line-no">230</span><span id="line-230"></span>
+<span class="source-line-no">231</span><span id="line-231">    public InterruptInterceptingHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration conf,</span>
+<span class="source-line-no">232</span><span id="line-232">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">233</span><span id="line-233">      super(tableDir, wal, fs, conf, regionInfo, htd, rsServices);</span>
+<span class="source-line-no">234</span><span id="line-234">    }</span>
 <span class="source-line-no">235</span><span id="line-235"></span>
-<span class="source-line-no">236</span><span id="line-236">    public static boolean wasInterrupted() {</span>
-<span class="source-line-no">237</span><span id="line-237">      return interrupted;</span>
-<span class="source-line-no">238</span><span id="line-238">    }</span>
-<span class="source-line-no">239</span><span id="line-239"></span>
-<span class="source-line-no">240</span><span id="line-240">    public InterruptInterceptingHRegion(Path tableDir, WAL wal, FileSystem fs, Configuration conf,</span>
-<span class="source-line-no">241</span><span id="line-241">      RegionInfo regionInfo, TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">242</span><span id="line-242">      super(tableDir, wal, fs, conf, regionInfo, htd, rsServices);</span>
-<span class="source-line-no">243</span><span id="line-243">    }</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245">    public InterruptInterceptingHRegion(HRegionFileSystem fs, WAL wal, Configuration conf,</span>
-<span class="source-line-no">246</span><span id="line-246">      TableDescriptor htd, RegionServerServices rsServices) {</span>
-<span class="source-line-no">247</span><span id="line-247">      super(fs, wal, conf, htd, rsServices);</span>
-<span class="source-line-no">248</span><span id="line-248">    }</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250">    @Override</span>
-<span class="source-line-no">251</span><span id="line-251">    void checkInterrupt() throws NotServingRegionException, InterruptedIOException {</span>
-<span class="source-line-no">252</span><span id="line-252">      try {</span>
-<span class="source-line-no">253</span><span id="line-253">        super.checkInterrupt();</span>
-<span class="source-line-no">254</span><span id="line-254">      } catch (NotServingRegionException | InterruptedIOException e) {</span>
-<span class="source-line-no">255</span><span id="line-255">        interrupted = true;</span>
-<span class="source-line-no">256</span><span id="line-256">        throw e;</span>
-<span class="source-line-no">257</span><span id="line-257">      }</span>
-<span class="source-line-no">258</span><span id="line-258">    }</span>
-<span class="source-line-no">259</span><span id="line-259"></span>
-<span class="source-line-no">260</span><span id="line-260">    @Override</span>
-<span class="source-line-no">261</span><span id="line-261">    IOException throwOnInterrupt(Throwable t) {</span>
-<span class="source-line-no">262</span><span id="line-262">      interrupted = true;</span>
-<span class="source-line-no">263</span><span id="line-263">      return super.throwOnInterrupt(t);</span>
-<span class="source-line-no">264</span><span id="line-264">    }</span>
-<span class="source-line-no">265</span><span id="line-265"></span>
-<span class="source-line-no">266</span><span id="line-266">  }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268">  public static class DelayingFilter extends FilterBase {</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270">    static volatile boolean sleeping = false;</span>
-<span class="source-line-no">271</span><span id="line-271"></span>
-<span class="source-line-no">272</span><span id="line-272">    public static boolean isSleeping() {</span>
-<span class="source-line-no">273</span><span id="line-273">      return sleeping;</span>
-<span class="source-line-no">274</span><span id="line-274">    }</span>
-<span class="source-line-no">275</span><span id="line-275"></span>
-<span class="source-line-no">276</span><span id="line-276">    @Override</span>
-<span class="source-line-no">277</span><span id="line-277">    public ReturnCode filterCell(Cell v) throws IOException {</span>
-<span class="source-line-no">278</span><span id="line-278">      LOG.info("Starting sleep on " + v);</span>
-<span class="source-line-no">279</span><span id="line-279">      sleeping = true;</span>
-<span class="source-line-no">280</span><span id="line-280">      try {</span>
-<span class="source-line-no">281</span><span id="line-281">        Thread.sleep(sleepTime);</span>
-<span class="source-line-no">282</span><span id="line-282">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">283</span><span id="line-283">        // restore interrupt status so region scanner can handle it as expected</span>
-<span class="source-line-no">284</span><span id="line-284">        Thread.currentThread().interrupt();</span>
-<span class="source-line-no">285</span><span id="line-285">        LOG.info("Interrupted during sleep on " + v);</span>
-<span class="source-line-no">286</span><span id="line-286">      } finally {</span>
-<span class="source-line-no">287</span><span id="line-287">        LOG.info("Done sleep on " + v);</span>
-<span class="source-line-no">288</span><span id="line-288">        sleeping = false;</span>
-<span class="source-line-no">289</span><span id="line-289">      }</span>
-<span class="source-line-no">290</span><span id="line-290">      return ReturnCode.INCLUDE;</span>
-<span class="source-line-no">291</span><span id="line-291">    }</span>
+<span class="source-line-no">236</span><span id="line-236">    public InterruptInterceptingHRegion(HRegionFileSystem fs, WAL wal, Configuration conf,</span>
+<span class="source-line-no">237</span><span id="line-237">      TableDescriptor htd, RegionServerServices rsServices) {</span>
+<span class="source-line-no">238</span><span id="line-238">      super(fs, wal, conf, htd, rsServices);</span>
+<span class="source-line-no">239</span><span id="line-239">    }</span>
... 72136 lines suppressed ...