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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -2315,108 +2315,6 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
<dt>parent() - Method in class org.apache.hadoop.hbase.test.MetricsAssertHelperImpl.MockRecordBuilder</dt>
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -34070,7 +33940,7 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt>testMoveRegion() - Method in class org.apache.hadoop.hbase.mttr.IntegrationTestMTTR</dt>
<dd> </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> </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> </dd>
@@ -34641,14 +34511,6 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -37382,7 +37244,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -38449,7 +38311,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -38787,7 +38649,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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 </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"> </div>
+<div class="col-first odd-row-color"><code>class </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 </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"> </div>
<div class="col-first even-row-color"><code>class </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"> </div>
<div class="col-first odd-row-color"><code>class </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 </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 </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"> </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 </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"> </div>
+<div class="col-first odd-row-color"><code>class </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"> </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"> </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"> </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"> </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"> </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"> </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 < 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<Runnable> workQueue = (BlockingQueue<Runnable>) 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 < 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<Runnable> workQueue = (BlockingQueue<Runnable>) 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) && FAILED_OPEN.get() > 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) && FAILED_OPEN.get() > 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<byte[], List<HStoreFile>> 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<byte[], List<HStoreFile>> 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) && FAILED_OPEN.get() > 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) && FAILED_OPEN.get() > 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<byte[], List<HStoreFile>> 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<byte[], List<HStoreFile>> 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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 <= 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 <= 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 <= 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 <= 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 <= 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 <= 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 < smallestSeqCF2);</span>
-<span class="source-line-no">175</span><span id="line-175"> assertTrue(smallestSeqCF2 < smallestSeqCF3);</span>
-<span class="source-line-no">176</span><span id="line-176"> assertTrue(cf1MemstoreSize.getDataSize() > 0);</span>
-<span class="source-line-no">177</span><span id="line-177"> assertTrue(cf2MemstoreSize.getDataSize() > 0);</span>
-<span class="source-line-no">178</span><span id="line-178"> assertTrue(cf3MemstoreSize.getDataSize() > 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 < smallestSeqCF2);</span>
+<span class="source-line-no">170</span><span id="line-170"> assertTrue(smallestSeqCF2 < smallestSeqCF3);</span>
+<span class="source-line-no">171</span><span id="line-171"> assertTrue(cf1MemstoreSize.getDataSize() > 0);</span>
+<span class="source-line-no">172</span><span id="line-172"> assertTrue(cf2MemstoreSize.getDataSize() > 0);</span>
+<span class="source-line-no">173</span><span id="line-173"> assertTrue(cf3MemstoreSize.getDataSize() > 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 < 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 < 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 <= 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 <= 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 <= 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 <= 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 < 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 < 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 <= 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 <= 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 <= 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 <= 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() > 0);</span>
+<span class="source-line-no">298</span><span id="line-298"> assertTrue(cf2MemstoreSize.getDataSize() > 0);</span>
+<span class="source-line-no">299</span><span id="line-299"> assertTrue(cf3MemstoreSize.getDataSize() > 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() > 0);</span>
-<span class="source-line-no">303</span><span id="line-303"> assertTrue(cf2MemstoreSize.getDataSize() > 0);</span>
-<span class="source-line-no">304</span><span id="line-304"> assertTrue(cf3MemstoreSize.getDataSize() > 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<HRegion, HRegionServer> 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<JVMClusterUtil.RegionServerThread> rsts = cluster.getRegionServerThreads();</span>
-<span class="source-line-no">337</span><span id="line-337"> for (int i = 0; i < 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 <= 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 <= 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<HRegion, HRegionServer> 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<HRegion, HRegionServer> 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<JVMClusterUtil.RegionServerThread> rsts = cluster.getRegionServerThreads();</span>
+<span class="source-line-no">332</span><span id="line-332"> for (int i = 0; i < 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 <= 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 <= 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<HRegion, HRegionServer> 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 >= 0);</span>
-<span class="source-line-no">393</span><span id="line-393"> assertTrue(cf3MemstoreSize >= 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 <= 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 <= 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<HRegion, HRegionServer> 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 <= 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 < maxLogs; i++) {</span>
-<span class="source-line-no">476</span><span id="line-476"> for (int j = 0; j < 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"> () -> getNumRolledLogFiles(desiredRegion) > 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() > 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() < 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() < 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<Exception>() {</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 >= 0);</span>
+<span class="source-line-no">388</span><span id="line-388"> assertTrue(cf3MemstoreSize >= 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 <= 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 <= 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<HRegion, HRegionServer> 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 <= 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 < maxLogs; i++) {</span>
+<span class="source-line-no">471</span><span id="line-471"> for (int j = 0; j < 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"> () -> getNumRolledLogFiles(desiredRegion) > 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() > 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() < 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() < 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<Exception>() {</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 > 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, () -> getNumRolledLogFiles(desiredRegion) < 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 < 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() > 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 > 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, () -> getNumRolledLogFiles(desiredRegion) < 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 < 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() > 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) + "=>" + cf1StoreFileCount + ", "</span>
-<span class="source-line-no">619</span><span id="line-619"> + Bytes.toString(FAMILY2) + "=>" + cf2StoreFileCount + ", " + Bytes.toString(FAMILY3) + "=>"</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) + "=>" + cf1StoreFileCount1 + ", "</span>
-<span class="source-line-no">622</span><span id="line-622"> + Bytes.toString(FAMILY2) + "=>" + cf2StoreFileCount1 + ", " + Bytes.toString(FAMILY3) + "=>"</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 < cf1StoreFileCount);</span>
-<span class="source-line-no">626</span><span id="line-626"> assertTrue(cf2StoreFileCount1 < 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 >= 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 < 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) + "=>" + cf1StoreFileCount + ", "</span>
+<span class="source-line-no">614</span><span id="line-614"> + Bytes.toString(FAMILY2) + "=>" + cf2StoreFileCount + ", " + Bytes.toString(FAMILY3) + "=>"</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) + "=>" + cf1StoreFileCount1 + ", "</span>
+<span class="source-line-no">617</span><span id="line-617"> + Bytes.toString(FAMILY2) + "=>" + cf2StoreFileCount1 + ", " + Bytes.toString(FAMILY3) + "=>"</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 < cf1StoreFileCount);</span>
+<span class="source-line-no">621</span><span id="line-621"> assertTrue(cf2StoreFileCount1 < 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 >= 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 < 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<E extends ScheduledChore> {</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<CompactedHFilesDischarger> compactedHFilesDischargerTestChoreField =</span>
-<span class="source-line-no">080</span><span id="line-80"> new TestChoreField<>();</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<ScheduledChore> compactionCheckerTestChoreField = new TestChoreField<>();</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<ScheduledChore> periodicMemstoreFlusherTestChoreField = new TestChoreField<>();</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<ScheduledChore> nonceManagerTestChoreField = new TestChoreField<>();</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<ExecutorStatusChore> executorStatusChoreTestChoreField = new TestChoreField<>();</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<E extends ScheduledChore> {</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<CompactedHFilesDischarger> compactedHFilesDischargerTestChoreField =</span>
+<span class="source-line-no">077</span><span id="line-77"> new TestChoreField<>();</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<ScheduledChore> compactionCheckerTestChoreField = new TestChoreField<>();</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<ScheduledChore> periodicMemstoreFlusherTestChoreField = new TestChoreField<>();</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<ScheduledChore> nonceManagerTestChoreField = new TestChoreField<>();</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<ExecutorStatusChore> executorStatusChoreTestChoreField = new TestChoreField<>();</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<ServerName> killedRS = new AtomicReference<ServerName>();</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 < 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<ServerName> killedRS = new AtomicReference<ServerName>();</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 < 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<ServerName> 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() < 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<ServerName> 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() < 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() >= 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<RegionInfo, ServerName> 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() < 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<RegionInfo, ServerName> 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() > (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() >= 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<RegionInfo, ServerName> 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() < 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<RegionInfo, ServerName> 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() > (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<String> 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<String> 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 -> {</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 -> !r.getStore(cf).getStorefiles().isEmpty()).findFirst().get();</span>
-<span class="source-line-no">106</span><span id="line-106"> Path filePath = new ArrayList<>(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 -> {</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 -> !r.getStore(cf).getStorefiles().isEmpty()).findFirst().get();</span>
+<span class="source-line-no">103</span><span id="line-103"> Path filePath = new ArrayList<>(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"> () -> 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 && 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 && 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<String> 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() >= 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() > 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 > 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<Cell> walCells = new ArrayList<>();</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<String> 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() >= 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() > 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 > 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<Cell> walCells = new ArrayList<>();</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 && 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 && 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<Cell> regionCells = new ArrayList<>();</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<Cell> 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<>();</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 < walCells.size() && j < 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<Cell> regionCells = new ArrayList<>();</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<Cell> 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<>();</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 < walCells.size() && j < 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 > 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 > 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 <= 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 < 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 < 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 <= 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 < 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 < 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<DataNode> 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<DataNode> 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 < 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 < 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 < 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 < 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<HRegion> 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<</span>
-<span class="source-line-no">121</span><span id="line-121"> org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> favoredNodes =</span>
-<span class="source-line-no">122</span><span id="line-122"> new ArrayList<>(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 < 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 < 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 < 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<HRegion> 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<String> 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 < 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 < 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<HRegion> 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<</span>
+<span class="source-line-no">116</span><span id="line-116"> org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> favoredNodes =</span>
+<span class="source-line-no">117</span><span id="line-117"> new ArrayList<>(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 < 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 < 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 < 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<HRegion> 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<String> 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 < 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"> * <p></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 < 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 <code>count</code> 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 < 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 < 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"> * <p></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 < 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 <code>count</code> 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 < 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 < 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 < 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 < 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 < 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 < 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 < 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<Cell> cells = new ArrayList<>(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 < 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 < 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 < 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<Cell> cells = new ArrayList<>(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<Cell> cells = new ArrayList<>(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 < 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 < 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 < 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<Cell> cells = new ArrayList<>(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 && 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) > 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) < 0);</span>
-<span class="source-line-no">310</span><span id="line-310"> assertTrue(newer.compareTo(older) > 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) < 0);</span>
-<span class="source-line-no">322</span><span id="line-322"> assertTrue(b.compareTo(a) > 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) < 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) < 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) < 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 && 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) > 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) < 0);</span>
+<span class="source-line-no">296</span><span id="line-296"> assertTrue(newer.compareTo(older) > 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) < 0);</span>
+<span class="source-line-no">308</span><span id="line-308"> assertTrue(b.compareTo(a) > 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) < 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) < 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) < 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 < 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 < 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<Exception>() {</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<Exception>() {</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 < 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 < 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<Exception>() {</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<Exception>() {</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<RegionObserver> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<RegionObserver> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<Exception>() {</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<Exception>() {</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 < 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 < 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<Exception>() {</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<Exception>() {</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<RegionObserver> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<RegionObserver> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<? extends RegionCoprocessorEnvironment> 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<Exception>() {</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<Exception>() {</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 < 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 < 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<Exception>() {</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<Exception>() {</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 ...