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 2021/07/22 16:28:28 UTC
[hbase-site] branch asf-site updated: Published site at
be2c97e20340a5e3ca2efae00b00282ff0c25f17.
This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 9189f29 Published site at be2c97e20340a5e3ca2efae00b00282ff0c25f17.
9189f29 is described below
commit 9189f29d4576e3061bae66c5f5f2bb04fa1fe6ae
Author: jenkins <bu...@apache.org>
AuthorDate: Thu Jul 22 16:28:12 2021 +0000
Published site at be2c97e20340a5e3ca2efae00b00282ff0c25f17.
---
acid-semantics.html | 2 +-
apache_hbase_reference_guide.pdf | 4 +-
apidocs/allclasses-frame.html | 2 -
apidocs/allclasses-noframe.html | 2 -
apidocs/index-all.html | 94 +-
apidocs/org/apache/hadoop/hbase/AuthUtil.html | 6 +-
.../org/apache/hadoop/hbase/CellComparator.html | 68 +-
apidocs/org/apache/hadoop/hbase/CellUtil.html | 4 +-
apidocs/org/apache/hadoop/hbase/ChoreService.html | 407 -------
.../hadoop/hbase/ClockOutOfSyncException.html | 4 +-
.../hadoop/hbase/RetryImmediatelyException.html | 4 +-
.../org/apache/hadoop/hbase/ScheduledChore.html | 621 ----------
apidocs/org/apache/hadoop/hbase/ServerMetrics.html | 4 +-
.../hadoop/hbase/class-use/ChoreService.html | 125 --
.../hadoop/hbase/class-use/ScheduledChore.html | 194 ---
.../apache/hadoop/hbase/class-use/Stoppable.html | 68 +-
apidocs/org/apache/hadoop/hbase/package-frame.html | 2 -
.../org/apache/hadoop/hbase/package-summary.html | 33 +-
apidocs/org/apache/hadoop/hbase/package-tree.html | 2 -
apidocs/org/apache/hadoop/hbase/package-use.html | 16 +-
apidocs/overview-tree.html | 2 -
.../org/apache/hadoop/hbase/CellComparator.html | 262 ++--
.../org/apache/hadoop/hbase/ChoreService.html | 510 --------
.../org/apache/hadoop/hbase/ScheduledChore.html | 430 -------
book.html | 2 +-
bulk-loads.html | 2 +-
checkstyle-aggregate.html | 26 +-
coc.html | 2 +-
dependencies.html | 2 +-
dependency-convergence.html | 2 +-
dependency-info.html | 2 +-
dependency-management.html | 2 +-
devapidocs/index-all.html | 6 +
.../org/apache/hadoop/hbase/CellComparator.html | 68 +-
.../apache/hadoop/hbase/CellComparatorImpl.html | 2 +-
.../org/apache/hadoop/hbase/ChoreService.html | 2 +-
.../apache/hadoop/hbase/MetaCellComparator.html | 45 +-
.../org/apache/hadoop/hbase/ScheduledChore.html | 2 +-
.../apache/hadoop/hbase/backup/package-tree.html | 4 +-
.../apache/hadoop/hbase/chaos/package-tree.html | 2 +-
.../hadoop/hbase/client/MutableRegionInfo.html | 84 +-
.../apache/hadoop/hbase/client/package-tree.html | 26 +-
.../apache/hadoop/hbase/executor/package-tree.html | 2 +-
.../apache/hadoop/hbase/filter/package-tree.html | 6 +-
.../hadoop/hbase/hbtop/field/package-tree.html | 2 +-
.../apache/hadoop/hbase/io/hfile/package-tree.html | 6 +-
.../org/apache/hadoop/hbase/ipc/package-tree.html | 2 +-
.../hadoop/hbase/mapreduce/package-tree.html | 4 +-
.../hbase/master/assignment/package-tree.html | 2 +-
.../hadoop/hbase/master/balancer/package-tree.html | 2 +-
.../apache/hadoop/hbase/master/package-tree.html | 6 +-
.../hbase/master/procedure/package-tree.html | 4 +-
.../hadoop/hbase/mob/DefaultMobStoreCompactor.html | 40 +-
.../org/apache/hadoop/hbase/package-tree.html | 16 +-
.../hadoop/hbase/procedure2/package-tree.html | 6 +-
.../apache/hadoop/hbase/quotas/package-tree.html | 6 +-
.../hadoop/hbase/regionserver/package-tree.html | 20 +-
.../regionserver/querymatcher/package-tree.html | 2 +-
.../hbase/regionserver/wal/package-tree.html | 4 +-
.../hadoop/hbase/replication/package-tree.html | 2 +-
.../hadoop/hbase/rest/model/package-tree.html | 2 +-
.../hadoop/hbase/security/access/package-tree.html | 6 +-
.../apache/hadoop/hbase/security/package-tree.html | 2 +-
.../apache/hadoop/hbase/thrift/package-tree.html | 2 +-
.../org/apache/hadoop/hbase/util/package-tree.html | 10 +-
.../org/apache/hadoop/hbase/CellComparator.html | 262 ++--
.../ChoreService.ChoreServiceThreadFactory.html | 2 +-
.../org/apache/hadoop/hbase/ChoreService.html | 2 +-
.../apache/hadoop/hbase/MetaCellComparator.html | 177 +--
.../org/apache/hadoop/hbase/ScheduledChore.html | 2 +-
.../hadoop/hbase/client/MutableRegionInfo.html | 650 +++++-----
.../hadoop/hbase/mob/DefaultMobStoreCompactor.html | 1282 ++++++++++----------
downloads.html | 16 +-
export_control.html | 2 +-
index.html | 2 +-
issue-tracking.html | 2 +-
mail-lists.html | 2 +-
metrics.html | 2 +-
old_news.html | 2 +-
plugin-management.html | 2 +-
plugins.html | 2 +-
poweredbyhbase.html | 2 +-
project-info.html | 2 +-
project-reports.html | 2 +-
project-summary.html | 2 +-
pseudo-distributed.html | 2 +-
replication.html | 2 +-
resources.html | 2 +-
source-repository.html | 2 +-
sponsors.html | 2 +-
supportingprojects.html | 2 +-
team-list.html | 2 +-
testdevapidocs/index-all.html | 4 +
.../hadoop/hbase/client/TestRegionInfoBuilder.html | 63 +-
.../apache/hadoop/hbase/io/hfile/package-tree.html | 2 +-
.../hadoop/hbase/mob/FaultyMobStoreCompactor.html | 20 +-
.../org/apache/hadoop/hbase/package-tree.html | 16 +-
.../hadoop/hbase/procedure/package-tree.html | 8 +-
.../hadoop/hbase/procedure2/package-tree.html | 4 +-
.../hadoop/hbase/regionserver/TestRegionInfo.html | 87 +-
.../hadoop/hbase/regionserver/package-tree.html | 6 +-
.../org/apache/hadoop/hbase/test/package-tree.html | 4 +-
.../org/apache/hadoop/hbase/wal/package-tree.html | 2 +-
.../hadoop/hbase/client/TestRegionInfoBuilder.html | 544 +++++----
.../hadoop/hbase/mob/FaultyMobStoreCompactor.html | 700 +++++------
.../hadoop/hbase/regionserver/TestRegionInfo.html | 910 +++++++-------
106 files changed, 2925 insertions(+), 5177 deletions(-)
diff --git a/acid-semantics.html b/acid-semantics.html
index 3352145..bcda9f9 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -456,7 +456,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 948cc19..24a87fc 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
/Author (Apache HBase Team)
/Creator (Asciidoctor PDF 1.5.3, based on Prawn 2.2.2)
/Producer (Apache HBase Team)
-/ModDate (D:20210721200451+00'00')
-/CreationDate (D:20210721201436+00'00')
+/ModDate (D:20210722161613+00'00')
+/CreationDate (D:20210722162606+00'00')
>>
endobj
2 0 obj
diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html
index 8fff1b6..f849d6e 100644
--- a/apidocs/allclasses-frame.html
+++ b/apidocs/allclasses-frame.html
@@ -73,7 +73,6 @@
<li><a href="org/apache/hadoop/hbase/client/CheckAndMutate.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">CheckAndMutate</a></li>
<li><a href="org/apache/hadoop/hbase/client/CheckAndMutate.Builder.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">CheckAndMutate.Builder</a></li>
<li><a href="org/apache/hadoop/hbase/client/CheckAndMutateResult.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">CheckAndMutateResult</a></li>
-<li><a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase" target="classFrame">ChoreService</a></li>
<li><a href="org/apache/hadoop/hbase/io/crypto/Cipher.html" title="class in org.apache.hadoop.hbase.io.crypto" target="classFrame">Cipher</a></li>
<li><a href="org/apache/hadoop/hbase/io/crypto/CipherProvider.html" title="interface in org.apache.hadoop.hbase.io.crypto" target="classFrame"><span class="interfaceName">CipherProvider</span></a></li>
<li><a href="org/apache/hadoop/hbase/rest/client/Client.html" title="class in org.apache.hadoop.hbase.rest.client" target="classFrame">Client</a></li>
@@ -320,7 +319,6 @@
<li><a href="org/apache/hadoop/hbase/exceptions/ScannerResetException.html" title="class in org.apache.hadoop.hbase.exceptions" target="classFrame">ScannerResetException</a></li>
<li><a href="org/apache/hadoop/hbase/client/ScanResultConsumer.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">ScanResultConsumer</span></a></li>
<li><a href="org/apache/hadoop/hbase/client/ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">ScanResultConsumerBase</span></a></li>
-<li><a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase" target="classFrame">ScheduledChore</a></li>
<li><a href="org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security" target="classFrame">SecurityCapability</a></li>
<li><a href="org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">ServerMetrics</span></a></li>
<li><a href="org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase" target="classFrame">ServerName</a></li>
diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html
index cc5cc4e..38ae0f6 100644
--- a/apidocs/allclasses-noframe.html
+++ b/apidocs/allclasses-noframe.html
@@ -73,7 +73,6 @@
<li><a href="org/apache/hadoop/hbase/client/CheckAndMutate.html" title="class in org.apache.hadoop.hbase.client">CheckAndMutate</a></li>
<li><a href="org/apache/hadoop/hbase/client/CheckAndMutate.Builder.html" title="class in org.apache.hadoop.hbase.client">CheckAndMutate.Builder</a></li>
<li><a href="org/apache/hadoop/hbase/client/CheckAndMutateResult.html" title="class in org.apache.hadoop.hbase.client">CheckAndMutateResult</a></li>
-<li><a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></li>
<li><a href="org/apache/hadoop/hbase/io/crypto/Cipher.html" title="class in org.apache.hadoop.hbase.io.crypto">Cipher</a></li>
<li><a href="org/apache/hadoop/hbase/io/crypto/CipherProvider.html" title="interface in org.apache.hadoop.hbase.io.crypto"><span class="interfaceName">CipherProvider</span></a></li>
<li><a href="org/apache/hadoop/hbase/rest/client/Client.html" title="class in org.apache.hadoop.hbase.rest.client">Client</a></li>
@@ -320,7 +319,6 @@
<li><a href="org/apache/hadoop/hbase/exceptions/ScannerResetException.html" title="class in org.apache.hadoop.hbase.exceptions">ScannerResetException</a></li>
<li><a href="org/apache/hadoop/hbase/client/ScanResultConsumer.html" title="interface in org.apache.hadoop.hbase.client"><span class="interfaceName">ScanResultConsumer</span></a></li>
<li><a href="org/apache/hadoop/hbase/client/ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client"><span class="interfaceName">ScanResultConsumerBase</span></a></li>
-<li><a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></li>
<li><a href="org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security">SecurityCapability</a></li>
<li><a href="org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="interfaceName">ServerMetrics</span></a></li>
<li><a href="org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></li>
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 41da139..89f18cc 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -1106,10 +1106,6 @@
<dd>
<div class="block">CallTimeoutException with cause</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#cancel--">cancel()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#cancel-boolean-">cancel(boolean)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RequestController.Checker.html#canTakeRow-org.apache.hadoop.hbase.HRegionLocation-org.apache.hadoop.hbase.client.Row-">canTakeRow(HRegionLocation, Row)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RequestController.Checker.html" title="interface in org.apache.hadoop.hbase.client">RequestController.Checker</a></dt>
<dd>
<div class="block">Checks the data whether it is valid to submit.</div>
@@ -1317,25 +1313,8 @@
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Return an md5 digest of the entire contents of a table.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#chore--">chore()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">The task to execute on each scheduled execution of the Chore</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/chaos/ChaosConstants.html#CHORE_SERVICE_PREFIX">CHORE_SERVICE_PREFIX</a></span> - Static variable in class org.apache.hadoop.hbase.chaos.<a href="org/apache/hadoop/hbase/chaos/ChaosConstants.html" title="class in org.apache.hadoop.hbase.chaos">ChaosConstants</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#choreForTesting--">choreForTesting()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
-<dt><a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ChoreService</span></a> - Class in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
-<dd>
-<div class="block">ChoreService is a service that can be used to schedule instances of <a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><code>ScheduledChore</code></a> to run
- periodically while sharing threads.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#ChoreService-java.lang.String-">ChoreService(String)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#ChoreService-java.lang.String-boolean-">ChoreService(String, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#ChoreService-java.lang.String-int-boolean-">ChoreService(String, int, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
<dt><a href="org/apache/hadoop/hbase/io/crypto/Cipher.html" title="class in org.apache.hadoop.hbase.io.crypto"><span class="typeNameLink">Cipher</span></a> - Class in <a href="org/apache/hadoop/hbase/io/crypto/package-summary.html">org.apache.hadoop.hbase.io.crypto</a></dt>
<dd>
<div class="block">A common interface for a cryptographic algorithm.</div>
@@ -1368,10 +1347,6 @@
<dd>
<div class="block">Turn the cleaner chore on/off.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#cleanup--">cleanup()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">Override to run cleanup tasks when the Chore encounters an error and must stop running</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS--">cleanupDataTestDirOnTestFS()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
<dd>
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
@@ -1957,6 +1932,10 @@
<div class="block">Compares the row part of the cell with a simple plain byte[] like the
stopRow in Scan.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellComparator.html#compareRows-byte:A-byte:A-">compareRows(byte[], byte[])</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></dt>
+<dd>
+<div class="block">Compares two row bytes</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows(ByteBuffer, Cell)</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellComparator.html#compareTimestamps-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareTimestamps(Cell, Cell)</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></dt>
@@ -6727,8 +6706,6 @@
<div class="block">Returns a ClusterStatus for this HBase cluster as observed at the
starting of the HBaseCluster</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#getInitialDelay--">getInitialDelay()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/BalancerDecision.html#getInitialFunctionCosts--">getInitialFunctionCosts()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/BalancerDecision.html" title="class in org.apache.hadoop.hbase.client">BalancerDecision</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/BalancerDecision.html#getInitTotalCost--">getInitTotalCost()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/BalancerDecision.html" title="class in org.apache.hadoop.hbase.client">BalancerDecision</a></dt>
@@ -7153,8 +7130,6 @@
<dd>
<div class="block">Get group name.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#getName--">getName()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/User.html#getName--">getName()</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></dt>
<dd>
<div class="block">Returns the full user name.</div>
@@ -7389,8 +7364,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html#getPeerId--">getPeerId()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#getPeriod--">getPeriod()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncBufferedMutator.html#getPeriodicalFlushTimeout-java.util.concurrent.TimeUnit-">getPeriodicalFlushTimeout(TimeUnit)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncBufferedMutator.html" title="interface in org.apache.hadoop.hbase.client">AsyncBufferedMutator</a></dt>
<dd>
<div class="block">Returns the periodical flush interval, 0 means disabled.</div>
@@ -8180,8 +8153,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Result.html#getStats--">getStats()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#getStopper--">getStopper()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#getStopRow--">getStopRow()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/InclusiveStopFilter.html#getStopRowKey--">getStopRowKey()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/InclusiveStopFilter.html" title="class in org.apache.hadoop.hbase.filter">InclusiveStopFilter</a></dt>
@@ -8397,8 +8368,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html#getTimeToLive--">getTimeToLive()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#getTimeUnit--">getTimeUnit()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/User.html#getToken-java.lang.String-java.lang.String-">getToken(String, String)</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></dt>
<dd>
<div class="block">Returns the Token of the specified kind associated with this user,
@@ -9709,10 +9678,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/TimeRange.html#INITIAL_MIN_TIMESTAMP">INITIAL_MIN_TIMESTAMP</a></span> - Static variable in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#initialChore--">initialChore()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">Override to run a task before we start looping.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseCluster.html#initialClusterStatus">initialClusterStatus</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a></dt>
<dd>
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
@@ -9983,8 +9948,6 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Get.html#isCheckExistenceOnly--">isCheckExistenceOnly()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#isChoreScheduled-org.apache.hadoop.hbase.ScheduledChore-">isChoreScheduled(ScheduledChore)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#isCleanerChoreEnabled--">isCleanerChoreEnabled()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
<dd>
<div class="block">Query on the cleaner chore state (Enabled/Disabled?).</div>
@@ -10140,8 +10103,6 @@
<dd>
<div class="block">Returns whether or not secure authentication is enabled for HBase.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#isInitialChoreComplete--">isInitialChoreComplete()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html#isInMemory--">isInMemory()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.SpaceQuotaStatusView.html#isInViolation--">isInViolation()</a></span> - Method in interface org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.SpaceQuotaStatusView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView.SpaceQuotaStatusView</a></dt>
@@ -10437,8 +10398,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#isScanMetricsEnabled--">isScanMetricsEnabled()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#isScheduled--">isScheduled()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/MultiRowRangeFilter.RowRange.html#isSearchRowInclusive--">isSearchRowInclusive()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/User.html#isSecurityEnabled--">isSecurityEnabled()</a></span> - Static method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></dt>
@@ -10449,8 +10408,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseConfiguration.html#isShowConfInServlet--">isShowConfInServlet()</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseConfiguration.html" title="class in org.apache.hadoop.hbase">HBaseConfiguration</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#isShutdown--">isShutdown()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/types/DataType.html#isSkippable--">isSkippable()</a></span> - Method in interface org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/DataType.html" title="interface in org.apache.hadoop.hbase.types">DataType</a></dt>
<dd>
<div class="block">Indicates whether this instance is able to skip over it's encoded value.</div>
@@ -10553,8 +10510,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncAdmin.html#isTableEnabled-org.apache.hadoop.hbase.TableName-">isTableEnabled(TableName)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#isTerminated--">isTerminated()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/OrderedBytes.html#isText-org.apache.hadoop.hbase.util.PositionedByteRange-">isText(PositionedByteRange)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/OrderedBytes.html" title="class in org.apache.hadoop.hbase.util">OrderedBytes</a></dt>
<dd>
<div class="block">Return true when the next encoded value in <code>src</code> uses Text encoding,
@@ -11653,10 +11608,6 @@
<dd>
<div class="block">Minimum MOB file age to archive, default (3600000 - 1h)</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#MIN_CORE_POOL_SIZE">MIN_CORE_POOL_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd>
-<div class="block">The minimum number of threads in the core pool of the underlying ScheduledThreadPoolExecutor</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#MIN_KEEP_SEQID_PERIOD">MIN_KEEP_SEQID_PERIOD</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
<dd>
<div class="block">At least to keep MVCC values in hfiles for 5 days</div>
@@ -14720,8 +14671,6 @@ service.</div>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/WALPlayer.html#run-java.lang.String:A-">run(String[])</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/WALPlayer.html" title="class in org.apache.hadoop.hbase.mapreduce">WALPlayer</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/User.html#runAs-java.security.PrivilegedAction-">runAs(PrivilegedAction<T>)</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></dt>
<dd>
<div class="block">Executes the given action within the context of this user.</div>
@@ -14891,22 +14840,6 @@ service.</div>
<dd>
<div class="block">Job parameter that specifies the scan list.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#scheduleChore-org.apache.hadoop.hbase.ScheduledChore-">scheduleChore(ScheduledChore)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd> </dd>
-<dt><a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ScheduledChore</span></a> - Class in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
-<dd>
-<div class="block">ScheduledChore is a task performed on a period in hbase.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore--">ScheduledChore()</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">This constructor is for test only.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-">ScheduledChore(String, Stoppable, int)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-">ScheduledChore(String, Stoppable, int, long)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-java.util.concurrent.TimeUnit-">ScheduledChore(String, Stoppable, int, long, TimeUnit)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Bytes.html#searchDelimiterIndex-byte:A-int-int-int-">searchDelimiterIndex(byte[], int, int, int)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Bytes.html#searchDelimiterIndexInReverse-byte:A-int-int-int-">searchDelimiterIndexInReverse(byte[], int, int, int)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a></dt>
@@ -16167,10 +16100,6 @@ service.</div>
<dd>
<div class="block">Specify if we have to shuffle the map tasks.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#shutdown--">shutdown()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
-<dd>
-<div class="block">shutdown the service.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#shutdown--">shutdown()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
<dd>
<div class="block">Shuts down the HBase cluster.</div>
@@ -16193,15 +16122,6 @@ service.</div>
<dd>
<div class="block">Shut down the client.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#shutdown--">shutdown()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">Call <a href="org/apache/hadoop/hbase/ScheduledChore.html#shutdown-boolean-"><code>ScheduledChore.shutdown(boolean)</code></a> with <code>true</code>.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#shutdown-boolean-">shutdown(boolean)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">Completely shutdown the ScheduleChore, which means we will call cleanup and you should not
- schedule it again.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#shutdown--">shutdown()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
@@ -18115,10 +18035,6 @@ service.</div>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfo.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfo.html" title="class in org.apache.hadoop.hbase.rsgroup">RSGroupInfo</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd>
-<div class="block">A summation of this chore in human readable format.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/User.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ServerName.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></dt>
@@ -18203,8 +18119,6 @@ service.</div>
<dd>
<div class="block">Transit current cluster to a new state in a synchronous replication peer.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#triggerNow--">triggerNow()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable(TableName, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
<dd>
<div class="block">Truncate a table.</div>
diff --git a/apidocs/org/apache/hadoop/hbase/AuthUtil.html b/apidocs/org/apache/hadoop/hbase/AuthUtil.html
index 2e10cf7..6cd44f2 100644
--- a/apidocs/org/apache/hadoop/hbase/AuthUtil.html
+++ b/apidocs/org/apache/hadoop/hbase/AuthUtil.html
@@ -208,7 +208,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
-<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></code></td>
+<td class="colFirst"><code>static org.apache.hadoop.hbase.ScheduledChore</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/AuthUtil.html#getAuthChore-org.apache.hadoop.conf.Configuration-">getAuthChore</a></span>(org.apache.hadoop.conf.Configuration conf)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="block"><span class="deprecationComment">Deprecated since 2.2.0, this method will be
@@ -283,8 +283,8 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<li class="blockList">
<h4>getAuthChore</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../src-html/org/apache/hadoop/hbase/AuthUtil.html#line.223">getAuthChore</a>(org.apache.hadoop.conf.Configuration conf)
- throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+public static org.apache.hadoop.hbase.ScheduledChore <a href="../../../../src-html/org/apache/hadoop/hbase/AuthUtil.html#line.223">getAuthChore</a>(org.apache.hadoop.conf.Configuration conf)
+ throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Deprecated since 2.2.0, this method will be
<code>InterfaceAudience.Private</code> use only after 4.0.0.</span></div>
<div class="block">Checks if security is enabled and if so, launches chore for refreshing kerberos ticket.</div>
diff --git a/apidocs/org/apache/hadoop/hbase/CellComparator.html b/apidocs/org/apache/hadoop/hbase/CellComparator.html
index 77f019f..3d015ef 100644
--- a/apidocs/org/apache/hadoop/hbase/CellComparator.html
+++ b/apidocs/org/apache/hadoop/hbase/CellComparator.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":18,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":17,"i11":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":18,"i5":18,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":17,"i12":6};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab";
<br>
<pre>@InterfaceAudience.Public
@InterfaceStability.Evolving
-public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.32">CellComparator</a>
+public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.33">CellComparator</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>></pre>
<div class="block">Comparator for comparing cells and has some specialized methods that allows comparing individual
cell components like row, family, qualifier and timestamp</div>
@@ -160,10 +160,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>default int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-byte:A-byte:A-">compareRows</a></span>(byte[] leftRow,
+ byte[] rightRow)</code>
+<div class="block">Compares two row bytes</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>default int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell)</code> </td>
</tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-byte:A-int-int-">compareRows</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell,
byte[] bytes,
@@ -173,41 +180,41 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
stopRow in Scan.</div>
</td>
</tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</code>
<div class="block">Lexographically compares the rows of two cells.</div>
</td>
</tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareTimestamps-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareTimestamps</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</code>
<div class="block">Compares cell's timestamps in DESCENDING order.</div>
</td>
</tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareTimestamps-long-long-">compareTimestamps</a></span>(long leftCellts,
long rightCellts)</code>
<div class="block">Compares cell's timestamps in DESCENDING order.</div>
</td>
</tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareWithoutRow-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareWithoutRow</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</code>
<div class="block">Lexographically compares the two cells excluding the row part.</div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getInstance--">getInstance</a></span>()</code>
<div class="block">A comparator for ordering cells in user-space tables.</div>
</td>
</tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getSimpleComparator--">getSimpleComparator</a></span>()</code> </td>
</tr>
@@ -239,7 +246,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>getInstance</h4>
-<pre>static <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.41">getInstance</a>()</pre>
+<pre>static <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.42">getInstance</a>()</pre>
<div class="block">A comparator for ordering cells in user-space tables. Useful when writing cells in sorted
order as necessary for bulk import (i.e. via MapReduce).
<p>
@@ -253,7 +260,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compare</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.54">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.55">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares two cells. The key part of the cell is taken for comparison which
includes row, family, qualifier, timestamp and type</div>
@@ -275,7 +282,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compare</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.62">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.63">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell,
boolean ignoreSequenceid)</pre>
<div class="block">Compare cells.</div>
@@ -294,7 +301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.71">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.72">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the rows of two cells.</div>
<dl>
@@ -313,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.83">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.84">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell,
byte[] bytes,
int offset,
int length)</pre>
@@ -331,13 +338,32 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
</dl>
</li>
</ul>
+<a name="compareRows-byte:A-byte:A-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareRows</h4>
+<pre>default int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.93">compareRows</a>(byte[] leftRow,
+ byte[] rightRow)</pre>
+<div class="block">Compares two row bytes</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>leftRow</code> - the byte array of the left row</dd>
+<dd><code>rightRow</code> - the byte array of the right row</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>greater than 0 if leftRow is bigger, less than 0 if rightRow is bigger, 0 if both
+ rows are equal</dd>
+</dl>
+</li>
+</ul>
<a name="compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>default int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.91">compareRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
+<pre>default int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.103">compareRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -355,7 +381,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareWithoutRow</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.111">compareWithoutRow</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.123">compareWithoutRow</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the two cells excluding the row part. It compares family, qualifier,
timestamp and the type</div>
@@ -375,7 +401,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareFamilies</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.120">compareFamilies</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.132">compareFamilies</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the families of the two cells</div>
<dl>
@@ -394,7 +420,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareQualifiers</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.129">compareQualifiers</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.141">compareQualifiers</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the qualifiers of the two cells</div>
<dl>
@@ -413,7 +439,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareTimestamps</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.141">compareTimestamps</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.153">compareTimestamps</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of
newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found
@@ -435,7 +461,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareTimestamps</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.153">compareTimestamps</a>(long leftCellts,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.165">compareTimestamps</a>(long leftCellts,
long rightCellts)</pre>
<div class="block">Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of
newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found
@@ -457,7 +483,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockListLast">
<li class="blockList">
<h4>getSimpleComparator</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.160">getSimpleComparator</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.172">getSimpleComparator</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A dumbed-down, fast comparator for hbase2 base-type, the <code>ByteBufferKeyValue</code>.
diff --git a/apidocs/org/apache/hadoop/hbase/CellUtil.html b/apidocs/org/apache/hadoop/hbase/CellUtil.html
index f5c32b4..904d413 100644
--- a/apidocs/org/apache/hadoop/hbase/CellUtil.html
+++ b/apidocs/org/apache/hadoop/hbase/CellUtil.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/hadoop/hbase/CellUtil.html" target="_top">Frames</a></li>
@@ -1196,7 +1196,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/hadoop/hbase/CellUtil.html" target="_top">Frames</a></li>
diff --git a/apidocs/org/apache/hadoop/hbase/ChoreService.html b/apidocs/org/apache/hadoop/hbase/ChoreService.html
deleted file mode 100644
index 3ade0f4..0000000
--- a/apidocs/org/apache/hadoop/hbase/ChoreService.html
+++ /dev/null
@@ -1,407 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ChoreService (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
- try {
- if (location.href.indexOf('is-external=true') == -1) {
- parent.document.title="ChoreService (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
- }
- }
- catch(err) {
- }
-//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ChoreService.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../index-all.html">Index</a></li>
-<li><a href="../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../index.html?org/apache/hadoop/hbase/ChoreService.html" target="_top">Frames</a></li>
-<li><a href="ChoreService.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_top");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary: </li>
-<li>Nested | </li>
-<li>Field | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li>Field | </li>
-<li><a href="#constructor.detail">Constr</a> | </li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!-- -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase</div>
-<h2 title="Class ChoreService" class="title">Class ChoreService</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.ChoreService</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<hr>
-<br>
-<pre>@InterfaceAudience.Public
-public class <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.54">ChoreService</a>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
-<div class="block">ChoreService is a service that can be used to schedule instances of <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><code>ScheduledChore</code></a> to run
- periodically while sharing threads. The ChoreService is backed by a
- <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent"><code>ScheduledThreadPoolExecutor</code></a> whose core pool size changes dynamically depending on the
- number of <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><code>ScheduledChore</code></a> scheduled. All of the threads in the core thread pool of the
- underlying <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent"><code>ScheduledThreadPoolExecutor</code></a> are set to be daemon threads.
- <p>
- The ChoreService provides the ability to schedule, cancel, and trigger instances of
- <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><code>ScheduledChore</code></a>. The ChoreService also provides the ability to check on the status of
- scheduled chores. The number of threads used by the ChoreService changes based on the scheduling
- load and whether or not the scheduled chores are executing on time. As more chores are scheduled,
- there may be a need to increase the number of threads if it is noticed that chores are no longer
- meeting their scheduled start times. On the other hand, as chores are cancelled, an attempt is
- made to reduce the number of running threads to see if chores can still meet their start times
- with a smaller thread pool.
- <p>
- When finished with a ChoreService it is good practice to call <a href="../../../../org/apache/hadoop/hbase/ChoreService.html#shutdown--"><code>shutdown()</code></a>.
- Calling this method ensures that all scheduled chores are cancelled and cleaned up properly.</div>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!-- -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#ChoreService-java.lang.String-">ChoreService</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> coreThreadPoolPrefix)</code> </td>
-</tr>
-<tr class="rowColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#ChoreService-java.lang.String-boolean-">ChoreService</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> coreThreadPoolPrefix,
- boolean jitter)</code> </td>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#ChoreService-java.lang.String-int-boolean-">ChoreService</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> coreThreadPoolPrefix,
- int corePoolSize,
- boolean jitter)</code> </td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!-- -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#isShutdown--">isShutdown</a></span>()</code> </td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#isTerminated--">isTerminated</a></span>()</code> </td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#scheduleChore-org.apache.hadoop.hbase.ScheduledChore-">scheduleChore</a></span>(<a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> chore)</code> </td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html#shutdown--">shutdown</a></span>()</code>
-<div class="block">shutdown the service.</div>
-</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!-- -->
-</a>
-<h3>Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!-- -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="ChoreService-java.lang.String-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>ChoreService</h4>
-<pre>@InterfaceAudience.Private
-public <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.95">ChoreService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> coreThreadPoolPrefix)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>coreThreadPoolPrefix</code> - Prefix that will be applied to the Thread name of all threads
- spawned by this service</dd>
-</dl>
-</li>
-</ul>
-<a name="ChoreService-java.lang.String-boolean-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>ChoreService</h4>
-<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.105">ChoreService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> coreThreadPoolPrefix,
- boolean jitter)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>coreThreadPoolPrefix</code> - Prefix that will be applied to the Thread name of all threads
- spawned by this service</dd>
-<dd><code>jitter</code> - Should chore service add some jitter for all of the scheduled chores. When set
- to true this will add -10% to 10% jitter.</dd>
-</dl>
-</li>
-</ul>
-<a name="ChoreService-java.lang.String-int-boolean-">
-<!-- -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>ChoreService</h4>
-<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.118">ChoreService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> coreThreadPoolPrefix,
- int corePoolSize,
- boolean jitter)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>coreThreadPoolPrefix</code> - Prefix that will be applied to the Thread name of all threads
- spawned by this service</dd>
-<dd><code>corePoolSize</code> - The initial size to set the core pool of the ScheduledThreadPoolExecutor
- to during initialization. The default size is 1, but specifying a larger size may be
- beneficial if you know that 1 thread will not be enough.</dd>
-<dd><code>jitter</code> - Should chore service add some jitter for all of the scheduled chores. When set
- to true this will add -10% to 10% jitter.</dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!-- -->
-</a>
-<h3>Method Detail</h3>
-<a name="scheduleChore-org.apache.hadoop.hbase.ScheduledChore-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>scheduleChore</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.143">scheduleChore</a>(<a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> chore)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>chore</code> - Chore to be scheduled. If the chore is already scheduled with another ChoreService
- instance, that schedule will be cancelled (i.e. a Chore can only ever be scheduled
- with a single ChoreService instance).</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true when the chore was successfully scheduled. false when the scheduling failed
- (typically occurs when a chore is scheduled during shutdown of service)</dd>
-</dl>
-</li>
-</ul>
-<a name="shutdown--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>shutdown</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.365">shutdown</a>()</pre>
-<div class="block">shutdown the service. Any chores that are scheduled for execution will be cancelled. Any chores
- in the middle of execution will be interrupted and shutdown. This service will be unusable
- after this method has been called (i.e. future scheduling attempts will fail).
- <p/>
- Notice that, this will only clean the chore from this ChoreService but you could still schedule
- the chore with other ChoreService.</div>
-</li>
-</ul>
-<a name="isShutdown--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isShutdown</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.380">isShutdown</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true when the service is shutdown and thus cannot be used anymore</dd>
-</dl>
-</li>
-</ul>
-<a name="isTerminated--">
-<!-- -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>isTerminated</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.387">isTerminated</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true when the service is shutdown and all threads have terminated</dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ChoreService.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../index-all.html">Index</a></li>
-<li><a href="../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../index.html?org/apache/hadoop/hbase/ChoreService.html" target="_top">Frames</a></li>
-<li><a href="ChoreService.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_bottom");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary: </li>
-<li>Nested | </li>
-<li>Field | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li>Field | </li>
-<li><a href="#constructor.detail">Constr</a> | </li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!-- -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright © 2007–2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>
diff --git a/apidocs/org/apache/hadoop/hbase/ClockOutOfSyncException.html b/apidocs/org/apache/hadoop/hbase/ClockOutOfSyncException.html
index 93151c5..75f6bb7 100644
--- a/apidocs/org/apache/hadoop/hbase/ClockOutOfSyncException.html
+++ b/apidocs/org/apache/hadoop/hbase/ClockOutOfSyncException.html
@@ -43,7 +43,7 @@
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -225,7 +225,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.h
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
diff --git a/apidocs/org/apache/hadoop/hbase/RetryImmediatelyException.html b/apidocs/org/apache/hadoop/hbase/RetryImmediatelyException.html
index d9be235..b0f5a94 100644
--- a/apidocs/org/apache/hadoop/hbase/RetryImmediatelyException.html
+++ b/apidocs/org/apache/hadoop/hbase/RetryImmediatelyException.html
@@ -44,7 +44,7 @@
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/hadoop/hbase/ReplicationPeerNotFoundException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/hadoop/hbase/RetryImmediatelyException.html" target="_top">Frames</a></li>
@@ -228,7 +228,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.h
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/hadoop/hbase/ReplicationPeerNotFoundException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/hadoop/hbase/RetryImmediatelyException.html" target="_top">Frames</a></li>
diff --git a/apidocs/org/apache/hadoop/hbase/ScheduledChore.html b/apidocs/org/apache/hadoop/hbase/ScheduledChore.html
deleted file mode 100644
index ab0637e..0000000
--- a/apidocs/org/apache/hadoop/hbase/ScheduledChore.html
+++ /dev/null
@@ -1,621 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ScheduledChore (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
- try {
- if (location.href.indexOf('is-external=true') == -1) {
- parent.document.title="ScheduledChore (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
- }
- }
- catch(err) {
- }
-//-->
-var methods = {"i0":10,"i1":10,"i2":6,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ScheduledChore.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../index-all.html">Index</a></li>
-<li><a href="../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/RetryImmediatelyException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../index.html?org/apache/hadoop/hbase/ScheduledChore.html" target="_top">Frames</a></li>
-<li><a href="ScheduledChore.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_top");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary: </li>
-<li>Nested | </li>
-<li>Field | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li>Field | </li>
-<li><a href="#constructor.detail">Constr</a> | </li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!-- -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase</div>
-<h2 title="Class ScheduledChore" class="title">Class ScheduledChore</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.ScheduledChore</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
-</dl>
-<hr>
-<br>
-<pre>@InterfaceAudience.Public
-public abstract class <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.44">ScheduledChore</a>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
-<div class="block">ScheduledChore is a task performed on a period in hbase. ScheduledChores become active once
- scheduled with a <a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><code>ChoreService</code></a> via <a href="../../../../org/apache/hadoop/hbase/ChoreService.html#scheduleChore-org.apache.hadoop.hbase.ScheduledChore-"><code>ChoreService.scheduleChore(ScheduledChore)</code></a>. The
- chore is run in a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent"><code>ScheduledThreadPoolExecutor</code></a> and competes with other ScheduledChores for
- access to the threads in the core thread pool. If an unhandled exception occurs, the chore
- cancellation is logged. Implementers should consider whether or not the Chore will be able to
- execute within the defined period. It is bad practice to define a ScheduledChore whose execution
- time exceeds its period since it will try to hog one of the threads in the <a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><code>ChoreService</code></a>'s
- thread pool.
- <p/>
- Don't subclass ScheduledChore if the task relies on being woken up for something to do, such as
- an entry being added to a queue, etc.</div>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!-- -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier</th>
-<th class="colLast" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore--">ScheduledChore</a></span>()</code>
-<div class="block">This constructor is for test only.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code> </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-">ScheduledChore</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period)</code> </td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code> </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-">ScheduledChore</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period,
- long initialDelay)</code> </td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code> </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-java.util.concurrent.TimeUnit-">ScheduledChore</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period,
- long initialDelay,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> unit)</code> </td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!-- -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabE [...]
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#cancel--">cancel</a></span>()</code> </td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#cancel-boolean-">cancel</a></span>(boolean mayInterruptIfRunning)</code> </td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>protected abstract void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">chore</a></span>()</code>
-<div class="block">The task to execute on each scheduled execution of the Chore</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#cleanup--">cleanup</a></span>()</code>
-<div class="block">Override to run cleanup tasks when the Chore encounters an error and must stop running</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#getInitialDelay--">getInitialDelay</a></span>()</code> </td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#getName--">getName</a></span>()</code> </td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#getPeriod--">getPeriod</a></span>()</code> </td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#getStopper--">getStopper</a></span>()</code> </td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#getTimeUnit--">getTimeUnit</a></span>()</code> </td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#initialChore--">initialChore</a></span>()</code>
-<div class="block">Override to run a task before we start looping.</div>
-</td>
-</tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#isInitialChoreComplete--">isInitialChoreComplete</a></span>()</code> </td>
-</tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#isScheduled--">isScheduled</a></span>()</code> </td>
-</tr>
-<tr id="i12" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#run--">run</a></span>()</code> </td>
-</tr>
-<tr id="i13" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#shutdown--">shutdown</a></span>()</code>
-<div class="block">Call <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#shutdown-boolean-"><code>shutdown(boolean)</code></a> with <code>true</code>.</div>
-</td>
-</tr>
-<tr id="i14" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#shutdown-boolean-">shutdown</a></span>(boolean mayInterruptIfRunning)</code>
-<div class="block">Completely shutdown the ScheduleChore, which means we will call cleanup and you should not
- schedule it again.</div>
-</td>
-</tr>
-<tr id="i15" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#triggerNow--">triggerNow</a></span>()</code> </td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!-- -->
-</a>
-<h3>Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!-- -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="ScheduledChore--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>ScheduledChore</h4>
-<pre>@InterfaceAudience.Private
-protected <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.87">ScheduledChore</a>()</pre>
-<div class="block">This constructor is for test only. It allows us to create an object and to call chore() on it.</div>
-</li>
-</ul>
-<a name="ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>ScheduledChore</h4>
-<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.96">ScheduledChore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>name</code> - Name assigned to Chore. Useful for identification amongst chores of the same type</dd>
-<dd><code>stopper</code> - When <a href="../../../../org/apache/hadoop/hbase/Stoppable.html#isStopped--"><code>Stoppable.isStopped()</code></a> is true, this chore will cancel and cleanup</dd>
-<dd><code>period</code> - Period in millis with which this Chore repeats execution when scheduled.</dd>
-</dl>
-</li>
-</ul>
-<a name="ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>ScheduledChore</h4>
-<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.108">ScheduledChore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period,
- long initialDelay)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>name</code> - Name assigned to Chore. Useful for identification amongst chores of the same type</dd>
-<dd><code>stopper</code> - When <a href="../../../../org/apache/hadoop/hbase/Stoppable.html#isStopped--"><code>Stoppable.isStopped()</code></a> is true, this chore will cancel and cleanup</dd>
-<dd><code>period</code> - Period in millis with which this Chore repeats execution when scheduled.</dd>
-<dd><code>initialDelay</code> - Delay before this Chore begins to execute once it has been scheduled. A
- value of 0 means the chore will begin to execute immediately. Negative delays are
- invalid and will be corrected to a value of 0.</dd>
-</dl>
-</li>
-</ul>
-<a name="ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-java.util.concurrent.TimeUnit-">
-<!-- -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>ScheduledChore</h4>
-<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.122">ScheduledChore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period,
- long initialDelay,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> unit)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>name</code> - Name assigned to Chore. Useful for identification amongst chores of the same type</dd>
-<dd><code>stopper</code> - When <a href="../../../../org/apache/hadoop/hbase/Stoppable.html#isStopped--"><code>Stoppable.isStopped()</code></a> is true, this chore will cancel and cleanup</dd>
-<dd><code>period</code> - Period in Timeunit unit with which this Chore repeats execution when scheduled.</dd>
-<dd><code>initialDelay</code> - Delay in Timeunit unit before this Chore begins to execute once it has been
- scheduled. A value of 0 means the chore will begin to execute immediately. Negative
- delays are invalid and will be corrected to a value of 0.</dd>
-<dd><code>unit</code> - The unit that is used to measure period and initialDelay</dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!-- -->
-</a>
-<h3>Method Detail</h3>
-<a name="run--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>run</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.135">run</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code> in interface <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang"><code>Runnable.run()</code></a></dd>
-</dl>
-</li>
-</ul>
-<a name="triggerNow--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>triggerNow</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.226">triggerNow</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>false when the Chore is not currently scheduled with a ChoreService</dd>
-</dl>
-</li>
-</ul>
-<a name="cancel--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>cancel</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.241">cancel</a>()</pre>
-</li>
-</ul>
-<a name="cancel-boolean-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>cancel</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.245">cancel</a>(boolean mayInterruptIfRunning)</pre>
-</li>
-</ul>
-<a name="getName--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getName</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.252">getName</a>()</pre>
-</li>
-</ul>
-<a name="getStopper--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getStopper</h4>
-<pre>public <a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.256">getStopper</a>()</pre>
-</li>
-</ul>
-<a name="getPeriod--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getPeriod</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.263">getPeriod</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>period to execute chore in getTimeUnit() units</dd>
-</dl>
-</li>
-</ul>
-<a name="getInitialDelay--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getInitialDelay</h4>
-<pre>public long <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.270">getInitialDelay</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>initial delay before executing chore in getTimeUnit() units</dd>
-</dl>
-</li>
-</ul>
-<a name="getTimeUnit--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getTimeUnit</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.274">getTimeUnit</a>()</pre>
-</li>
-</ul>
-<a name="isInitialChoreComplete--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isInitialChoreComplete</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.278">isInitialChoreComplete</a>()</pre>
-</li>
-</ul>
-<a name="isScheduled--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isScheduled</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.297">isScheduled</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true when this Chore is scheduled with a ChoreService</dd>
-</dl>
-</li>
-</ul>
-<a name="chore--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>chore</h4>
-<pre>protected abstract void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.311">chore</a>()</pre>
-<div class="block">The task to execute on each scheduled execution of the Chore</div>
-</li>
-</ul>
-<a name="initialChore--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>initialChore</h4>
-<pre>protected boolean <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.317">initialChore</a>()</pre>
-<div class="block">Override to run a task before we start looping.</div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if initial chore was successful</dd>
-</dl>
-</li>
-</ul>
-<a name="cleanup--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>cleanup</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.325">cleanup</a>()</pre>
-<div class="block">Override to run cleanup tasks when the Chore encounters an error and must stop running</div>
-</li>
-</ul>
-<a name="shutdown--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>shutdown</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.332">shutdown</a>()</pre>
-<div class="block">Call <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#shutdown-boolean-"><code>shutdown(boolean)</code></a> with <code>true</code>.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html#shutdown-boolean-"><code>shutdown(boolean)</code></a></dd>
-</dl>
-</li>
-</ul>
-<a name="shutdown-boolean-">
-<!-- -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>shutdown</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.342">shutdown</a>(boolean mayInterruptIfRunning)</pre>
-<div class="block">Completely shutdown the ScheduleChore, which means we will call cleanup and you should not
- schedule it again.
- <p/>
- This is another path to cleanup the chore, comparing to stop the stopper instance passed in.</div>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ScheduledChore.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../index-all.html">Index</a></li>
-<li><a href="../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/RetryImmediatelyException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../index.html?org/apache/hadoop/hbase/ScheduledChore.html" target="_top">Frames</a></li>
-<li><a href="ScheduledChore.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_bottom");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary: </li>
-<li>Nested | </li>
-<li>Field | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li>Field | </li>
-<li><a href="#constructor.detail">Constr</a> | </li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!-- -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright © 2007–2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>
diff --git a/apidocs/org/apache/hadoop/hbase/ServerMetrics.html b/apidocs/org/apache/hadoop/hbase/ServerMetrics.html
index 5cd9c33..210312c 100644
--- a/apidocs/org/apache/hadoop/hbase/ServerMetrics.html
+++ b/apidocs/org/apache/hadoop/hbase/ServerMetrics.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/RetryImmediatelyException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -476,7 +476,7 @@ public interface <a href="../../../../src-html/org/apache/hadoop/hbase/ServerMet
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/RetryImmediatelyException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/ChoreService.html b/apidocs/org/apache/hadoop/hbase/class-use/ChoreService.html
deleted file mode 100644
index 19a45d7..0000000
--- a/apidocs/org/apache/hadoop/hbase/class-use/ChoreService.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.ChoreService (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
- try {
- if (location.href.indexOf('is-external=true') == -1) {
- parent.document.title="Uses of Class org.apache.hadoop.hbase.ChoreService (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
- }
- }
- catch(err) {
- }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/ChoreService.html" target="_top">Frames</a></li>
-<li><a href="ChoreService.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_top");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!-- -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.ChoreService" class="title">Uses of Class<br>org.apache.hadoop.hbase.ChoreService</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.ChoreService</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/ChoreService.html" target="_top">Frames</a></li>
-<li><a href="ChoreService.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_bottom");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!-- -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright © 2007–2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html b/apidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html
deleted file mode 100644
index cd4842c..0000000
--- a/apidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.ScheduledChore (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
- try {
- if (location.href.indexOf('is-external=true') == -1) {
- parent.document.title="Uses of Class org.apache.hadoop.hbase.ScheduledChore (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
- }
- }
- catch(err) {
- }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/ScheduledChore.html" target="_top">Frames</a></li>
-<li><a href="ScheduledChore.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_top");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!-- -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.ScheduledChore" class="title">Uses of Class<br>org.apache.hadoop.hbase.ScheduledChore</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
-<td class="colLast"> </td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase">
-<!-- -->
-</a>
-<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> that return <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AuthUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/AuthUtil.html#getAuthChore-org.apache.hadoop.conf.Configuration-">getAuthChore</a></span>(org.apache.hadoop.conf.Configuration conf)</code>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>
-<div class="block"><span class="deprecationComment">Deprecated since 2.2.0, this method will be
- <code>InterfaceAudience.Private</code> use only after 4.0.0.</span></div>
-</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AuthUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/AuthUtil.html#getAuthRenewalChore-org.apache.hadoop.security.UserGroupInformation-">getAuthRenewalChore</a></span>(org.apache.hadoop.security.UserGroupInformation user)</code>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
-<div class="block">Checks if security is enabled and if so, launches chore for refreshing kerberos ticket.</div>
-</td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">ChoreService.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ChoreService.html#isChoreScheduled-org.apache.hadoop.hbase.ScheduledChore-">isChoreScheduled</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> chore)</code> </td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">ChoreService.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ChoreService.html#scheduleChore-org.apache.hadoop.hbase.ScheduledChore-">scheduleChore</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> chore)</code> </td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!-- -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!-- -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/ScheduledChore.html" target="_top">Frames</a></li>
-<li><a href="ScheduledChore.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
- allClassesLink = document.getElementById("allclasses_navbar_bottom");
- if(window==top) {
- allClassesLink.style.display = "block";
- }
- else {
- allClassesLink.style.display = "none";
- }
- //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!-- -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright © 2007–2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/Stoppable.html b/apidocs/org/apache/hadoop/hbase/class-use/Stoppable.html
index dde147e..1b6a0fb 100644
--- a/apidocs/org/apache/hadoop/hbase/class-use/Stoppable.html
+++ b/apidocs/org/apache/hadoop/hbase/class-use/Stoppable.html
@@ -72,73 +72,7 @@
<div class="header">
<h2 title="Uses of Interface org.apache.hadoop.hbase.Stoppable" class="title">Uses of Interface<br>org.apache.hadoop.hbase.Stoppable</h2>
</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
-<td class="colLast"> </td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase">
-<!-- -->
-</a>
-<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> that return <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ScheduledChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#getStopper--">getStopper</a></span>()</code> </td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
-<caption><span>Constructors in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-">ScheduledChore</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period)</code> </td>
-</tr>
-<tr class="rowColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-">ScheduledChore</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period,
- long initialDelay)</code> </td>
-</tr>
-<tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#ScheduledChore-java.lang.String-org.apache.hadoop.hbase.Stoppable-int-long-java.util.concurrent.TimeUnit-">ScheduledChore</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
- <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> stopper,
- int period,
- long initialDelay,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> unit)</code> </td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.Stoppable</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
diff --git a/apidocs/org/apache/hadoop/hbase/package-frame.html b/apidocs/org/apache/hadoop/hbase/package-frame.html
index 80be7b7..332b95e 100644
--- a/apidocs/org/apache/hadoop/hbase/package-frame.html
+++ b/apidocs/org/apache/hadoop/hbase/package-frame.html
@@ -30,7 +30,6 @@
<li><a href="CacheEvictionStats.html" title="class in org.apache.hadoop.hbase" target="classFrame">CacheEvictionStats</a></li>
<li><a href="CellBuilderFactory.html" title="class in org.apache.hadoop.hbase" target="classFrame">CellBuilderFactory</a></li>
<li><a href="CellUtil.html" title="class in org.apache.hadoop.hbase" target="classFrame">CellUtil</a></li>
-<li><a href="ChoreService.html" title="class in org.apache.hadoop.hbase" target="classFrame">ChoreService</a></li>
<li><a href="HBaseCluster.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseCluster</a></li>
<li><a href="HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseCommonTestingUtility</a></li>
<li><a href="HBaseConfiguration.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseConfiguration</a></li>
@@ -42,7 +41,6 @@
<li><a href="MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase" target="classFrame">MiniHBaseCluster</a></li>
<li><a href="NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase" target="classFrame">NamespaceDescriptor</a></li>
<li><a href="NamespaceDescriptor.Builder.html" title="class in org.apache.hadoop.hbase" target="classFrame">NamespaceDescriptor.Builder</a></li>
-<li><a href="ScheduledChore.html" title="class in org.apache.hadoop.hbase" target="classFrame">ScheduledChore</a></li>
<li><a href="ServerName.html" title="class in org.apache.hadoop.hbase" target="classFrame">ServerName</a></li>
<li><a href="Size.html" title="class in org.apache.hadoop.hbase" target="classFrame">Size</a></li>
<li><a href="StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase" target="classFrame">StartMiniClusterOption</a></li>
diff --git a/apidocs/org/apache/hadoop/hbase/package-summary.html b/apidocs/org/apache/hadoop/hbase/package-summary.html
index 302cdd7..1fe082c 100644
--- a/apidocs/org/apache/hadoop/hbase/package-summary.html
+++ b/apidocs/org/apache/hadoop/hbase/package-summary.html
@@ -179,83 +179,70 @@
</td>
</tr>
<tr class="altColor">
-<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></td>
-<td class="colLast">
-<div class="block">ChoreService is a service that can be used to schedule instances of <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><code>ScheduledChore</code></a> to run
- periodically while sharing threads.</div>
-</td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since 3.0.0, will be removed in 4.0.0.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseCommonTestingUtility</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since 3.0.0, will be removed in 4.0.0.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseConfiguration.html" title="class in org.apache.hadoop.hbase">HBaseConfiguration</a></td>
<td class="colLast">
<div class="block">Adds HBase configuration files to a Configuration</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseInterfaceAudience.html" title="class in org.apache.hadoop.hbase">HBaseInterfaceAudience</a></td>
<td class="colLast">
<div class="block">This class defines constants for different classes of hbase limited private apis</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since 3.0.0, will be removed in 4.0.0.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseZKTestingUtility</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since 3.0.0, will be removed in 4.0.0.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></td>
<td class="colLast">
<div class="block">HConstants holds a bunch of HBase-related constants</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a></td>
<td class="colLast">
<div class="block">Data structure to hold RegionInfo and the address for the hosting
HRegionServer.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since 3.0.0, will be removed in 4.0.0.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a></td>
<td class="colLast">
<div class="block">Namespace POJO class.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/NamespaceDescriptor.Builder.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor.Builder</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
-<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></td>
-<td class="colLast">
-<div class="block">ScheduledChore is a task performed on a period in hbase.</div>
-</td>
-</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></td>
<td class="colLast">
diff --git a/apidocs/org/apache/hadoop/hbase/package-tree.html b/apidocs/org/apache/hadoop/hbase/package-tree.html
index 8734b02..dca6917 100644
--- a/apidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/apidocs/org/apache/hadoop/hbase/package-tree.html
@@ -85,7 +85,6 @@
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">CacheEvictionStats</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderFactory.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderFactory</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">CellUtil</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ChoreService</span></a></li>
<li type="circle">org.apache.hadoop.conf.Configuration (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a><T>, org.apache.hadoop.io.Writable)
<ul>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseConfiguration.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseConfiguration</span></a></li>
@@ -110,7 +109,6 @@
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">HRegionLocation</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>)</li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">NamespaceDescriptor</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/NamespaceDescriptor.Builder.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">NamespaceDescriptor.Builder</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ScheduledChore</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ServerName</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class [...]
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Size</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>)</li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">StartMiniClusterOption</span></a></li>
diff --git a/apidocs/org/apache/hadoop/hbase/package-use.html b/apidocs/org/apache/hadoop/hbase/package-use.html
index 2904fc3..845ee8a 100644
--- a/apidocs/org/apache/hadoop/hbase/package-use.html
+++ b/apidocs/org/apache/hadoop/hbase/package-use.html
@@ -300,26 +300,21 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/RetryImmediatelyException.html#org.apache.hadoop.hbase">RetryImmediatelyException</a> </td>
</tr>
<tr class="rowColor">
-<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ScheduledChore.html#org.apache.hadoop.hbase">ScheduledChore</a>
-<div class="block">ScheduledChore is a task performed on a period in hbase.</div>
-</td>
-</tr>
-<tr class="altColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ServerMetrics.html#org.apache.hadoop.hbase">ServerMetrics</a>
<div class="block">This class is used for exporting current state of load on a RegionServer.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ServerName.html#org.apache.hadoop.hbase">ServerName</a>
<div class="block">Name of a particular incarnation of an HBase Server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/Size.html#org.apache.hadoop.hbase">Size</a>
<div class="block">It is used to represent the size with different units.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/StartMiniClusterOption.html#org.apache.hadoop.hbase">StartMiniClusterOption</a>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="block"><span class="deprecationComment">since 3.0.0, will be removed in 4.0.0. Use
@@ -327,11 +322,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</div>
</td>
</tr>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/Stoppable.html#org.apache.hadoop.hbase">Stoppable</a>
-<div class="block">Implementers are Stoppable.</div>
-</td>
-</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/TableName.html#org.apache.hadoop.hbase">TableName</a>
<div class="block">Immutable POJO class for representing a table name.</div>
diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html
index 16794a8..9730d2b 100644
--- a/apidocs/overview-tree.html
+++ b/apidocs/overview-tree.html
@@ -216,7 +216,6 @@
<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/CheckAndMutate.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">CheckAndMutate</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)</li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/CheckAndMutate.Builder.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">CheckAndMutate.Builder</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/CheckAndMutateResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">CheckAndMutateResult</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ChoreService</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/Cipher.html" title="class in org.apache.hadoop.hbase.io.crypto"><span class="typeNameLink">Cipher</span></a></li>
<li type="circle">org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/Client.html" title="class in org.apache.hadoop.hbase.rest.client"><span class="typeNameLink">Client</span></a></li>
<li type="circle">org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/Cluster.html" title="class in org.apache.hadoop.hbase.rest.client"><span class="typeNameLink">Cluster</span></a></li>
@@ -505,7 +504,6 @@
<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Result</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>)</li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">RowMutations</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)</li>
<li type="circle">org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfo.html" title="class in org.apache.hadoop.hbase.rsgroup"><span class="typeNameLink">RSGroupInfo</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ScheduledChore</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ServerName</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface [...]
<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Size.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Size</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>)</li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotDescription</span></a></li>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/CellComparator.html b/apidocs/src-html/org/apache/hadoop/hbase/CellComparator.html
index 2a4594b..afd6a97 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/CellComparator.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/CellComparator.html
@@ -28,145 +28,157 @@
<span class="sourceLineNo">020</span>import java.nio.ByteBuffer;<a name="line.20"></a>
<span class="sourceLineNo">021</span>import java.util.Comparator;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * Comparator for comparing cells and has some specialized methods that allows comparing individual<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * cell components like row, family, qualifier and timestamp<a name="line.28"></a>
-<span class="sourceLineNo">029</span> */<a name="line.29"></a>
-<span class="sourceLineNo">030</span>@InterfaceAudience.Public<a name="line.30"></a>
-<span class="sourceLineNo">031</span>@InterfaceStability.Evolving<a name="line.31"></a>
-<span class="sourceLineNo">032</span>public interface CellComparator extends Comparator<Cell> {<a name="line.32"></a>
-<span class="sourceLineNo">033</span> /**<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * A comparator for ordering cells in user-space tables. Useful when writing cells in sorted<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * order as necessary for bulk import (i.e. via MapReduce).<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * <p><a name="line.36"></a>
-<span class="sourceLineNo">037</span> * CAUTION: This comparator may provide inaccurate ordering for cells from system tables,<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * and should not be relied upon in that case.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> */<a name="line.39"></a>
-<span class="sourceLineNo">040</span> // For internal use, see CellComparatorImpl utility methods.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> static CellComparator getInstance() {<a name="line.41"></a>
-<span class="sourceLineNo">042</span> return CellComparatorImpl.COMPARATOR;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> }<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span> /**<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * Lexographically compares two cells. The key part of the cell is taken for comparison which<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * includes row, family, qualifier, timestamp and type<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * @param leftCell the left hand side cell<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * @param rightCell the right hand side cell<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * cells are equal<a name="line.51"></a>
-<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span> @Override<a name="line.53"></a>
-<span class="sourceLineNo">054</span> int compare(Cell leftCell, Cell rightCell);<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span> /**<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * Compare cells.<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * @param ignoreSequenceid True if we are to compare the key portion only and ignore<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * the sequenceid. Set to false to compare key and consider sequenceid.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * @return 0 if equal, -1 if a &lt; b, and +1 if a &gt; b.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span> int compare(Cell leftCell, Cell rightCell, boolean ignoreSequenceid);<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span> /**<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * Lexographically compares the rows of two cells.<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * @param leftCell the left hand side cell<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * @param rightCell the right hand side cell<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * cells are equal<a name="line.69"></a>
-<span class="sourceLineNo">070</span> */<a name="line.70"></a>
-<span class="sourceLineNo">071</span> int compareRows(Cell leftCell, Cell rightCell);<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span> /**<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Compares the row part of the cell with a simple plain byte[] like the<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * stopRow in Scan.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * @param cell the cell<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * @param bytes the byte[] representing the row to be compared with<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * @param offset the offset of the byte[]<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * @param length the length of the byte[]<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * cells are equal<a name="line.81"></a>
-<span class="sourceLineNo">082</span> */<a name="line.82"></a>
-<span class="sourceLineNo">083</span> int compareRows(Cell cell, byte[] bytes, int offset, int length);<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span> /**<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * @param row ByteBuffer that wraps a row; will read from current position and will reading all<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * remaining; will not disturb the ByteBuffer internal state.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * cells are equal<a name="line.89"></a>
-<span class="sourceLineNo">090</span> */<a name="line.90"></a>
-<span class="sourceLineNo">091</span> default int compareRows(ByteBuffer row, Cell cell) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.93"></a>
-<span class="sourceLineNo">094</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.94"></a>
-<span class="sourceLineNo">095</span> ((ByteBufferExtendedCell) cell).getRowPosition(),<a name="line.95"></a>
-<span class="sourceLineNo">096</span> cell.getRowLength());<a name="line.96"></a>
-<span class="sourceLineNo">097</span> }<a name="line.97"></a>
-<span class="sourceLineNo">098</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.98"></a>
-<span class="sourceLineNo">099</span> cell.getRowArray(), cell.getRowOffset(),<a name="line.99"></a>
-<span class="sourceLineNo">100</span> cell.getRowLength());<a name="line.100"></a>
-<span class="sourceLineNo">101</span> }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span> /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * Lexographically compares the two cells excluding the row part. It compares family, qualifier,<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * timestamp and the type<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * @param leftCell the left hand side cell<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * @param rightCell the right hand side cell<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * cells are equal<a name="line.109"></a>
-<span class="sourceLineNo">110</span> */<a name="line.110"></a>
-<span class="sourceLineNo">111</span> int compareWithoutRow(Cell leftCell, Cell rightCell);<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span> /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * Lexographically compares the families of the two cells<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * @param leftCell the left hand side cell<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * @param rightCell the right hand side cell<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * cells are equal<a name="line.118"></a>
-<span class="sourceLineNo">119</span> */<a name="line.119"></a>
-<span class="sourceLineNo">120</span> int compareFamilies(Cell leftCell, Cell rightCell);<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span> /**<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * Lexographically compares the qualifiers of the two cells<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * @param leftCell the left hand side cell<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * @param rightCell the right hand side cell<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * cells are equal<a name="line.127"></a>
-<span class="sourceLineNo">128</span> */<a name="line.128"></a>
-<span class="sourceLineNo">129</span> int compareQualifiers(Cell leftCell, Cell rightCell);<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span> /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * when we iterate over a memstore and newer versions are the first we trip over when reading from<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * a store file.<a name="line.135"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Comparator for comparing cells and has some specialized methods that allows comparing individual<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * cell components like row, family, qualifier and timestamp<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>@InterfaceAudience.Public<a name="line.31"></a>
+<span class="sourceLineNo">032</span>@InterfaceStability.Evolving<a name="line.32"></a>
+<span class="sourceLineNo">033</span>public interface CellComparator extends Comparator<Cell> {<a name="line.33"></a>
+<span class="sourceLineNo">034</span> /**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * A comparator for ordering cells in user-space tables. Useful when writing cells in sorted<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * order as necessary for bulk import (i.e. via MapReduce).<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * <p><a name="line.37"></a>
+<span class="sourceLineNo">038</span> * CAUTION: This comparator may provide inaccurate ordering for cells from system tables,<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * and should not be relied upon in that case.<a name="line.39"></a>
+<span class="sourceLineNo">040</span> */<a name="line.40"></a>
+<span class="sourceLineNo">041</span> // For internal use, see CellComparatorImpl utility methods.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> static CellComparator getInstance() {<a name="line.42"></a>
+<span class="sourceLineNo">043</span> return CellComparatorImpl.COMPARATOR;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span> /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * Lexographically compares two cells. The key part of the cell is taken for comparison which<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * includes row, family, qualifier, timestamp and type<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * @param leftCell the left hand side cell<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * @param rightCell the right hand side cell<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * cells are equal<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span> @Override<a name="line.54"></a>
+<span class="sourceLineNo">055</span> int compare(Cell leftCell, Cell rightCell);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span> /**<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * Compare cells.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * @param ignoreSequenceid True if we are to compare the key portion only and ignore<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * the sequenceid. Set to false to compare key and consider sequenceid.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * @return 0 if equal, -1 if a &lt; b, and +1 if a &gt; b.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> */<a name="line.62"></a>
+<span class="sourceLineNo">063</span> int compare(Cell leftCell, Cell rightCell, boolean ignoreSequenceid);<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span> /**<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * Lexographically compares the rows of two cells.<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * @param leftCell the left hand side cell<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * @param rightCell the right hand side cell<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * cells are equal<a name="line.70"></a>
+<span class="sourceLineNo">071</span> */<a name="line.71"></a>
+<span class="sourceLineNo">072</span> int compareRows(Cell leftCell, Cell rightCell);<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span> /**<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Compares the row part of the cell with a simple plain byte[] like the<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * stopRow in Scan.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * @param cell the cell<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * @param bytes the byte[] representing the row to be compared with<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * @param offset the offset of the byte[]<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * @param length the length of the byte[]<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * cells are equal<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span> int compareRows(Cell cell, byte[] bytes, int offset, int length);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span> /**<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * Compares two row bytes<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * @param leftRow the byte array of the left row<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * @param rightRow the byte array of the right row<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * @return greater than 0 if leftRow is bigger, less than 0 if rightRow is bigger, 0 if both<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * rows are equal<a name="line.91"></a>
+<span class="sourceLineNo">092</span> */<a name="line.92"></a>
+<span class="sourceLineNo">093</span> default int compareRows(byte[] leftRow, byte[] rightRow) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span> return Bytes.compareTo(leftRow, rightRow);<a name="line.94"></a>
+<span class="sourceLineNo">095</span> }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span> /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * @param row ByteBuffer that wraps a row; will read from current position and will reading all<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * remaining; will not disturb the ByteBuffer internal state.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * cells are equal<a name="line.101"></a>
+<span class="sourceLineNo">102</span> */<a name="line.102"></a>
+<span class="sourceLineNo">103</span> default int compareRows(ByteBuffer row, Cell cell) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.105"></a>
+<span class="sourceLineNo">106</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.106"></a>
+<span class="sourceLineNo">107</span> ((ByteBufferExtendedCell) cell).getRowPosition(),<a name="line.107"></a>
+<span class="sourceLineNo">108</span> cell.getRowLength());<a name="line.108"></a>
+<span class="sourceLineNo">109</span> }<a name="line.109"></a>
+<span class="sourceLineNo">110</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.110"></a>
+<span class="sourceLineNo">111</span> cell.getRowArray(), cell.getRowOffset(),<a name="line.111"></a>
+<span class="sourceLineNo">112</span> cell.getRowLength());<a name="line.112"></a>
+<span class="sourceLineNo">113</span> }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span> /**<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * Lexographically compares the two cells excluding the row part. It compares family, qualifier,<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * timestamp and the type<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * @param leftCell the left hand side cell<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * @param rightCell the right hand side cell<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * cells are equal<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span> int compareWithoutRow(Cell leftCell, Cell rightCell);<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span> /**<a name="line.125"></a>
+<span class="sourceLineNo">126</span> * Lexographically compares the families of the two cells<a name="line.126"></a>
+<span class="sourceLineNo">127</span> * @param leftCell the left hand side cell<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * @param rightCell the right hand side cell<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * cells are equal<a name="line.130"></a>
+<span class="sourceLineNo">131</span> */<a name="line.131"></a>
+<span class="sourceLineNo">132</span> int compareFamilies(Cell leftCell, Cell rightCell);<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span> /**<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * Lexographically compares the qualifiers of the two cells<a name="line.135"></a>
<span class="sourceLineNo">136</span> * @param leftCell the left hand side cell<a name="line.136"></a>
<span class="sourceLineNo">137</span> * @param rightCell the right hand side cell<a name="line.137"></a>
-<span class="sourceLineNo">138</span> * @return 1 if left's timestamp &lt; right's timestamp -1 if left's timestamp &gt; right's<a name="line.138"></a>
-<span class="sourceLineNo">139</span> * timestamp 0 if both timestamps are equal<a name="line.139"></a>
+<span class="sourceLineNo">138</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * cells are equal<a name="line.139"></a>
<span class="sourceLineNo">140</span> */<a name="line.140"></a>
-<span class="sourceLineNo">141</span> int compareTimestamps(Cell leftCell, Cell rightCell);<a name="line.141"></a>
+<span class="sourceLineNo">141</span> int compareQualifiers(Cell leftCell, Cell rightCell);<a name="line.141"></a>
<span class="sourceLineNo">142</span><a name="line.142"></a>
<span class="sourceLineNo">143</span> /**<a name="line.143"></a>
<span class="sourceLineNo">144</span> * Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of<a name="line.144"></a>
<span class="sourceLineNo">145</span> * newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found<a name="line.145"></a>
<span class="sourceLineNo">146</span> * when we iterate over a memstore and newer versions are the first we trip over when reading from<a name="line.146"></a>
<span class="sourceLineNo">147</span> * a store file.<a name="line.147"></a>
-<span class="sourceLineNo">148</span> * @param leftCellts the left cell's timestamp<a name="line.148"></a>
-<span class="sourceLineNo">149</span> * @param rightCellts the right cell's timestamp<a name="line.149"></a>
+<span class="sourceLineNo">148</span> * @param leftCell the left hand side cell<a name="line.148"></a>
+<span class="sourceLineNo">149</span> * @param rightCell the right hand side cell<a name="line.149"></a>
<span class="sourceLineNo">150</span> * @return 1 if left's timestamp &lt; right's timestamp -1 if left's timestamp &gt; right's<a name="line.150"></a>
<span class="sourceLineNo">151</span> * timestamp 0 if both timestamps are equal<a name="line.151"></a>
<span class="sourceLineNo">152</span> */<a name="line.152"></a>
-<span class="sourceLineNo">153</span> int compareTimestamps(long leftCellts, long rightCellts);<a name="line.153"></a>
+<span class="sourceLineNo">153</span> int compareTimestamps(Cell leftCell, Cell rightCell);<a name="line.153"></a>
<span class="sourceLineNo">154</span><a name="line.154"></a>
<span class="sourceLineNo">155</span> /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * @return A dumbed-down, fast comparator for hbase2 base-type, the {@link ByteBufferKeyValue}.<a name="line.156"></a>
-<span class="sourceLineNo">157</span> * Create an instance when you make a new memstore, when you know only BBKVs will be passed.<a name="line.157"></a>
-<span class="sourceLineNo">158</span> * Do not pollute with types other than BBKV if can be helped; the Comparator will slow.<a name="line.158"></a>
-<span class="sourceLineNo">159</span> */<a name="line.159"></a>
-<span class="sourceLineNo">160</span> Comparator getSimpleComparator();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>}<a name="line.161"></a>
+<span class="sourceLineNo">156</span> * Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found<a name="line.157"></a>
+<span class="sourceLineNo">158</span> * when we iterate over a memstore and newer versions are the first we trip over when reading from<a name="line.158"></a>
+<span class="sourceLineNo">159</span> * a store file.<a name="line.159"></a>
+<span class="sourceLineNo">160</span> * @param leftCellts the left cell's timestamp<a name="line.160"></a>
+<span class="sourceLineNo">161</span> * @param rightCellts the right cell's timestamp<a name="line.161"></a>
+<span class="sourceLineNo">162</span> * @return 1 if left's timestamp &lt; right's timestamp -1 if left's timestamp &gt; right's<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * timestamp 0 if both timestamps are equal<a name="line.163"></a>
+<span class="sourceLineNo">164</span> */<a name="line.164"></a>
+<span class="sourceLineNo">165</span> int compareTimestamps(long leftCellts, long rightCellts);<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span> /**<a name="line.167"></a>
+<span class="sourceLineNo">168</span> * @return A dumbed-down, fast comparator for hbase2 base-type, the {@link ByteBufferKeyValue}.<a name="line.168"></a>
+<span class="sourceLineNo">169</span> * Create an instance when you make a new memstore, when you know only BBKVs will be passed.<a name="line.169"></a>
+<span class="sourceLineNo">170</span> * Do not pollute with types other than BBKV if can be helped; the Comparator will slow.<a name="line.170"></a>
+<span class="sourceLineNo">171</span> */<a name="line.171"></a>
+<span class="sourceLineNo">172</span> Comparator getSimpleComparator();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>}<a name="line.173"></a>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/ChoreService.html b/apidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
deleted file mode 100644
index c6ccc03..0000000
--- a/apidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
+++ /dev/null
@@ -1,510 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements. See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership. The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License. You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import com.google.errorprone.annotations.RestrictedApi;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.HashMap;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.LinkedHashMap;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Map.Entry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.ScheduledFuture;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.ScheduledThreadPoolExecutor;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.ThreadFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.slf4j.Logger;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.slf4j.LoggerFactory;<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * ChoreService is a service that can be used to schedule instances of {@link ScheduledChore} to run<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * periodically while sharing threads. The ChoreService is backed by a<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * {@link ScheduledThreadPoolExecutor} whose core pool size changes dynamically depending on the<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * number of {@link ScheduledChore} scheduled. All of the threads in the core thread pool of the<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * underlying {@link ScheduledThreadPoolExecutor} are set to be daemon threads.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <p><a name="line.40"></a>
-<span class="sourceLineNo">041</span> * The ChoreService provides the ability to schedule, cancel, and trigger instances of<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * {@link ScheduledChore}. The ChoreService also provides the ability to check on the status of<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * scheduled chores. The number of threads used by the ChoreService changes based on the scheduling<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * load and whether or not the scheduled chores are executing on time. As more chores are scheduled,<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * there may be a need to increase the number of threads if it is noticed that chores are no longer<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * meeting their scheduled start times. On the other hand, as chores are cancelled, an attempt is<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * made to reduce the number of running threads to see if chores can still meet their start times<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * with a smaller thread pool.<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * <p><a name="line.49"></a>
-<span class="sourceLineNo">050</span> * When finished with a ChoreService it is good practice to call {@link ChoreService#shutdown()}.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Calling this method ensures that all scheduled chores are cancelled and cleaned up properly.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@InterfaceAudience.Public<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public class ChoreService {<a name="line.54"></a>
-<span class="sourceLineNo">055</span> private static final Logger LOG = LoggerFactory.getLogger(ChoreService.class);<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span> /**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * The minimum number of threads in the core pool of the underlying ScheduledThreadPoolExecutor<a name="line.58"></a>
-<span class="sourceLineNo">059</span> */<a name="line.59"></a>
-<span class="sourceLineNo">060</span> @InterfaceAudience.Private<a name="line.60"></a>
-<span class="sourceLineNo">061</span> public final static int MIN_CORE_POOL_SIZE = 1;<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span> /**<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * This thread pool is used to schedule all of the Chores<a name="line.64"></a>
-<span class="sourceLineNo">065</span> */<a name="line.65"></a>
-<span class="sourceLineNo">066</span> private final ScheduledThreadPoolExecutor scheduler;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span> /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * Maps chores to their futures. Futures are used to control a chore's schedule<a name="line.69"></a>
-<span class="sourceLineNo">070</span> */<a name="line.70"></a>
-<span class="sourceLineNo">071</span> private final HashMap<ScheduledChore, ScheduledFuture<?>> scheduledChores;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span> /**<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Maps chores to Booleans which indicate whether or not a chore has caused an increase in the<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * core pool size of the ScheduledThreadPoolExecutor. Each chore should only be allowed to<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * increase the core pool size by 1 (otherwise a single long running chore whose execution is<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * longer than its period would be able to spawn too many threads).<a name="line.77"></a>
-<span class="sourceLineNo">078</span> */<a name="line.78"></a>
-<span class="sourceLineNo">079</span> private final HashMap<ScheduledChore, Boolean> choresMissingStartTime;<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span> /**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * The coreThreadPoolPrefix is the prefix that will be applied to all threads within the<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * ScheduledThreadPoolExecutor. The prefix is typically related to the Server that the service is<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * running on. The prefix is useful because it allows us to monitor how the thread pool of a<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * particular service changes over time VIA thread dumps.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> */<a name="line.86"></a>
-<span class="sourceLineNo">087</span> private final String coreThreadPoolPrefix;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span> /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span> *<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * @param coreThreadPoolPrefix Prefix that will be applied to the Thread name of all threads<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * spawned by this service<a name="line.92"></a>
-<span class="sourceLineNo">093</span> */<a name="line.93"></a>
-<span class="sourceLineNo">094</span> @InterfaceAudience.Private<a name="line.94"></a>
-<span class="sourceLineNo">095</span> public ChoreService(final String coreThreadPoolPrefix) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span> this(coreThreadPoolPrefix, MIN_CORE_POOL_SIZE, false);<a name="line.96"></a>
-<span class="sourceLineNo">097</span> }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span> /**<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * @param coreThreadPoolPrefix Prefix that will be applied to the Thread name of all threads<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * spawned by this service<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * @param jitter Should chore service add some jitter for all of the scheduled chores. When set<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * to true this will add -10% to 10% jitter.<a name="line.103"></a>
-<span class="sourceLineNo">104</span> */<a name="line.104"></a>
-<span class="sourceLineNo">105</span> public ChoreService(final String coreThreadPoolPrefix, final boolean jitter) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span> this(coreThreadPoolPrefix, MIN_CORE_POOL_SIZE, jitter);<a name="line.106"></a>
-<span class="sourceLineNo">107</span> }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span> /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * @param coreThreadPoolPrefix Prefix that will be applied to the Thread name of all threads<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * spawned by this service<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * @param corePoolSize The initial size to set the core pool of the ScheduledThreadPoolExecutor<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * to during initialization. The default size is 1, but specifying a larger size may be<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * beneficial if you know that 1 thread will not be enough.<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * @param jitter Should chore service add some jitter for all of the scheduled chores. When set<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * to true this will add -10% to 10% jitter.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> */<a name="line.117"></a>
-<span class="sourceLineNo">118</span> public ChoreService(final String coreThreadPoolPrefix, int corePoolSize, boolean jitter) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> this.coreThreadPoolPrefix = coreThreadPoolPrefix;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> if (corePoolSize < MIN_CORE_POOL_SIZE) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span> corePoolSize = MIN_CORE_POOL_SIZE;<a name="line.121"></a>
-<span class="sourceLineNo">122</span> }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span> final ThreadFactory threadFactory = new ChoreServiceThreadFactory(coreThreadPoolPrefix);<a name="line.124"></a>
-<span class="sourceLineNo">125</span> if (jitter) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span> scheduler = new JitterScheduledThreadPoolExecutorImpl(corePoolSize, threadFactory, 0.1);<a name="line.126"></a>
-<span class="sourceLineNo">127</span> } else {<a name="line.127"></a>
-<span class="sourceLineNo">128</span> scheduler = new ScheduledThreadPoolExecutor(corePoolSize, threadFactory);<a name="line.128"></a>
-<span class="sourceLineNo">129</span> }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span> scheduler.setRemoveOnCancelPolicy(true);<a name="line.131"></a>
-<span class="sourceLineNo">132</span> scheduledChores = new HashMap<>();<a name="line.132"></a>
-<span class="sourceLineNo">133</span> choresMissingStartTime = new HashMap<>();<a name="line.133"></a>
-<span class="sourceLineNo">134</span> }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span> /**<a name="line.136"></a>
-<span class="sourceLineNo">137</span> * @param chore Chore to be scheduled. If the chore is already scheduled with another ChoreService<a name="line.137"></a>
-<span class="sourceLineNo">138</span> * instance, that schedule will be cancelled (i.e. a Chore can only ever be scheduled<a name="line.138"></a>
-<span class="sourceLineNo">139</span> * with a single ChoreService instance).<a name="line.139"></a>
-<span class="sourceLineNo">140</span> * @return true when the chore was successfully scheduled. false when the scheduling failed<a name="line.140"></a>
-<span class="sourceLineNo">141</span> * (typically occurs when a chore is scheduled during shutdown of service)<a name="line.141"></a>
-<span class="sourceLineNo">142</span> */<a name="line.142"></a>
-<span class="sourceLineNo">143</span> public boolean scheduleChore(ScheduledChore chore) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span> if (chore == null) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span> return false;<a name="line.145"></a>
-<span class="sourceLineNo">146</span> }<a name="line.146"></a>
-<span class="sourceLineNo">147</span> // always lock chore first to prevent dead lock<a name="line.147"></a>
-<span class="sourceLineNo">148</span> synchronized (chore) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span> synchronized (this) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span> try {<a name="line.150"></a>
-<span class="sourceLineNo">151</span> // Chores should only ever be scheduled with a single ChoreService. If the choreService<a name="line.151"></a>
-<span class="sourceLineNo">152</span> // is changing, cancel any existing schedules of this chore.<a name="line.152"></a>
-<span class="sourceLineNo">153</span> if (chore.getChoreService() == this) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span> LOG.warn("Chore {} has already been scheduled with us", chore);<a name="line.154"></a>
-<span class="sourceLineNo">155</span> return false;<a name="line.155"></a>
-<span class="sourceLineNo">156</span> }<a name="line.156"></a>
-<span class="sourceLineNo">157</span> if (chore.getPeriod() <= 0) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span> LOG.info("Chore {} is disabled because its period is not positive.", chore);<a name="line.158"></a>
-<span class="sourceLineNo">159</span> return false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span> }<a name="line.160"></a>
-<span class="sourceLineNo">161</span> LOG.info("Chore {} is enabled.", chore);<a name="line.161"></a>
-<span class="sourceLineNo">162</span> if (chore.getChoreService() != null) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span> LOG.info("Cancel chore {} from its previous service", chore);<a name="line.163"></a>
-<span class="sourceLineNo">164</span> chore.getChoreService().cancelChore(chore);<a name="line.164"></a>
-<span class="sourceLineNo">165</span> }<a name="line.165"></a>
-<span class="sourceLineNo">166</span> chore.setChoreService(this);<a name="line.166"></a>
-<span class="sourceLineNo">167</span> ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(chore, chore.getInitialDelay(),<a name="line.167"></a>
-<span class="sourceLineNo">168</span> chore.getPeriod(), chore.getTimeUnit());<a name="line.168"></a>
-<span class="sourceLineNo">169</span> scheduledChores.put(chore, future);<a name="line.169"></a>
-<span class="sourceLineNo">170</span> return true;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> } catch (Exception e) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span> LOG.error("Could not successfully schedule chore: {}", chore.getName(), e);<a name="line.172"></a>
-<span class="sourceLineNo">173</span> return false;<a name="line.173"></a>
-<span class="sourceLineNo">174</span> }<a name="line.174"></a>
-<span class="sourceLineNo">175</span> }<a name="line.175"></a>
-<span class="sourceLineNo">176</span> }<a name="line.176"></a>
-<span class="sourceLineNo">177</span> }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span> /**<a name="line.179"></a>
-<span class="sourceLineNo">180</span> * @param chore The Chore to be rescheduled. If the chore is not scheduled with this ChoreService<a name="line.180"></a>
-<span class="sourceLineNo">181</span> * yet then this call is equivalent to a call to scheduleChore.<a name="line.181"></a>
-<span class="sourceLineNo">182</span> */<a name="line.182"></a>
-<span class="sourceLineNo">183</span> private void rescheduleChore(ScheduledChore chore) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span> if (scheduledChores.containsKey(chore)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span> ScheduledFuture<?> future = scheduledChores.get(chore);<a name="line.185"></a>
-<span class="sourceLineNo">186</span> future.cancel(false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span> }<a name="line.187"></a>
-<span class="sourceLineNo">188</span> ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(chore, chore.getInitialDelay(),<a name="line.188"></a>
-<span class="sourceLineNo">189</span> chore.getPeriod(), chore.getTimeUnit());<a name="line.189"></a>
-<span class="sourceLineNo">190</span> scheduledChores.put(chore, future);<a name="line.190"></a>
-<span class="sourceLineNo">191</span> }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span> /**<a name="line.193"></a>
-<span class="sourceLineNo">194</span> * Cancel any ongoing schedules that this chore has with the implementer of this interface.<a name="line.194"></a>
-<span class="sourceLineNo">195</span> * <p/><a name="line.195"></a>
-<span class="sourceLineNo">196</span> * Call {@link ScheduledChore#cancel()} to cancel a {@link ScheduledChore}, in<a name="line.196"></a>
-<span class="sourceLineNo">197</span> * {@link ScheduledChore#cancel()} method we will call this method to remove the<a name="line.197"></a>
-<span class="sourceLineNo">198</span> * {@link ScheduledChore} from this {@link ChoreService}.<a name="line.198"></a>
-<span class="sourceLineNo">199</span> */<a name="line.199"></a>
-<span class="sourceLineNo">200</span> @RestrictedApi(explanation = "Should only be called in ScheduledChore", link = "",<a name="line.200"></a>
-<span class="sourceLineNo">201</span> allowedOnPath = ".*/org/apache/hadoop/hbase/(ScheduledChore|ChoreService).java")<a name="line.201"></a>
-<span class="sourceLineNo">202</span> synchronized void cancelChore(ScheduledChore chore) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> cancelChore(chore, true);<a name="line.203"></a>
-<span class="sourceLineNo">204</span> }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span> /**<a name="line.206"></a>
-<span class="sourceLineNo">207</span> * Cancel any ongoing schedules that this chore has with the implementer of this interface.<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * <p/><a name="line.208"></a>
-<span class="sourceLineNo">209</span> * Call {@link ScheduledChore#cancel(boolean)} to cancel a {@link ScheduledChore}, in<a name="line.209"></a>
-<span class="sourceLineNo">210</span> * {@link ScheduledChore#cancel(boolean)} method we will call this method to remove the<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * {@link ScheduledChore} from this {@link ChoreService}.<a name="line.211"></a>
-<span class="sourceLineNo">212</span> */<a name="line.212"></a>
-<span class="sourceLineNo">213</span> @RestrictedApi(explanation = "Should only be called in ScheduledChore", link = "",<a name="line.213"></a>
-<span class="sourceLineNo">214</span> allowedOnPath = ".*/org/apache/hadoop/hbase/(ScheduledChore|ChoreService).java")<a name="line.214"></a>
-<span class="sourceLineNo">215</span> synchronized void cancelChore(ScheduledChore chore, boolean mayInterruptIfRunning) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span> if (scheduledChores.containsKey(chore)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span> ScheduledFuture<?> future = scheduledChores.get(chore);<a name="line.217"></a>
-<span class="sourceLineNo">218</span> future.cancel(mayInterruptIfRunning);<a name="line.218"></a>
-<span class="sourceLineNo">219</span> scheduledChores.remove(chore);<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span> // Removing a chore that was missing its start time means it may be possible<a name="line.221"></a>
-<span class="sourceLineNo">222</span> // to reduce the number of threads<a name="line.222"></a>
-<span class="sourceLineNo">223</span> if (choresMissingStartTime.containsKey(chore)) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span> choresMissingStartTime.remove(chore);<a name="line.224"></a>
-<span class="sourceLineNo">225</span> requestCorePoolDecrease();<a name="line.225"></a>
-<span class="sourceLineNo">226</span> }<a name="line.226"></a>
-<span class="sourceLineNo">227</span> }<a name="line.227"></a>
-<span class="sourceLineNo">228</span> }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span> /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * @return true when the chore is scheduled with the implementer of this interface<a name="line.231"></a>
-<span class="sourceLineNo">232</span> */<a name="line.232"></a>
-<span class="sourceLineNo">233</span> @InterfaceAudience.Private<a name="line.233"></a>
-<span class="sourceLineNo">234</span> public synchronized boolean isChoreScheduled(ScheduledChore chore) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span> return chore != null && scheduledChores.containsKey(chore)<a name="line.235"></a>
-<span class="sourceLineNo">236</span> && !scheduledChores.get(chore).isDone();<a name="line.236"></a>
-<span class="sourceLineNo">237</span> }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span> /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * This method tries to execute the chore immediately. If the chore is executing at the time of<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * this call, the chore will begin another execution as soon as the current execution finishes<a name="line.241"></a>
-<span class="sourceLineNo">242</span> */<a name="line.242"></a>
-<span class="sourceLineNo">243</span> @RestrictedApi(explanation = "Should only be called in ScheduledChore", link = "",<a name="line.243"></a>
-<span class="sourceLineNo">244</span> allowedOnPath = ".*/org/apache/hadoop/hbase/ScheduledChore.java")<a name="line.244"></a>
-<span class="sourceLineNo">245</span> synchronized void triggerNow(ScheduledChore chore) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> assert chore.getChoreService() == this;<a name="line.246"></a>
-<span class="sourceLineNo">247</span> rescheduleChore(chore);<a name="line.247"></a>
-<span class="sourceLineNo">248</span> }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span> /**<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * @return number of chores that this service currently has scheduled<a name="line.251"></a>
-<span class="sourceLineNo">252</span> */<a name="line.252"></a>
-<span class="sourceLineNo">253</span> int getNumberOfScheduledChores() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span> return scheduledChores.size();<a name="line.254"></a>
-<span class="sourceLineNo">255</span> }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span> /**<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * @return number of chores that this service currently has scheduled that are missing their<a name="line.258"></a>
-<span class="sourceLineNo">259</span> * scheduled start time<a name="line.259"></a>
-<span class="sourceLineNo">260</span> */<a name="line.260"></a>
-<span class="sourceLineNo">261</span> int getNumberOfChoresMissingStartTime() {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> return choresMissingStartTime.size();<a name="line.262"></a>
-<span class="sourceLineNo">263</span> }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span> /**<a name="line.265"></a>
-<span class="sourceLineNo">266</span> * @return number of threads in the core pool of the underlying ScheduledThreadPoolExecutor<a name="line.266"></a>
-<span class="sourceLineNo">267</span> */<a name="line.267"></a>
-<span class="sourceLineNo">268</span> int getCorePoolSize() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span> return scheduler.getCorePoolSize();<a name="line.269"></a>
-<span class="sourceLineNo">270</span> }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span> /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span> * Custom ThreadFactory used with the ScheduledThreadPoolExecutor so that all the threads are<a name="line.273"></a>
-<span class="sourceLineNo">274</span> * daemon threads, and thus, don't prevent the JVM from shutting down<a name="line.274"></a>
-<span class="sourceLineNo">275</span> */<a name="line.275"></a>
-<span class="sourceLineNo">276</span> static class ChoreServiceThreadFactory implements ThreadFactory {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> private final String threadPrefix;<a name="line.277"></a>
-<span class="sourceLineNo">278</span> private final static String THREAD_NAME_SUFFIX = ".Chore.";<a name="line.278"></a>
-<span class="sourceLineNo">279</span> private AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span> /**<a name="line.281"></a>
-<span class="sourceLineNo">282</span> * @param threadPrefix The prefix given to all threads created by this factory<a name="line.282"></a>
-<span class="sourceLineNo">283</span> */<a name="line.283"></a>
-<span class="sourceLineNo">284</span> public ChoreServiceThreadFactory(final String threadPrefix) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span> this.threadPrefix = threadPrefix;<a name="line.285"></a>
-<span class="sourceLineNo">286</span> }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span> @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span> public Thread newThread(Runnable r) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span> Thread thread =<a name="line.290"></a>
-<span class="sourceLineNo">291</span> new Thread(r, threadPrefix + THREAD_NAME_SUFFIX + threadNumber.getAndIncrement());<a name="line.291"></a>
-<span class="sourceLineNo">292</span> thread.setDaemon(true);<a name="line.292"></a>
-<span class="sourceLineNo">293</span> return thread;<a name="line.293"></a>
-<span class="sourceLineNo">294</span> }<a name="line.294"></a>
-<span class="sourceLineNo">295</span> }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span> /**<a name="line.297"></a>
-<span class="sourceLineNo">298</span> * Represents a request to increase the number of core pool threads. Typically a request<a name="line.298"></a>
-<span class="sourceLineNo">299</span> * originates from the fact that the current core pool size is not sufficient to service all of<a name="line.299"></a>
-<span class="sourceLineNo">300</span> * the currently running Chores<a name="line.300"></a>
-<span class="sourceLineNo">301</span> * @return true when the request to increase the core pool size succeeds<a name="line.301"></a>
-<span class="sourceLineNo">302</span> */<a name="line.302"></a>
-<span class="sourceLineNo">303</span> private synchronized boolean requestCorePoolIncrease() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span> // There is no point in creating more threads than scheduledChores.size since scheduled runs<a name="line.304"></a>
-<span class="sourceLineNo">305</span> // of the same chore cannot run concurrently (i.e. happen-before behavior is enforced<a name="line.305"></a>
-<span class="sourceLineNo">306</span> // amongst occurrences of the same chore).<a name="line.306"></a>
-<span class="sourceLineNo">307</span> if (scheduler.getCorePoolSize() < scheduledChores.size()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span> scheduler.setCorePoolSize(scheduler.getCorePoolSize() + 1);<a name="line.308"></a>
-<span class="sourceLineNo">309</span> printChoreServiceDetails("requestCorePoolIncrease");<a name="line.309"></a>
-<span class="sourceLineNo">310</span> return true;<a name="line.310"></a>
-<span class="sourceLineNo">311</span> }<a name="line.311"></a>
-<span class="sourceLineNo">312</span> return false;<a name="line.312"></a>
-<span class="sourceLineNo">313</span> }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span> /**<a name="line.315"></a>
-<span class="sourceLineNo">316</span> * Represents a request to decrease the number of core pool threads. Typically a request<a name="line.316"></a>
-<span class="sourceLineNo">317</span> * originates from the fact that the current core pool size is more than sufficient to service the<a name="line.317"></a>
-<span class="sourceLineNo">318</span> * running Chores.<a name="line.318"></a>
-<span class="sourceLineNo">319</span> */<a name="line.319"></a>
-<span class="sourceLineNo">320</span> private synchronized void requestCorePoolDecrease() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span> if (scheduler.getCorePoolSize() > MIN_CORE_POOL_SIZE) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> scheduler.setCorePoolSize(scheduler.getCorePoolSize() - 1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span> printChoreServiceDetails("requestCorePoolDecrease");<a name="line.323"></a>
-<span class="sourceLineNo">324</span> }<a name="line.324"></a>
-<span class="sourceLineNo">325</span> }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span> /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span> * A callback that tells the implementer of this interface that one of the scheduled chores is<a name="line.328"></a>
-<span class="sourceLineNo">329</span> * missing its start time. The implication of a chore missing its start time is that the service's<a name="line.329"></a>
-<span class="sourceLineNo">330</span> * current means of scheduling may not be sufficient to handle the number of ongoing chores (the<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * other explanation is that the chore's execution time is greater than its scheduled period). The<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * service should try to increase its concurrency when this callback is received.<a name="line.332"></a>
-<span class="sourceLineNo">333</span> * @param chore The chore that missed its start time<a name="line.333"></a>
-<span class="sourceLineNo">334</span> */<a name="line.334"></a>
-<span class="sourceLineNo">335</span> @RestrictedApi(explanation = "Should only be called in ScheduledChore", link = "",<a name="line.335"></a>
-<span class="sourceLineNo">336</span> allowedOnPath = ".*/org/apache/hadoop/hbase/ScheduledChore.java")<a name="line.336"></a>
-<span class="sourceLineNo">337</span> synchronized void onChoreMissedStartTime(ScheduledChore chore) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span> if (!scheduledChores.containsKey(chore)) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span> return;<a name="line.339"></a>
-<span class="sourceLineNo">340</span> }<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span> // If the chore has not caused an increase in the size of the core thread pool then request an<a name="line.342"></a>
-<span class="sourceLineNo">343</span> // increase. This allows each chore missing its start time to increase the core pool size by<a name="line.343"></a>
-<span class="sourceLineNo">344</span> // at most 1.<a name="line.344"></a>
-<span class="sourceLineNo">345</span> if (!choresMissingStartTime.containsKey(chore) || !choresMissingStartTime.get(chore)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span> choresMissingStartTime.put(chore, requestCorePoolIncrease());<a name="line.346"></a>
-<span class="sourceLineNo">347</span> }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span> // Must reschedule the chore to prevent unnecessary delays of chores in the scheduler. If<a name="line.349"></a>
-<span class="sourceLineNo">350</span> // the chore is NOT rescheduled, future executions of this chore will be delayed more and<a name="line.350"></a>
-<span class="sourceLineNo">351</span> // more on each iteration. This hurts us because the ScheduledThreadPoolExecutor allocates<a name="line.351"></a>
-<span class="sourceLineNo">352</span> // idle threads to chores based on how delayed they are.<a name="line.352"></a>
-<span class="sourceLineNo">353</span> rescheduleChore(chore);<a name="line.353"></a>
-<span class="sourceLineNo">354</span> printChoreDetails("onChoreMissedStartTime", chore);<a name="line.354"></a>
-<span class="sourceLineNo">355</span> }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span> /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span> * shutdown the service. Any chores that are scheduled for execution will be cancelled. Any chores<a name="line.358"></a>
-<span class="sourceLineNo">359</span> * in the middle of execution will be interrupted and shutdown. This service will be unusable<a name="line.359"></a>
-<span class="sourceLineNo">360</span> * after this method has been called (i.e. future scheduling attempts will fail).<a name="line.360"></a>
-<span class="sourceLineNo">361</span> * <p/><a name="line.361"></a>
-<span class="sourceLineNo">362</span> * Notice that, this will only clean the chore from this ChoreService but you could still schedule<a name="line.362"></a>
-<span class="sourceLineNo">363</span> * the chore with other ChoreService.<a name="line.363"></a>
-<span class="sourceLineNo">364</span> */<a name="line.364"></a>
-<span class="sourceLineNo">365</span> public synchronized void shutdown() {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> if (isShutdown()) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span> return;<a name="line.367"></a>
-<span class="sourceLineNo">368</span> }<a name="line.368"></a>
-<span class="sourceLineNo">369</span> scheduler.shutdownNow();<a name="line.369"></a>
-<span class="sourceLineNo">370</span> LOG.info("Chore service for: {} had {} on shutdown", coreThreadPoolPrefix,<a name="line.370"></a>
-<span class="sourceLineNo">371</span> scheduledChores.keySet());<a name="line.371"></a>
-<span class="sourceLineNo">372</span> cancelAllChores(true);<a name="line.372"></a>
-<span class="sourceLineNo">373</span> scheduledChores.clear();<a name="line.373"></a>
-<span class="sourceLineNo">374</span> choresMissingStartTime.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span> }<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span> /**<a name="line.377"></a>
-<span class="sourceLineNo">378</span> * @return true when the service is shutdown and thus cannot be used anymore<a name="line.378"></a>
-<span class="sourceLineNo">379</span> */<a name="line.379"></a>
-<span class="sourceLineNo">380</span> public boolean isShutdown() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span> return scheduler.isShutdown();<a name="line.381"></a>
-<span class="sourceLineNo">382</span> }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span> /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span> * @return true when the service is shutdown and all threads have terminated<a name="line.385"></a>
-<span class="sourceLineNo">386</span> */<a name="line.386"></a>
-<span class="sourceLineNo">387</span> public boolean isTerminated() {<a name="line.387"></a>
-<span class="sourceLineNo">388</span> return scheduler.isTerminated();<a name="line.388"></a>
-<span class="sourceLineNo">389</span> }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span> private void cancelAllChores(final boolean mayInterruptIfRunning) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span> // Build list of chores to cancel so we can iterate through a set that won't change<a name="line.392"></a>
-<span class="sourceLineNo">393</span> // as chores are cancelled. If we tried to cancel each chore while iterating through<a name="line.393"></a>
-<span class="sourceLineNo">394</span> // keySet the results would be undefined because the keySet would be changing<a name="line.394"></a>
-<span class="sourceLineNo">395</span> ArrayList<ScheduledChore> choresToCancel = new ArrayList<>(scheduledChores.keySet());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span> for (ScheduledChore chore : choresToCancel) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span> cancelChore(chore, mayInterruptIfRunning);<a name="line.398"></a>
-<span class="sourceLineNo">399</span> }<a name="line.399"></a>
-<span class="sourceLineNo">400</span> }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span> /**<a name="line.402"></a>
-<span class="sourceLineNo">403</span> * Prints a summary of important details about the chore. Used for debugging purposes<a name="line.403"></a>
-<span class="sourceLineNo">404</span> */<a name="line.404"></a>
-<span class="sourceLineNo">405</span> private void printChoreDetails(final String header, ScheduledChore chore) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span> if (!LOG.isTraceEnabled()) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span> return;<a name="line.407"></a>
-<span class="sourceLineNo">408</span> }<a name="line.408"></a>
-<span class="sourceLineNo">409</span> LinkedHashMap<String, String> output = new LinkedHashMap<>();<a name="line.409"></a>
-<span class="sourceLineNo">410</span> output.put(header, "");<a name="line.410"></a>
-<span class="sourceLineNo">411</span> output.put("Chore name: ", chore.getName());<a name="line.411"></a>
-<span class="sourceLineNo">412</span> output.put("Chore period: ", Integer.toString(chore.getPeriod()));<a name="line.412"></a>
-<span class="sourceLineNo">413</span> output.put("Chore timeBetweenRuns: ", Long.toString(chore.getTimeBetweenRuns()));<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span> for (Entry<String, String> entry : output.entrySet()) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span> LOG.trace(entry.getKey() + entry.getValue());<a name="line.416"></a>
-<span class="sourceLineNo">417</span> }<a name="line.417"></a>
-<span class="sourceLineNo">418</span> }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span> * Prints a summary of important details about the service. Used for debugging purposes<a name="line.421"></a>
-<span class="sourceLineNo">422</span> */<a name="line.422"></a>
-<span class="sourceLineNo">423</span> private void printChoreServiceDetails(final String header) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span> if (!LOG.isTraceEnabled()) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span> return;<a name="line.425"></a>
-<span class="sourceLineNo">426</span> }<a name="line.426"></a>
-<span class="sourceLineNo">427</span> LinkedHashMap<String, String> output = new LinkedHashMap<>();<a name="line.427"></a>
-<span class="sourceLineNo">428</span> output.put(header, "");<a name="line.428"></a>
-<span class="sourceLineNo">429</span> output.put("ChoreService corePoolSize: ", Integer.toString(getCorePoolSize()));<a name="line.429"></a>
-<span class="sourceLineNo">430</span> output.put("ChoreService scheduledChores: ", Integer.toString(getNumberOfScheduledChores()));<a name="line.430"></a>
-<span class="sourceLineNo">431</span> output.put("ChoreService missingStartTimeCount: ",<a name="line.431"></a>
-<span class="sourceLineNo">432</span> Integer.toString(getNumberOfChoresMissingStartTime()));<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span> for (Entry<String, String> entry : output.entrySet()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span> LOG.trace(entry.getKey() + entry.getValue());<a name="line.435"></a>
-<span class="sourceLineNo">436</span> }<a name="line.436"></a>
-<span class="sourceLineNo">437</span> }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>}<a name="line.438"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html b/apidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html
deleted file mode 100644
index 10020c9..0000000
--- a/apidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html
+++ /dev/null
@@ -1,430 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements. See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership. The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License. You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import com.google.errorprone.annotations.RestrictedApi;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.concurrent.ScheduledThreadPoolExecutor;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.concurrent.TimeUnit;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.slf4j.Logger;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.slf4j.LoggerFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * ScheduledChore is a task performed on a period in hbase. ScheduledChores become active once<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * scheduled with a {@link ChoreService} via {@link ChoreService#scheduleChore(ScheduledChore)}. The<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * chore is run in a {@link ScheduledThreadPoolExecutor} and competes with other ScheduledChores for<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * access to the threads in the core thread pool. If an unhandled exception occurs, the chore<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * cancellation is logged. Implementers should consider whether or not the Chore will be able to<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * execute within the defined period. It is bad practice to define a ScheduledChore whose execution<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * time exceeds its period since it will try to hog one of the threads in the {@link ChoreService}'s<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * thread pool.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * <p/><a name="line.39"></a>
-<span class="sourceLineNo">040</span> * Don't subclass ScheduledChore if the task relies on being woken up for something to do, such as<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * an entry being added to a queue, etc.<a name="line.41"></a>
-<span class="sourceLineNo">042</span> */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>@InterfaceAudience.Public<a name="line.43"></a>
-<span class="sourceLineNo">044</span>public abstract class ScheduledChore implements Runnable {<a name="line.44"></a>
-<span class="sourceLineNo">045</span> private static final Logger LOG = LoggerFactory.getLogger(ScheduledChore.class);<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span> private final String name;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span> /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * Default values for scheduling parameters should they be excluded during construction<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span> private final static TimeUnit DEFAULT_TIME_UNIT = TimeUnit.MILLISECONDS;<a name="line.52"></a>
-<span class="sourceLineNo">053</span> private final static long DEFAULT_INITIAL_DELAY = 0;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span> /**<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * Scheduling parameters. Used by ChoreService when scheduling the chore to run periodically<a name="line.56"></a>
-<span class="sourceLineNo">057</span> */<a name="line.57"></a>
-<span class="sourceLineNo">058</span> private final int period; // in TimeUnit units<a name="line.58"></a>
-<span class="sourceLineNo">059</span> private final TimeUnit timeUnit;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> private final long initialDelay; // in TimeUnit units<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span> /**<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * Interface to the ChoreService that this ScheduledChore is scheduled with. null if the chore is<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * not scheduled.<a name="line.64"></a>
-<span class="sourceLineNo">065</span> */<a name="line.65"></a>
-<span class="sourceLineNo">066</span> private ChoreService choreService;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span> /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * Variables that encapsulate the meaningful state information<a name="line.69"></a>
-<span class="sourceLineNo">070</span> */<a name="line.70"></a>
-<span class="sourceLineNo">071</span> private long timeOfLastRun = -1; // system time millis<a name="line.71"></a>
-<span class="sourceLineNo">072</span> private long timeOfThisRun = -1; // system time millis<a name="line.72"></a>
-<span class="sourceLineNo">073</span> private boolean initialChoreComplete = false;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span> /**<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * A means by which a ScheduledChore can be stopped. Once a chore recognizes that it has been<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * stopped, it will cancel itself. This is particularly useful in the case where a single stopper<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * instance is given to multiple chores. In such a case, a single {@link Stoppable#stop(String)}<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * command can cause many chores to stop together.<a name="line.79"></a>
-<span class="sourceLineNo">080</span> */<a name="line.80"></a>
-<span class="sourceLineNo">081</span> private final Stoppable stopper;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span> /**<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * This constructor is for test only. It allows us to create an object and to call chore() on it.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> */<a name="line.85"></a>
-<span class="sourceLineNo">086</span> @InterfaceAudience.Private<a name="line.86"></a>
-<span class="sourceLineNo">087</span> protected ScheduledChore() {<a name="line.87"></a>
-<span class="sourceLineNo">088</span> this("TestChore", null, 0, DEFAULT_INITIAL_DELAY, DEFAULT_TIME_UNIT);<a name="line.88"></a>
-<span class="sourceLineNo">089</span> }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span> /**<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * @param name Name assigned to Chore. Useful for identification amongst chores of the same type<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * @param stopper When {@link Stoppable#isStopped()} is true, this chore will cancel and cleanup<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * @param period Period in millis with which this Chore repeats execution when scheduled.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> */<a name="line.95"></a>
-<span class="sourceLineNo">096</span> public ScheduledChore(final String name, Stoppable stopper, final int period) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span> this(name, stopper, period, DEFAULT_INITIAL_DELAY);<a name="line.97"></a>
-<span class="sourceLineNo">098</span> }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span> /**<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * @param name Name assigned to Chore. Useful for identification amongst chores of the same type<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * @param stopper When {@link Stoppable#isStopped()} is true, this chore will cancel and cleanup<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * @param period Period in millis with which this Chore repeats execution when scheduled.<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * @param initialDelay Delay before this Chore begins to execute once it has been scheduled. A<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * value of 0 means the chore will begin to execute immediately. Negative delays are<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * invalid and will be corrected to a value of 0.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> */<a name="line.107"></a>
-<span class="sourceLineNo">108</span> public ScheduledChore(final String name, Stoppable stopper, final int period,<a name="line.108"></a>
-<span class="sourceLineNo">109</span> final long initialDelay) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span> this(name, stopper, period, initialDelay, DEFAULT_TIME_UNIT);<a name="line.110"></a>
-<span class="sourceLineNo">111</span> }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span> /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * @param name Name assigned to Chore. Useful for identification amongst chores of the same type<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * @param stopper When {@link Stoppable#isStopped()} is true, this chore will cancel and cleanup<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * @param period Period in Timeunit unit with which this Chore repeats execution when scheduled.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * @param initialDelay Delay in Timeunit unit before this Chore begins to execute once it has been<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * scheduled. A value of 0 means the chore will begin to execute immediately. Negative<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * delays are invalid and will be corrected to a value of 0.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * @param unit The unit that is used to measure period and initialDelay<a name="line.120"></a>
-<span class="sourceLineNo">121</span> */<a name="line.121"></a>
-<span class="sourceLineNo">122</span> public ScheduledChore(final String name, Stoppable stopper, final int period,<a name="line.122"></a>
-<span class="sourceLineNo">123</span> final long initialDelay, final TimeUnit unit) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> this.name = name;<a name="line.124"></a>
-<span class="sourceLineNo">125</span> this.stopper = stopper;<a name="line.125"></a>
-<span class="sourceLineNo">126</span> this.period = period;<a name="line.126"></a>
-<span class="sourceLineNo">127</span> this.initialDelay = initialDelay < 0 ? 0 : initialDelay;<a name="line.127"></a>
-<span class="sourceLineNo">128</span> this.timeUnit = unit;<a name="line.128"></a>
-<span class="sourceLineNo">129</span> }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span> /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * @see java.lang.Runnable#run()<a name="line.132"></a>
-<span class="sourceLineNo">133</span> */<a name="line.133"></a>
-<span class="sourceLineNo">134</span> @Override<a name="line.134"></a>
-<span class="sourceLineNo">135</span> public void run() {<a name="line.135"></a>
-<span class="sourceLineNo">136</span> updateTimeTrackingBeforeRun();<a name="line.136"></a>
-<span class="sourceLineNo">137</span> if (missedStartTime() && isScheduled()) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span> onChoreMissedStartTime();<a name="line.138"></a>
-<span class="sourceLineNo">139</span> LOG.info("Chore: {} missed its start time", getName());<a name="line.139"></a>
-<span class="sourceLineNo">140</span> } else if (stopper.isStopped() || !isScheduled()) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span> // call shutdown here to cleanup the ScheduledChore.<a name="line.141"></a>
-<span class="sourceLineNo">142</span> shutdown(false);<a name="line.142"></a>
-<span class="sourceLineNo">143</span> LOG.info("Chore: {} was stopped", getName());<a name="line.143"></a>
-<span class="sourceLineNo">144</span> } else {<a name="line.144"></a>
-<span class="sourceLineNo">145</span> try {<a name="line.145"></a>
-<span class="sourceLineNo">146</span> // TODO: Histogram metrics per chore name.<a name="line.146"></a>
-<span class="sourceLineNo">147</span> // For now, just measure and log if DEBUG level logging is enabled.<a name="line.147"></a>
-<span class="sourceLineNo">148</span> long start = 0;<a name="line.148"></a>
-<span class="sourceLineNo">149</span> if (LOG.isDebugEnabled()) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span> start = System.nanoTime();<a name="line.150"></a>
-<span class="sourceLineNo">151</span> }<a name="line.151"></a>
-<span class="sourceLineNo">152</span> if (!initialChoreComplete) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span> initialChoreComplete = initialChore();<a name="line.153"></a>
-<span class="sourceLineNo">154</span> } else {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> chore();<a name="line.155"></a>
-<span class="sourceLineNo">156</span> }<a name="line.156"></a>
-<span class="sourceLineNo">157</span> if (LOG.isDebugEnabled() && start > 0) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span> long end = System.nanoTime();<a name="line.158"></a>
-<span class="sourceLineNo">159</span> LOG.debug("{} execution time: {} ms.", getName(),<a name="line.159"></a>
-<span class="sourceLineNo">160</span> TimeUnit.NANOSECONDS.toMillis(end - start));<a name="line.160"></a>
-<span class="sourceLineNo">161</span> }<a name="line.161"></a>
-<span class="sourceLineNo">162</span> } catch (Throwable t) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span> LOG.error("Caught error", t);<a name="line.163"></a>
-<span class="sourceLineNo">164</span> if (this.stopper.isStopped()) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> cancel(false);<a name="line.165"></a>
-<span class="sourceLineNo">166</span> }<a name="line.166"></a>
-<span class="sourceLineNo">167</span> }<a name="line.167"></a>
-<span class="sourceLineNo">168</span> }<a name="line.168"></a>
-<span class="sourceLineNo">169</span> }<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span> /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span> * Update our time tracking members. Called at the start of an execution of this chore's run()<a name="line.172"></a>
-<span class="sourceLineNo">173</span> * method so that a correct decision can be made as to whether or not we missed the start time<a name="line.173"></a>
-<span class="sourceLineNo">174</span> */<a name="line.174"></a>
-<span class="sourceLineNo">175</span> private synchronized void updateTimeTrackingBeforeRun() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span> timeOfLastRun = timeOfThisRun;<a name="line.176"></a>
-<span class="sourceLineNo">177</span> timeOfThisRun = EnvironmentEdgeManager.currentTime();<a name="line.177"></a>
-<span class="sourceLineNo">178</span> }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span> /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span> * Notify the ChoreService that this chore has missed its start time. Allows the ChoreService to<a name="line.181"></a>
-<span class="sourceLineNo">182</span> * make the decision as to whether or not it would be worthwhile to increase the number of core<a name="line.182"></a>
-<span class="sourceLineNo">183</span> * pool threads<a name="line.183"></a>
-<span class="sourceLineNo">184</span> */<a name="line.184"></a>
-<span class="sourceLineNo">185</span> private synchronized void onChoreMissedStartTime() {<a name="line.185"></a>
-<span class="sourceLineNo">186</span> if (choreService != null) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span> choreService.onChoreMissedStartTime(this);<a name="line.187"></a>
-<span class="sourceLineNo">188</span> }<a name="line.188"></a>
-<span class="sourceLineNo">189</span> }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span> /**<a name="line.191"></a>
-<span class="sourceLineNo">192</span> * @return How long in millis has it been since this chore last run. Useful for checking if the<a name="line.192"></a>
-<span class="sourceLineNo">193</span> * chore has missed its scheduled start time by too large of a margin<a name="line.193"></a>
-<span class="sourceLineNo">194</span> */<a name="line.194"></a>
-<span class="sourceLineNo">195</span> synchronized long getTimeBetweenRuns() {<a name="line.195"></a>
-<span class="sourceLineNo">196</span> return timeOfThisRun - timeOfLastRun;<a name="line.196"></a>
-<span class="sourceLineNo">197</span> }<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span> /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span> * @return true when the time between runs exceeds the acceptable threshold<a name="line.200"></a>
-<span class="sourceLineNo">201</span> */<a name="line.201"></a>
-<span class="sourceLineNo">202</span> private synchronized boolean missedStartTime() {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> return isValidTime(timeOfLastRun) && isValidTime(timeOfThisRun)<a name="line.203"></a>
-<span class="sourceLineNo">204</span> && getTimeBetweenRuns() > getMaximumAllowedTimeBetweenRuns();<a name="line.204"></a>
-<span class="sourceLineNo">205</span> }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span> /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * @return max allowed time in millis between runs.<a name="line.208"></a>
-<span class="sourceLineNo">209</span> */<a name="line.209"></a>
-<span class="sourceLineNo">210</span> private double getMaximumAllowedTimeBetweenRuns() {<a name="line.210"></a>
-<span class="sourceLineNo">211</span> // Threshold used to determine if the Chore's current run started too late<a name="line.211"></a>
-<span class="sourceLineNo">212</span> return 1.5 * timeUnit.toMillis(period);<a name="line.212"></a>
-<span class="sourceLineNo">213</span> }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span> /**<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * @param time in system millis<a name="line.216"></a>
-<span class="sourceLineNo">217</span> * @return true if time is earlier or equal to current milli time<a name="line.217"></a>
-<span class="sourceLineNo">218</span> */<a name="line.218"></a>
-<span class="sourceLineNo">219</span> private synchronized boolean isValidTime(final long time) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span> return time > 0 && time <= EnvironmentEdgeManager.currentTime();<a name="line.220"></a>
-<span class="sourceLineNo">221</span> }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span> /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * @return false when the Chore is not currently scheduled with a ChoreService<a name="line.224"></a>
-<span class="sourceLineNo">225</span> */<a name="line.225"></a>
-<span class="sourceLineNo">226</span> public synchronized boolean triggerNow() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span> if (choreService == null) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span> return false;<a name="line.228"></a>
-<span class="sourceLineNo">229</span> }<a name="line.229"></a>
-<span class="sourceLineNo">230</span> choreService.triggerNow(this);<a name="line.230"></a>
-<span class="sourceLineNo">231</span> return true;<a name="line.231"></a>
-<span class="sourceLineNo">232</span> }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span> @RestrictedApi(explanation = "Should only be called in ChoreService", link = "",<a name="line.234"></a>
-<span class="sourceLineNo">235</span> allowedOnPath = ".*/org/apache/hadoop/hbase/ChoreService.java")<a name="line.235"></a>
-<span class="sourceLineNo">236</span> synchronized void setChoreService(ChoreService service) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span> choreService = service;<a name="line.237"></a>
-<span class="sourceLineNo">238</span> timeOfThisRun = -1;<a name="line.238"></a>
-<span class="sourceLineNo">239</span> }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span> public synchronized void cancel() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span> cancel(true);<a name="line.242"></a>
-<span class="sourceLineNo">243</span> }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span> public synchronized void cancel(boolean mayInterruptIfRunning) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> if (isScheduled()) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span> choreService.cancelChore(this, mayInterruptIfRunning);<a name="line.247"></a>
-<span class="sourceLineNo">248</span> }<a name="line.248"></a>
-<span class="sourceLineNo">249</span> choreService = null;<a name="line.249"></a>
-<span class="sourceLineNo">250</span> }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span> public String getName() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span> return name;<a name="line.253"></a>
-<span class="sourceLineNo">254</span> }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span> public Stoppable getStopper() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span> return stopper;<a name="line.257"></a>
-<span class="sourceLineNo">258</span> }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span> * @return period to execute chore in getTimeUnit() units<a name="line.261"></a>
-<span class="sourceLineNo">262</span> */<a name="line.262"></a>
-<span class="sourceLineNo">263</span> public int getPeriod() {<a name="line.263"></a>
-<span class="sourceLineNo">264</span> return period;<a name="line.264"></a>
-<span class="sourceLineNo">265</span> }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span> /**<a name="line.267"></a>
-<span class="sourceLineNo">268</span> * @return initial delay before executing chore in getTimeUnit() units<a name="line.268"></a>
-<span class="sourceLineNo">269</span> */<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public long getInitialDelay() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> return initialDelay;<a name="line.271"></a>
-<span class="sourceLineNo">272</span> }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span> public TimeUnit getTimeUnit() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span> return timeUnit;<a name="line.275"></a>
-<span class="sourceLineNo">276</span> }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span> public synchronized boolean isInitialChoreComplete() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span> return initialChoreComplete;<a name="line.279"></a>
-<span class="sourceLineNo">280</span> }<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span> synchronized ChoreService getChoreService() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span> return choreService;<a name="line.283"></a>
-<span class="sourceLineNo">284</span> }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span> synchronized long getTimeOfLastRun() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span> return timeOfLastRun;<a name="line.287"></a>
-<span class="sourceLineNo">288</span> }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span> synchronized long getTimeOfThisRun() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span> return timeOfThisRun;<a name="line.291"></a>
-<span class="sourceLineNo">292</span> }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span> /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span> * @return true when this Chore is scheduled with a ChoreService<a name="line.295"></a>
-<span class="sourceLineNo">296</span> */<a name="line.296"></a>
-<span class="sourceLineNo">297</span> public synchronized boolean isScheduled() {<a name="line.297"></a>
-<span class="sourceLineNo">298</span> return choreService != null && choreService.isChoreScheduled(this);<a name="line.298"></a>
-<span class="sourceLineNo">299</span> }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span> @InterfaceAudience.Private<a name="line.301"></a>
-<span class="sourceLineNo">302</span> @RestrictedApi(explanation = "Should only be called in tests", link = "",<a name="line.302"></a>
-<span class="sourceLineNo">303</span> allowedOnPath = ".*/src/test/.*")<a name="line.303"></a>
-<span class="sourceLineNo">304</span> public synchronized void choreForTesting() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span> chore();<a name="line.305"></a>
-<span class="sourceLineNo">306</span> }<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span> /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span> * The task to execute on each scheduled execution of the Chore<a name="line.309"></a>
-<span class="sourceLineNo">310</span> */<a name="line.310"></a>
-<span class="sourceLineNo">311</span> protected abstract void chore();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span> /**<a name="line.313"></a>
-<span class="sourceLineNo">314</span> * Override to run a task before we start looping.<a name="line.314"></a>
-<span class="sourceLineNo">315</span> * @return true if initial chore was successful<a name="line.315"></a>
-<span class="sourceLineNo">316</span> */<a name="line.316"></a>
-<span class="sourceLineNo">317</span> protected boolean initialChore() {<a name="line.317"></a>
-<span class="sourceLineNo">318</span> // Default does nothing<a name="line.318"></a>
-<span class="sourceLineNo">319</span> return true;<a name="line.319"></a>
-<span class="sourceLineNo">320</span> }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span> /**<a name="line.322"></a>
-<span class="sourceLineNo">323</span> * Override to run cleanup tasks when the Chore encounters an error and must stop running<a name="line.323"></a>
-<span class="sourceLineNo">324</span> */<a name="line.324"></a>
-<span class="sourceLineNo">325</span> protected void cleanup() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span> }<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span> /**<a name="line.328"></a>
-<span class="sourceLineNo">329</span> * Call {@link #shutdown(boolean)} with {@code true}.<a name="line.329"></a>
-<span class="sourceLineNo">330</span> * @see ScheduledChore#shutdown(boolean)<a name="line.330"></a>
-<span class="sourceLineNo">331</span> */<a name="line.331"></a>
-<span class="sourceLineNo">332</span> public synchronized void shutdown() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span> shutdown(true);<a name="line.333"></a>
-<span class="sourceLineNo">334</span> }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span> /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span> * Completely shutdown the ScheduleChore, which means we will call cleanup and you should not<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * schedule it again.<a name="line.338"></a>
-<span class="sourceLineNo">339</span> * <p/><a name="line.339"></a>
-<span class="sourceLineNo">340</span> * This is another path to cleanup the chore, comparing to stop the stopper instance passed in.<a name="line.340"></a>
-<span class="sourceLineNo">341</span> */<a name="line.341"></a>
-<span class="sourceLineNo">342</span> public synchronized void shutdown(boolean mayInterruptIfRunning) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span> cancel(mayInterruptIfRunning);<a name="line.343"></a>
-<span class="sourceLineNo">344</span> cleanup();<a name="line.344"></a>
-<span class="sourceLineNo">345</span> }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span> /**<a name="line.347"></a>
-<span class="sourceLineNo">348</span> * A summation of this chore in human readable format. Downstream users should not presume<a name="line.348"></a>
-<span class="sourceLineNo">349</span> * parsing of this string can relaibly be done between versions. Instead, they should rely<a name="line.349"></a>
-<span class="sourceLineNo">350</span> * on the public accessor methods to get the information they desire.<a name="line.350"></a>
-<span class="sourceLineNo">351</span> */<a name="line.351"></a>
-<span class="sourceLineNo">352</span> @InterfaceAudience.Private<a name="line.352"></a>
-<span class="sourceLineNo">353</span> @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span> public String toString() {<a name="line.354"></a>
-<span class="sourceLineNo">355</span> return "ScheduledChore name=" + getName() + ", period=" + getPeriod() +<a name="line.355"></a>
-<span class="sourceLineNo">356</span> ", unit=" + getTimeUnit();<a name="line.356"></a>
-<span class="sourceLineNo">357</span> }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>}<a name="line.358"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>
diff --git a/book.html b/book.html
index 698e4d7..16d669b 100644
--- a/book.html
+++ b/book.html
@@ -46185,7 +46185,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
<div id="footer">
<div id="footer-text">
Version 3.0.0-alpha-2-SNAPSHOT<br>
-Last updated 2021-07-21 20:04:51 UTC
+Last updated 2021-07-22 16:16:13 UTC
</div>
</div>
<link rel="stylesheet" href="./coderay-asciidoctor.css">
diff --git a/bulk-loads.html b/bulk-loads.html
index 4991643..cc824df 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -161,7 +161,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 71c7491..e6ba43b 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7288,7 +7288,7 @@
<tr class="a">
<td>annotation</td>
<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
-<td>5</td>
+<td>7</td>
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td></tr>
<tr class="b">
<td>blocks</td>
@@ -7392,7 +7392,7 @@
<tr class="b">
<td></td>
<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>2299</td>
+<td>2297</td>
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td></tr>
<tr class="a">
<td>misc</td>
@@ -35873,8 +35873,8 @@
<th>Line</th></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
-<td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>annotation</td>
+<td>MissingDeprecated</td>
<td>Javadoc comment at column 14 has parse error. Details: mismatched input ':' expecting <EOF> while parsing JAVADOC</td>
<td>46</td></tr></table></div>
<div class="section">
@@ -43052,31 +43052,31 @@
<td>indentation</td>
<td>Indentation</td>
<td>'method def modifier' has incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
-<td>147</td></tr>
+<td>148</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
-<td>152</td></tr>
+<td>153</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def rcurly' has incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
-<td>155</td></tr>
+<td>156</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'object def rcurly' has incorrect indentation level 6, expected level should be one of the following: 2, 4.</td>
-<td>156</td></tr>
+<td>157</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>MethodLength</td>
-<td>Method length is 300 lines (max allowed is 150).</td>
-<td>298</td></tr></table></div>
+<td>Method length is 301 lines (max allowed is 150).</td>
+<td>299</td></tr></table></div>
<div class="section">
<h3 id="org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</h3>
<table border="0" class="table table-striped">
@@ -50957,8 +50957,8 @@
<th>Line</th></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
-<td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>annotation</td>
+<td>MissingDeprecated</td>
<td>Javadoc comment at column 54 has parse error. Details: no viable alternative at input '(' while parsing JAVADOC_INLINE_TAG</td>
<td>59</td></tr>
<tr class="b">
@@ -74240,7 +74240,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/coc.html b/coc.html
index 9719838..86d078f 100644
--- a/coc.html
+++ b/coc.html
@@ -230,7 +230,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index 73bc7ec..d4e71a9 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -302,7 +302,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index fbc62ea..895c4ab 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -866,7 +866,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index f904087..ca8a0cb 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -183,7 +183,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 9d109fb..5b227e0 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1190,7 +1190,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index b0a9277..9d459f3 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -16452,6 +16452,10 @@
<div class="block">Compares the row part of the cell with a simple plain byte[] like the
stopRow in Scan.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellComparator.html#compareRows-byte:A-byte:A-">compareRows(byte[], byte[])</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></dt>
+<dd>
+<div class="block">Compares two row bytes</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows(ByteBuffer, Cell)</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellComparatorImpl.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows(Cell, Cell)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellComparatorImpl.html" title="class in org.apache.hadoop.hbase">CellComparatorImpl</a></dt>
@@ -16482,6 +16486,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-byte:A-int-int-">compareRows(Cell, byte[], int, int)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaCellComparator.html" title="class in org.apache.hadoop.hbase">MetaCellComparator</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-byte:A-byte:A-">compareRows(byte[], byte[])</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaCellComparator.html" title="class in org.apache.hadoop.hbase">MetaCellComparator</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-byte:A-int-int-byte:A-int-int-">compareRows(byte[], int, int, byte[], int, int)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaCellComparator.html" title="class in org.apache.hadoop.hbase">MetaCellComparator</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows(ByteBuffer, Cell)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaCellComparator.html" title="class in org.apache.hadoop.hbase">MetaCellComparator</a></dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/CellComparator.html b/devapidocs/org/apache/hadoop/hbase/CellComparator.html
index 9c406f7..592bc0d 100644
--- a/devapidocs/org/apache/hadoop/hbase/CellComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/CellComparator.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":18,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":17,"i11":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":18,"i5":18,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":17,"i12":6};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -111,7 +111,7 @@ var activeTableTab = "activeTableTab";
<br>
<pre>@InterfaceAudience.Public
@InterfaceStability.Evolving
-public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.32">CellComparator</a>
+public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.33">CellComparator</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>></pre>
<div class="block">Comparator for comparing cells and has some specialized methods that allows comparing individual
cell components like row, family, qualifier and timestamp</div>
@@ -164,10 +164,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>default int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-byte:A-byte:A-">compareRows</a></span>(byte[] leftRow,
+ byte[] rightRow)</code>
+<div class="block">Compares two row bytes</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>default int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell)</code> </td>
</tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-byte:A-int-int-">compareRows</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell,
byte[] bytes,
@@ -177,41 +184,41 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
stopRow in Scan.</div>
</td>
</tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</code>
<div class="block">Lexographically compares the rows of two cells.</div>
</td>
</tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareTimestamps-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareTimestamps</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</code>
<div class="block">Compares cell's timestamps in DESCENDING order.</div>
</td>
</tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareTimestamps-long-long-">compareTimestamps</a></span>(long leftCellts,
long rightCellts)</code>
<div class="block">Compares cell's timestamps in DESCENDING order.</div>
</td>
</tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareWithoutRow-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareWithoutRow</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</code>
<div class="block">Lexographically compares the two cells excluding the row part.</div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getInstance--">getInstance</a></span>()</code>
<div class="block">A comparator for ordering cells in user-space tables.</div>
</td>
</tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getSimpleComparator--">getSimpleComparator</a></span>()</code> </td>
</tr>
@@ -243,7 +250,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>getInstance</h4>
-<pre>static <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.41">getInstance</a>()</pre>
+<pre>static <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.42">getInstance</a>()</pre>
<div class="block">A comparator for ordering cells in user-space tables. Useful when writing cells in sorted
order as necessary for bulk import (i.e. via MapReduce).
<p>
@@ -257,7 +264,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compare</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.54">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.55">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares two cells. The key part of the cell is taken for comparison which
includes row, family, qualifier, timestamp and type</div>
@@ -279,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compare</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.62">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.63">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell,
boolean ignoreSequenceid)</pre>
<div class="block">Compare cells.</div>
@@ -298,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.71">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.72">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the rows of two cells.</div>
<dl>
@@ -317,7 +324,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.83">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.84">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell,
byte[] bytes,
int offset,
int length)</pre>
@@ -335,13 +342,32 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
</dl>
</li>
</ul>
+<a name="compareRows-byte:A-byte:A-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareRows</h4>
+<pre>default int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.93">compareRows</a>(byte[] leftRow,
+ byte[] rightRow)</pre>
+<div class="block">Compares two row bytes</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>leftRow</code> - the byte array of the left row</dd>
+<dd><code>rightRow</code> - the byte array of the right row</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>greater than 0 if leftRow is bigger, less than 0 if rightRow is bigger, 0 if both
+ rows are equal</dd>
+</dl>
+</li>
+</ul>
<a name="compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>default int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.91">compareRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
+<pre>default int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.103">compareRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -359,7 +385,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareWithoutRow</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.111">compareWithoutRow</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.123">compareWithoutRow</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the two cells excluding the row part. It compares family, qualifier,
timestamp and the type</div>
@@ -379,7 +405,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareFamilies</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.120">compareFamilies</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.132">compareFamilies</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the families of the two cells</div>
<dl>
@@ -398,7 +424,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareQualifiers</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.129">compareQualifiers</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.141">compareQualifiers</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Lexographically compares the qualifiers of the two cells</div>
<dl>
@@ -417,7 +443,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareTimestamps</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.141">compareTimestamps</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.153">compareTimestamps</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> leftCell,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> rightCell)</pre>
<div class="block">Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of
newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found
@@ -439,7 +465,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockList">
<li class="blockList">
<h4>compareTimestamps</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.153">compareTimestamps</a>(long leftCellts,
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.165">compareTimestamps</a>(long leftCellts,
long rightCellts)</pre>
<div class="block">Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of
newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found
@@ -461,7 +487,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.
<ul class="blockListLast">
<li class="blockList">
<h4>getSimpleComparator</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.160">getSimpleComparator</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/CellComparator.html#line.172">getSimpleComparator</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A dumbed-down, fast comparator for hbase2 base-type, the <a href="../../../../org/apache/hadoop/hbase/ByteBufferKeyValue.html" title="class in org.apache.hadoop.hbase"><code>ByteBufferKeyValue</code></a>.
diff --git a/devapidocs/org/apache/hadoop/hbase/CellComparatorImpl.html b/devapidocs/org/apache/hadoop/hbase/CellComparatorImpl.html
index 40e3c46..f31fc3f 100644
--- a/devapidocs/org/apache/hadoop/hbase/CellComparatorImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/CellComparatorImpl.html
@@ -357,7 +357,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/CellComparator.html" tit
<!-- -->
</a>
<h3>Methods inherited from interface org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></h3>
-<code><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getInstance--">getInstance</a></code></li>
+<code><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-byte:A-byte:A-">compareRows</a>, <a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getInstance--">getInstance</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.util.Comparator">
diff --git a/devapidocs/org/apache/hadoop/hbase/ChoreService.html b/devapidocs/org/apache/hadoop/hbase/ChoreService.html
index dfbbb56..853bd35 100644
--- a/devapidocs/org/apache/hadoop/hbase/ChoreService.html
+++ b/devapidocs/org/apache/hadoop/hbase/ChoreService.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
<li class="blockList">
<hr>
<br>
-<pre>@InterfaceAudience.Public
+<pre>@InterfaceAudience.Private
public class <a href="../../../../src-html/org/apache/hadoop/hbase/ChoreService.html#line.54">ChoreService</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">ChoreService is a service that can be used to schedule instances of <a href="../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><code>ScheduledChore</code></a> to run
diff --git a/devapidocs/org/apache/hadoop/hbase/MetaCellComparator.html b/devapidocs/org/apache/hadoop/hbase/MetaCellComparator.html
index 7704529..d5e87e0 100644
--- a/devapidocs/org/apache/hadoop/hbase/MetaCellComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/MetaCellComparator.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -197,6 +197,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
</td>
</tr>
<tr id="i1" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-byte:A-byte:A-">compareRows</a></span>(byte[] leftRow,
+ byte[] rightRow)</code>
+<div class="block">Compares two row bytes</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
<td class="colFirst"><code>private static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-byte:A-int-int-byte:A-int-int-">compareRows</a></span>(byte[] left,
int loffset,
@@ -205,12 +212,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
int roffset,
int rlength)</code> </td>
</tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-java.nio.ByteBuffer-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell)</code> </td>
</tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-byte:A-int-int-">compareRows</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> left,
byte[] right,
@@ -220,14 +227,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
stopRow in Scan.</div>
</td>
</tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaCellComparator.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> left,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> right)</code>
<div class="block">Compares the rows of the left and right cell.</div>
</td>
</tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaCellComparator.html#getSimpleComparator--">getSimpleComparator</a></span>()</code> </td>
</tr>
@@ -365,13 +372,33 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
</dl>
</li>
</ul>
+<a name="compareRows-byte:A-byte:A-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareRows</h4>
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.59">compareRows</a>(byte[] leftRow,
+ byte[] rightRow)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compareRows-byte:A-byte:A-">CellComparator</a></code></span></div>
+<div class="block">Compares two row bytes</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>leftRow</code> - the byte array of the left row</dd>
+<dd><code>rightRow</code> - the byte array of the right row</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>greater than 0 if leftRow is bigger, less than 0 if rightRow is bigger, 0 if both
+ rows are equal</dd>
+</dl>
+</li>
+</ul>
<a name="compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compare</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.59">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> a,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.64">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> a,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> b,
boolean ignoreSequenceid)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-boolean-">CellComparator</a></code></span></div>
@@ -394,7 +421,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>private static int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.74">compareRows</a>(byte[] left,
+<pre>private static int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.79">compareRows</a>(byte[] left,
int loffset,
int llength,
byte[] right,
@@ -408,7 +435,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
<ul class="blockList">
<li class="blockList">
<h4>compareRows</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.127">compareRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.132">compareRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> row,
<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> cell)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -426,7 +453,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/CellComparatorImpl.html" ti
<ul class="blockListLast">
<li class="blockList">
<h4>getSimpleComparator</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.146">getSimpleComparator</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaCellComparator.html#line.151">getSimpleComparator</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../org/apache/hadoop/hbase/CellComparator.html#getSimpleComparator--">getSimpleComparator</a></code> in interface <code><a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html b/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
index 9c8e9f3..3b3bf89 100644
--- a/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
+++ b/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>@InterfaceAudience.Public
+<pre>@InterfaceAudience.Private
public abstract class <a href="../../../../src-html/org/apache/hadoop/hbase/ScheduledChore.html#line.44">ScheduledChore</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 606d724..bc46bef 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -166,10 +166,10 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/chaos/package-tree.html b/devapidocs/org/apache/hadoop/hbase/chaos/package-tree.html
index 9e8dcb9..12a24fd 100644
--- a/devapidocs/org/apache/hadoop/hbase/chaos/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/chaos/package-tree.html
@@ -103,8 +103,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.chaos.<a href="../../../../../org/apache/hadoop/hbase/chaos/ChaosService.ExecutorAction.html" title="enum in org.apache.hadoop.hbase.chaos"><span class="typeNameLink">ChaosService.ExecutorAction</span></a></li>
<li type="circle">org.apache.hadoop.hbase.chaos.<a href="../../../../../org/apache/hadoop/hbase/chaos/ChaosService.ChaosServiceName.html" title="enum in org.apache.hadoop.hbase.chaos"><span class="typeNameLink">ChaosService.ChaosServiceName</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.chaos.<a href="../../../../../org/apache/hadoop/hbase/chaos/ChaosService.ExecutorAction.html" title="enum in org.apache.hadoop.hbase.chaos"><span class="typeNameLink">ChaosService.ExecutorAction</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MutableRegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/MutableRegionInfo.html
index ea12218..12a02ec 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MutableRegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MutableRegionInfo.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.32">MutableRegionInfo</a>
+class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.34">MutableRegionInfo</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></pre>
<div class="block">An implementation of RegionInfo that adds mutable methods so can build a RegionInfo instance.
@@ -409,7 +409,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.33">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.35">LOG</a></pre>
</li>
</ul>
<a name="MAX_REPLICA_ID">
@@ -418,7 +418,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>MAX_REPLICA_ID</h4>
-<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.34">MAX_REPLICA_ID</a></pre>
+<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.36">MAX_REPLICA_ID</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MutableRegionInfo.MAX_REPLICA_ID">Constant Field Values</a></dd>
@@ -431,7 +431,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>offLine</h4>
-<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.64">offLine</a></pre>
+<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.66">offLine</a></pre>
<div class="block">The new format for a region name contains its encodedName at the end.
The encoded name also serves as the directory name for the region
in the filesystem.
@@ -460,7 +460,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>split</h4>
-<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.65">split</a></pre>
+<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.67">split</a></pre>
</li>
</ul>
<a name="regionId">
@@ -469,7 +469,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>regionId</h4>
-<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.66">regionId</a></pre>
+<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.68">regionId</a></pre>
</li>
</ul>
<a name="replicaId">
@@ -478,7 +478,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>replicaId</h4>
-<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.67">replicaId</a></pre>
+<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.69">replicaId</a></pre>
</li>
</ul>
<a name="regionName">
@@ -487,7 +487,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>regionName</h4>
-<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.68">regionName</a></pre>
+<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.70">regionName</a></pre>
</li>
</ul>
<a name="startKey">
@@ -496,7 +496,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>startKey</h4>
-<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.69">startKey</a></pre>
+<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.71">startKey</a></pre>
</li>
</ul>
<a name="endKey">
@@ -505,7 +505,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>endKey</h4>
-<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.70">endKey</a></pre>
+<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.72">endKey</a></pre>
</li>
</ul>
<a name="hashCode">
@@ -514,7 +514,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
-<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.71">hashCode</a></pre>
+<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.73">hashCode</a></pre>
</li>
</ul>
<a name="encodedName">
@@ -523,7 +523,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>encodedName</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.72">encodedName</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.74">encodedName</a></pre>
</li>
</ul>
<a name="encodedNameAsBytes">
@@ -532,7 +532,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>encodedNameAsBytes</h4>
-<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.73">encodedNameAsBytes</a></pre>
+<pre>private final byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.75">encodedNameAsBytes</a></pre>
</li>
</ul>
<a name="tableName">
@@ -541,7 +541,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockListLast">
<li class="blockList">
<h4>tableName</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.74">tableName</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.76">tableName</a></pre>
</li>
</ul>
</li>
@@ -558,7 +558,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>MutableRegionInfo</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.114">MutableRegionInfo</a>(long regionId,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.116">MutableRegionInfo</a>(long regionId,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
int replicaId)</pre>
<div class="block">Package private constructor used constructing MutableRegionInfo for the first meta regions</div>
@@ -570,7 +570,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockListLast">
<li class="blockList">
<h4>MutableRegionInfo</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.119">MutableRegionInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.121">MutableRegionInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
byte[] startKey,
byte[] endKey,
boolean split,
@@ -593,7 +593,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>generateHashCode</h4>
-<pre>private static int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.76">generateHashCode</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
+<pre>private static int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.78">generateHashCode</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
byte[] startKey,
byte[] endKey,
long regionId,
@@ -608,7 +608,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>checkStartKey</h4>
-<pre>private static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.89">checkStartKey</a>(byte[] startKey)</pre>
+<pre>private static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.91">checkStartKey</a>(byte[] startKey)</pre>
</li>
</ul>
<a name="checkEndKey-byte:A-">
@@ -617,7 +617,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>checkEndKey</h4>
-<pre>private static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.93">checkEndKey</a>(byte[] endKey)</pre>
+<pre>private static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.95">checkEndKey</a>(byte[] endKey)</pre>
</li>
</ul>
<a name="checkTableName-org.apache.hadoop.hbase.TableName-">
@@ -626,7 +626,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>checkTableName</h4>
-<pre>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.97">checkTableName</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</pre>
+<pre>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.99">checkTableName</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</pre>
</li>
</ul>
<a name="checkReplicaId-int-">
@@ -635,7 +635,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>checkReplicaId</h4>
-<pre>private static int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.104">checkReplicaId</a>(int regionId)</pre>
+<pre>private static int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.106">checkReplicaId</a>(int regionId)</pre>
</li>
</ul>
<a name="getShortNameToLog--">
@@ -644,7 +644,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getShortNameToLog</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.140">getShortNameToLog</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.142">getShortNameToLog</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getShortNameToLog--">getShortNameToLog</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -659,7 +659,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getRegionId</h4>
-<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.146">getRegionId</a>()</pre>
+<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.148">getRegionId</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getRegionId--">getRegionId</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -674,7 +674,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getRegionName</h4>
-<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.156">getRegionName</a>()</pre>
+<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.158">getRegionName</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getRegionName--">getRegionName</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -691,7 +691,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getRegionNameAsString</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.164">getRegionNameAsString</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.166">getRegionNameAsString</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getRegionNameAsString--">getRegionNameAsString</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -706,7 +706,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getEncodedName</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.170">getEncodedName</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.172">getEncodedName</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getEncodedName--">getEncodedName</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -721,7 +721,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getEncodedNameAsBytes</h4>
-<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.175">getEncodedNameAsBytes</a>()</pre>
+<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.177">getEncodedNameAsBytes</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getEncodedNameAsBytes--">getEncodedNameAsBytes</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -736,7 +736,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getStartKey</h4>
-<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.181">getStartKey</a>()</pre>
+<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.183">getStartKey</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getStartKey--">getStartKey</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -751,7 +751,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getEndKey</h4>
-<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.187">getEndKey</a>()</pre>
+<pre>public byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.189">getEndKey</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#getEndKey--">getEndKey</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -766,7 +766,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>getTable</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.196">getTable</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.198">getTable</a>()</pre>
<div class="block">Get current table name of the region</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -782,7 +782,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>containsRange</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.208">containsRange</a>(byte[] rangeStartKey,
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.210">containsRange</a>(byte[] rangeStartKey,
byte[] rangeEndKey)</pre>
<div class="block">Returns true if the given inclusive range of rows is fully contained
by this region. For example, if the region is foo,a,g and this is
@@ -807,7 +807,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>containsRow</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.226">containsRow</a>(byte[] row)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.229">containsRow</a>(byte[] row)</pre>
<div class="block">Return true if the given row falls in this region.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -823,7 +823,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>isMetaRegion</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.234">isMetaRegion</a>()</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.238">isMetaRegion</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#isMetaRegion--">isMetaRegion</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -838,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>isSplit</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.242">isSplit</a>()</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.246">isSplit</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html#isSplit--">isSplit</a></code> in interface <code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></dd>
@@ -853,7 +853,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<ul class="blockList">
<li class="blockList">
<h4>setSplit</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/MutableRegionInfo.html" title="class in org.apache.hadoop.hbase.client">MutableRegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.250">setSplit</a>(boolean split)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/MutableRegionInfo.html" title="class in org.apache.hadoop.hbase.client">MutableRegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.254">setSplit</a>(boolean split)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>split</code> - set split status</dd>
@@ -869,7 +869,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.htm
<li class="blockList">
<h4>isOffline</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.262">isOffline</a>()</pre>
+public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.266">isOffline</a>()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">since 3.0.0 and will be removed in 4.0.0</span></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -887,7 +887,7 @@ public boolean <a href="../../../../../src-html/org/apache/hadoop/hbas
<ul class="blockList">
<li class="blockList">
<h4>setOffline</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/MutableRegionInfo.html" title="class in org.apache.hadoop.hbase.client">MutableRegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.272">setOffline</a>(boolean offLine)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/MutableRegionInfo.html" title="class in org.apache.hadoop.hbase.client">MutableRegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.276">setOffline</a>(boolean offLine)</pre>
<div class="block">The parent of a region split is offline while split daughters hold
references to the parent. Offlined regions are closed.</div>
<dl>
@@ -905,7 +905,7 @@ public boolean <a href="../../../../../src-html/org/apache/hadoop/hbas
<li class="blockList">
<h4>isSplitParent</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.284">isSplitParent</a>()</pre>
+public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.288">isSplitParent</a>()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">since 3.0.0 and will be removed in 4.0.0, Use <a href="../../../../../org/apache/hadoop/hbase/client/MutableRegionInfo.html#isSplit--"><code>isSplit()</code></a> instead.</span></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -923,7 +923,7 @@ public boolean <a href="../../../../../src-html/org/apache/hadoop/hbas
<ul class="blockList">
<li class="blockList">
<h4>getReplicaId</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.299">getReplicaId</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.303">getReplicaId</a>()</pre>
<div class="block">Returns the region replica id</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -939,7 +939,7 @@ public boolean <a href="../../../../../src-html/org/apache/hadoop/hbas
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.307">toString</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.311">toString</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code> in class <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -954,7 +954,7 @@ public boolean <a href="../../../../../src-html/org/apache/hadoop/hbas
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.322">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> o)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.326">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> o)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code> in class <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -969,7 +969,7 @@ public boolean <a href="../../../../../src-html/org/apache/hadoop/hbas
<ul class="blockListLast">
<li class="blockList">
<h4>hashCode</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.339">hashCode</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html#line.343">hashCode</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code> in class <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index fd1f1b7..37dcf03 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -455,25 +455,25 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ServerType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ServerType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/LogQueryFilter.Type.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">LogQueryFilter.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/LogQueryFilter.FilterByOperator.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">LogQueryFilter.FilterByOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaMode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CatalogReplicaMode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/LogQueryFilter.FilterByOperator.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">LogQueryFilter.FilterByOperator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/LogQueryFilter.Type.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">LogQueryFilter.Type</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ServerType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ServerType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaMode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CatalogReplicaMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index f51af19..7cb63e4 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -105,8 +105,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index 95008cb..55b5178 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -190,13 +190,13 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/hbtop/field/package-tree.html b/devapidocs/org/apache/hadoop/hbase/hbtop/field/package-tree.html
index 96318e7..4245577 100644
--- a/devapidocs/org/apache/hadoop/hbase/hbtop/field/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/hbtop/field/package-tree.html
@@ -92,8 +92,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.hbtop.field.<a href="../../../../../../org/apache/hadoop/hbase/hbtop/field/FieldValueType.html" title="enum in org.apache.hadoop.hbase.hbtop.field"><span class="typeNameLink">FieldValueType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.hbtop.field.<a href="../../../../../../org/apache/hadoop/hbase/hbtop/field/Field.html" title="enum in org.apache.hadoop.hbase.hbtop.field"><span class="typeNameLink">Field</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.hbtop.field.<a href="../../../../../../org/apache/hadoop/hbase/hbtop/field/FieldValueType.html" title="enum in org.apache.hadoop.hbase.hbtop.field"><span class="typeNameLink">FieldValueType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 3bbcf17..cfee230 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -305,12 +305,12 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ReaderContext.ReaderType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">ReaderContext.ReaderType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheFactory.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockCacheFactory.ExternalBlockCaches</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ReaderContext.ReaderType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">ReaderContext.ReaderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index e09acb7..69b502c 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -356,9 +356,9 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index cdf7412..84cec8e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -300,11 +300,11 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/WALPlayer.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">WALPlayer.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
index 8bede26..ba98778 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
@@ -151,8 +151,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.TransitionType.html" title="enum in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TransitRegionStateProcedure.TransitionType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">ServerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.TransitionType.html" title="enum in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TransitRegionStateProcedure.TransitionType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index 55e1874..56a27f7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -212,8 +212,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BalancerClusterState.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BalancerClusterState.LocalityType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BalanceAction.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BalanceAction.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BalancerClusterState.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BalancerClusterState.LocalityType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index 2532177..d9c936d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -318,13 +318,13 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.ServerLiveState.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.ServerLiveState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetaRegionLocationCache.ZNodeOpType.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetaRegionLocationCache.ZNodeOpType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.ServerLiveState.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.ServerLiveState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index 43232c6..5829e33 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -222,10 +222,10 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html b/devapidocs/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html
index cefe4b8..1192a36 100644
--- a/devapidocs/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html
+++ b/devapidocs/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html
@@ -120,7 +120,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.75">DefaultMobStoreCompactor</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.76">DefaultMobStoreCompactor</a>
extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">DefaultCompactor</a></pre>
<div class="block">Compact passed set of files in the mob-enabled column family.</div>
</li>
@@ -329,7 +329,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.77">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.78">LOG</a></pre>
</li>
</ul>
<a name="mobSizeThreshold">
@@ -338,7 +338,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>mobSizeThreshold</h4>
-<pre>protected long <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.78">mobSizeThreshold</a></pre>
+<pre>protected long <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.79">mobSizeThreshold</a></pre>
</li>
</ul>
<a name="mobStore">
@@ -347,7 +347,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>mobStore</h4>
-<pre>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">HMobStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.79">mobStore</a></pre>
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">HMobStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.80">mobStore</a></pre>
</li>
</ul>
<a name="ioOptimizedMode">
@@ -356,7 +356,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>ioOptimizedMode</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.80">ioOptimizedMode</a></pre>
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.81">ioOptimizedMode</a></pre>
</li>
</ul>
<a name="mobRefSet">
@@ -365,7 +365,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>mobRefSet</h4>
-<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><org.apache.hbase.thirdparty.com.google.common.collect.SetMultimap<<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">S [...]
+<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><org.apache.hbase.thirdparty.com.google.common.collect.SetMultimap<<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">S [...]
</li>
</ul>
<a name="userRequest">
@@ -374,7 +374,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>userRequest</h4>
-<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.95">userRequest</a></pre>
+<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.96">userRequest</a></pre>
</li>
</ul>
<a name="disableIO">
@@ -383,7 +383,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>disableIO</h4>
-<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.111">disableIO</a></pre>
+<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.112">disableIO</a></pre>
</li>
</ul>
<a name="mobLengthMap">
@@ -392,7 +392,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>mobLengthMap</h4>
-<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.co [...]
+<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.co [...]
</li>
</ul>
<a name="scannerFactory">
@@ -401,7 +401,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>scannerFactory</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.InternalScannerFactory.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">Compactor.InternalScannerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.130">scannerFactory</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.InternalScannerFactory.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">Compactor.InternalScannerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.131">scannerFactory</a></pre>
</li>
</ul>
<a name="writerFactory">
@@ -410,7 +410,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockListLast">
<li class="blockList">
<h4>writerFactory</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.CellSinkFactory.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">Compactor.CellSinkFactory</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.145 [...]
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.CellSinkFactory.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">Compactor.CellSinkFactory</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.146 [...]
</li>
</ul>
</li>
@@ -427,7 +427,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockListLast">
<li class="blockList">
<h4>DefaultMobStoreCompactor</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.158">DefaultMobStoreCompactor</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.159">DefaultMobStoreCompactor</a>(org.apache.hadoop.conf.Configuration conf,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a> store)</pre>
</li>
</ul>
@@ -445,7 +445,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>compact</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.176">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestIm [...]
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.177">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestIm [...]
<a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a> throughputController,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -465,7 +465,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>calculateMobLengthMap</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.233">calculateMobLengthMap</a>(org.apache.hbase.thirdparty.com.google.common.collect.SetMultimap<<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>>&nbs [...]
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.234">calculateMobLengthMap</a>(org.apache.hbase.thirdparty.com.google.common.collect.SetMultimap<<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>>&nbs [...]
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -481,7 +481,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>performCompaction</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.299">performCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.FileDetails.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">Compactor.FileDetails</a> fd,
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.300">performCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.FileDetails.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">Compactor.FileDetails</a> fd,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a> scanner,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink.html" title="interface in org.apache.hadoop.hbase.regionserver">CellSink</a> writer,
long smallestReadPoint,
@@ -539,7 +539,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>getStoreInfo</h4>
-<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.602">getStoreInfo</a>()</pre>
+<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.604">getStoreInfo</a>()</pre>
</li>
</ul>
<a name="clearThreadLocals--">
@@ -548,7 +548,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>clearThreadLocals</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.607">clearThreadLocals</a>()</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.609">clearThreadLocals</a>()</pre>
</li>
</ul>
<a name="newMobWriter-org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails-boolean-">
@@ -557,7 +557,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>newMobWriter</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.615">newMobWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.FileDetails.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">Compactor.FileDetails</a> fd,
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.617">newMobWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.FileDetails.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">Compactor.FileDetails</a> fd,
boolean major)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -572,7 +572,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockList">
<li class="blockList">
<h4>commitOrAbortMobWriter</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.633">commitOrAbortMobWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> mobFileWriter,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.635">commitOrAbortMobWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> mobFileWriter,
long maxSeqId,
long mobCells,
boolean major)
@@ -589,7 +589,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions
<ul class="blockListLast">
<li class="blockList">
<h4>commitWriter</h4>
-<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.668">commitWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> writer,
+<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html#line.670">commitWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> writer,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/Compactor.FileDetails.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">Compactor.FileDetails</a> fd,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a> request)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 4b073c2..fca28c4 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -454,19 +454,19 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClientMetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClientMetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClientMetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClientMetaTableAccessor.QueryType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 2398d39..4f8b423 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -217,11 +217,11 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 8c8fce6..965557c 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -240,12 +240,12 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index cd53958..e8dd939 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -729,20 +729,20 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index a7f13f5..7a0e3f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
</ul>
</li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index af94ffe..61f3f12 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -249,10 +249,10 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.RollRequestReason.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.RollRequestReason</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.RollRequestReason.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.RollRequestReason</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index 14f1f73..c0fbff3 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -172,8 +172,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index 8703f65..90989fc 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index 51647d3..3f4dce3 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -162,12 +162,12 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index c56a992..5c5c2f5 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -189,9 +189,9 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 50024bf..fba9877 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -212,8 +212,8 @@
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index f7c87f1..1f0d341 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -532,15 +532,15 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/DNS.ServerType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">DNS.ServerType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLockWithObjectPool.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLockWithObjectPool.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HbckErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HbckErrorReporter.ERROR_CODE</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HbckErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HbckErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li>
</ul>
</li>
</ul>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/CellComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/CellComparator.html
index 2a4594b..afd6a97 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/CellComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/CellComparator.html
@@ -28,145 +28,157 @@
<span class="sourceLineNo">020</span>import java.nio.ByteBuffer;<a name="line.20"></a>
<span class="sourceLineNo">021</span>import java.util.Comparator;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * Comparator for comparing cells and has some specialized methods that allows comparing individual<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * cell components like row, family, qualifier and timestamp<a name="line.28"></a>
-<span class="sourceLineNo">029</span> */<a name="line.29"></a>
-<span class="sourceLineNo">030</span>@InterfaceAudience.Public<a name="line.30"></a>
-<span class="sourceLineNo">031</span>@InterfaceStability.Evolving<a name="line.31"></a>
-<span class="sourceLineNo">032</span>public interface CellComparator extends Comparator<Cell> {<a name="line.32"></a>
-<span class="sourceLineNo">033</span> /**<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * A comparator for ordering cells in user-space tables. Useful when writing cells in sorted<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * order as necessary for bulk import (i.e. via MapReduce).<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * <p><a name="line.36"></a>
-<span class="sourceLineNo">037</span> * CAUTION: This comparator may provide inaccurate ordering for cells from system tables,<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * and should not be relied upon in that case.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> */<a name="line.39"></a>
-<span class="sourceLineNo">040</span> // For internal use, see CellComparatorImpl utility methods.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> static CellComparator getInstance() {<a name="line.41"></a>
-<span class="sourceLineNo">042</span> return CellComparatorImpl.COMPARATOR;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> }<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span> /**<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * Lexographically compares two cells. The key part of the cell is taken for comparison which<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * includes row, family, qualifier, timestamp and type<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * @param leftCell the left hand side cell<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * @param rightCell the right hand side cell<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * cells are equal<a name="line.51"></a>
-<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span> @Override<a name="line.53"></a>
-<span class="sourceLineNo">054</span> int compare(Cell leftCell, Cell rightCell);<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span> /**<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * Compare cells.<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * @param ignoreSequenceid True if we are to compare the key portion only and ignore<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * the sequenceid. Set to false to compare key and consider sequenceid.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * @return 0 if equal, -1 if a &lt; b, and +1 if a &gt; b.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span> int compare(Cell leftCell, Cell rightCell, boolean ignoreSequenceid);<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span> /**<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * Lexographically compares the rows of two cells.<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * @param leftCell the left hand side cell<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * @param rightCell the right hand side cell<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * cells are equal<a name="line.69"></a>
-<span class="sourceLineNo">070</span> */<a name="line.70"></a>
-<span class="sourceLineNo">071</span> int compareRows(Cell leftCell, Cell rightCell);<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span> /**<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Compares the row part of the cell with a simple plain byte[] like the<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * stopRow in Scan.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * @param cell the cell<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * @param bytes the byte[] representing the row to be compared with<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * @param offset the offset of the byte[]<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * @param length the length of the byte[]<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * cells are equal<a name="line.81"></a>
-<span class="sourceLineNo">082</span> */<a name="line.82"></a>
-<span class="sourceLineNo">083</span> int compareRows(Cell cell, byte[] bytes, int offset, int length);<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span> /**<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * @param row ByteBuffer that wraps a row; will read from current position and will reading all<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * remaining; will not disturb the ByteBuffer internal state.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * cells are equal<a name="line.89"></a>
-<span class="sourceLineNo">090</span> */<a name="line.90"></a>
-<span class="sourceLineNo">091</span> default int compareRows(ByteBuffer row, Cell cell) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.93"></a>
-<span class="sourceLineNo">094</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.94"></a>
-<span class="sourceLineNo">095</span> ((ByteBufferExtendedCell) cell).getRowPosition(),<a name="line.95"></a>
-<span class="sourceLineNo">096</span> cell.getRowLength());<a name="line.96"></a>
-<span class="sourceLineNo">097</span> }<a name="line.97"></a>
-<span class="sourceLineNo">098</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.98"></a>
-<span class="sourceLineNo">099</span> cell.getRowArray(), cell.getRowOffset(),<a name="line.99"></a>
-<span class="sourceLineNo">100</span> cell.getRowLength());<a name="line.100"></a>
-<span class="sourceLineNo">101</span> }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span> /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * Lexographically compares the two cells excluding the row part. It compares family, qualifier,<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * timestamp and the type<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * @param leftCell the left hand side cell<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * @param rightCell the right hand side cell<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * cells are equal<a name="line.109"></a>
-<span class="sourceLineNo">110</span> */<a name="line.110"></a>
-<span class="sourceLineNo">111</span> int compareWithoutRow(Cell leftCell, Cell rightCell);<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span> /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * Lexographically compares the families of the two cells<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * @param leftCell the left hand side cell<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * @param rightCell the right hand side cell<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * cells are equal<a name="line.118"></a>
-<span class="sourceLineNo">119</span> */<a name="line.119"></a>
-<span class="sourceLineNo">120</span> int compareFamilies(Cell leftCell, Cell rightCell);<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span> /**<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * Lexographically compares the qualifiers of the two cells<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * @param leftCell the left hand side cell<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * @param rightCell the right hand side cell<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * cells are equal<a name="line.127"></a>
-<span class="sourceLineNo">128</span> */<a name="line.128"></a>
-<span class="sourceLineNo">129</span> int compareQualifiers(Cell leftCell, Cell rightCell);<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span> /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * when we iterate over a memstore and newer versions are the first we trip over when reading from<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * a store file.<a name="line.135"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Comparator for comparing cells and has some specialized methods that allows comparing individual<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * cell components like row, family, qualifier and timestamp<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>@InterfaceAudience.Public<a name="line.31"></a>
+<span class="sourceLineNo">032</span>@InterfaceStability.Evolving<a name="line.32"></a>
+<span class="sourceLineNo">033</span>public interface CellComparator extends Comparator<Cell> {<a name="line.33"></a>
+<span class="sourceLineNo">034</span> /**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * A comparator for ordering cells in user-space tables. Useful when writing cells in sorted<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * order as necessary for bulk import (i.e. via MapReduce).<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * <p><a name="line.37"></a>
+<span class="sourceLineNo">038</span> * CAUTION: This comparator may provide inaccurate ordering for cells from system tables,<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * and should not be relied upon in that case.<a name="line.39"></a>
+<span class="sourceLineNo">040</span> */<a name="line.40"></a>
+<span class="sourceLineNo">041</span> // For internal use, see CellComparatorImpl utility methods.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> static CellComparator getInstance() {<a name="line.42"></a>
+<span class="sourceLineNo">043</span> return CellComparatorImpl.COMPARATOR;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span> /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * Lexographically compares two cells. The key part of the cell is taken for comparison which<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * includes row, family, qualifier, timestamp and type<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * @param leftCell the left hand side cell<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * @param rightCell the right hand side cell<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * cells are equal<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span> @Override<a name="line.54"></a>
+<span class="sourceLineNo">055</span> int compare(Cell leftCell, Cell rightCell);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span> /**<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * Compare cells.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * @param ignoreSequenceid True if we are to compare the key portion only and ignore<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * the sequenceid. Set to false to compare key and consider sequenceid.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * @return 0 if equal, -1 if a &lt; b, and +1 if a &gt; b.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> */<a name="line.62"></a>
+<span class="sourceLineNo">063</span> int compare(Cell leftCell, Cell rightCell, boolean ignoreSequenceid);<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span> /**<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * Lexographically compares the rows of two cells.<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * @param leftCell the left hand side cell<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * @param rightCell the right hand side cell<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * cells are equal<a name="line.70"></a>
+<span class="sourceLineNo">071</span> */<a name="line.71"></a>
+<span class="sourceLineNo">072</span> int compareRows(Cell leftCell, Cell rightCell);<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span> /**<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Compares the row part of the cell with a simple plain byte[] like the<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * stopRow in Scan.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * @param cell the cell<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * @param bytes the byte[] representing the row to be compared with<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * @param offset the offset of the byte[]<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * @param length the length of the byte[]<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * cells are equal<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span> int compareRows(Cell cell, byte[] bytes, int offset, int length);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span> /**<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * Compares two row bytes<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * @param leftRow the byte array of the left row<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * @param rightRow the byte array of the right row<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * @return greater than 0 if leftRow is bigger, less than 0 if rightRow is bigger, 0 if both<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * rows are equal<a name="line.91"></a>
+<span class="sourceLineNo">092</span> */<a name="line.92"></a>
+<span class="sourceLineNo">093</span> default int compareRows(byte[] leftRow, byte[] rightRow) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span> return Bytes.compareTo(leftRow, rightRow);<a name="line.94"></a>
+<span class="sourceLineNo">095</span> }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span> /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * @param row ByteBuffer that wraps a row; will read from current position and will reading all<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * remaining; will not disturb the ByteBuffer internal state.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * cells are equal<a name="line.101"></a>
+<span class="sourceLineNo">102</span> */<a name="line.102"></a>
+<span class="sourceLineNo">103</span> default int compareRows(ByteBuffer row, Cell cell) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span> if (cell instanceof ByteBufferExtendedCell) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.105"></a>
+<span class="sourceLineNo">106</span> ((ByteBufferExtendedCell) cell).getRowByteBuffer(),<a name="line.106"></a>
+<span class="sourceLineNo">107</span> ((ByteBufferExtendedCell) cell).getRowPosition(),<a name="line.107"></a>
+<span class="sourceLineNo">108</span> cell.getRowLength());<a name="line.108"></a>
+<span class="sourceLineNo">109</span> }<a name="line.109"></a>
+<span class="sourceLineNo">110</span> return ByteBufferUtils.compareTo(row, row.position(), row.remaining(),<a name="line.110"></a>
+<span class="sourceLineNo">111</span> cell.getRowArray(), cell.getRowOffset(),<a name="line.111"></a>
+<span class="sourceLineNo">112</span> cell.getRowLength());<a name="line.112"></a>
+<span class="sourceLineNo">113</span> }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span> /**<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * Lexographically compares the two cells excluding the row part. It compares family, qualifier,<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * timestamp and the type<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * @param leftCell the left hand side cell<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * @param rightCell the right hand side cell<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * cells are equal<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span> int compareWithoutRow(Cell leftCell, Cell rightCell);<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span> /**<a name="line.125"></a>
+<span class="sourceLineNo">126</span> * Lexographically compares the families of the two cells<a name="line.126"></a>
+<span class="sourceLineNo">127</span> * @param leftCell the left hand side cell<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * @param rightCell the right hand side cell<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * cells are equal<a name="line.130"></a>
+<span class="sourceLineNo">131</span> */<a name="line.131"></a>
+<span class="sourceLineNo">132</span> int compareFamilies(Cell leftCell, Cell rightCell);<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span> /**<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * Lexographically compares the qualifiers of the two cells<a name="line.135"></a>
<span class="sourceLineNo">136</span> * @param leftCell the left hand side cell<a name="line.136"></a>
<span class="sourceLineNo">137</span> * @param rightCell the right hand side cell<a name="line.137"></a>
-<span class="sourceLineNo">138</span> * @return 1 if left's timestamp &lt; right's timestamp -1 if left's timestamp &gt; right's<a name="line.138"></a>
-<span class="sourceLineNo">139</span> * timestamp 0 if both timestamps are equal<a name="line.139"></a>
+<span class="sourceLineNo">138</span> * @return greater than 0 if leftCell is bigger, less than 0 if rightCell is bigger, 0 if both<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * cells are equal<a name="line.139"></a>
<span class="sourceLineNo">140</span> */<a name="line.140"></a>
-<span class="sourceLineNo">141</span> int compareTimestamps(Cell leftCell, Cell rightCell);<a name="line.141"></a>
+<span class="sourceLineNo">141</span> int compareQualifiers(Cell leftCell, Cell rightCell);<a name="line.141"></a>
<span class="sourceLineNo">142</span><a name="line.142"></a>
<span class="sourceLineNo">143</span> /**<a name="line.143"></a>
<span class="sourceLineNo">144</span> * Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of<a name="line.144"></a>
<span class="sourceLineNo">145</span> * newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found<a name="line.145"></a>
<span class="sourceLineNo">146</span> * when we iterate over a memstore and newer versions are the first we trip over when reading from<a name="line.146"></a>
<span class="sourceLineNo">147</span> * a store file.<a name="line.147"></a>
-<span class="sourceLineNo">148</span> * @param leftCellts the left cell's timestamp<a name="line.148"></a>
-<span class="sourceLineNo">149</span> * @param rightCellts the right cell's timestamp<a name="line.149"></a>
+<span class="sourceLineNo">148</span> * @param leftCell the left hand side cell<a name="line.148"></a>
+<span class="sourceLineNo">149</span> * @param rightCell the right hand side cell<a name="line.149"></a>
<span class="sourceLineNo">150</span> * @return 1 if left's timestamp &lt; right's timestamp -1 if left's timestamp &gt; right's<a name="line.150"></a>
<span class="sourceLineNo">151</span> * timestamp 0 if both timestamps are equal<a name="line.151"></a>
<span class="sourceLineNo">152</span> */<a name="line.152"></a>
-<span class="sourceLineNo">153</span> int compareTimestamps(long leftCellts, long rightCellts);<a name="line.153"></a>
+<span class="sourceLineNo">153</span> int compareTimestamps(Cell leftCell, Cell rightCell);<a name="line.153"></a>
<span class="sourceLineNo">154</span><a name="line.154"></a>
<span class="sourceLineNo">155</span> /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * @return A dumbed-down, fast comparator for hbase2 base-type, the {@link ByteBufferKeyValue}.<a name="line.156"></a>
-<span class="sourceLineNo">157</span> * Create an instance when you make a new memstore, when you know only BBKVs will be passed.<a name="line.157"></a>
-<span class="sourceLineNo">158</span> * Do not pollute with types other than BBKV if can be helped; the Comparator will slow.<a name="line.158"></a>
-<span class="sourceLineNo">159</span> */<a name="line.159"></a>
-<span class="sourceLineNo">160</span> Comparator getSimpleComparator();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>}<a name="line.161"></a>
+<span class="sourceLineNo">156</span> * Compares cell's timestamps in DESCENDING order. The below older timestamps sorting ahead of<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * newer timestamps looks wrong but it is intentional. This way, newer timestamps are first found<a name="line.157"></a>
+<span class="sourceLineNo">158</span> * when we iterate over a memstore and newer versions are the first we trip over when reading from<a name="line.158"></a>
+<span class="sourceLineNo">159</span> * a store file.<a name="line.159"></a>
+<span class="sourceLineNo">160</span> * @param leftCellts the left cell's timestamp<a name="line.160"></a>
+<span class="sourceLineNo">161</span> * @param rightCellts the right cell's timestamp<a name="line.161"></a>
+<span class="sourceLineNo">162</span> * @return 1 if left's timestamp &lt; right's timestamp -1 if left's timestamp &gt; right's<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * timestamp 0 if both timestamps are equal<a name="line.163"></a>
+<span class="sourceLineNo">164</span> */<a name="line.164"></a>
+<span class="sourceLineNo">165</span> int compareTimestamps(long leftCellts, long rightCellts);<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span> /**<a name="line.167"></a>
+<span class="sourceLineNo">168</span> * @return A dumbed-down, fast comparator for hbase2 base-type, the {@link ByteBufferKeyValue}.<a name="line.168"></a>
+<span class="sourceLineNo">169</span> * Create an instance when you make a new memstore, when you know only BBKVs will be passed.<a name="line.169"></a>
+<span class="sourceLineNo">170</span> * Do not pollute with types other than BBKV if can be helped; the Comparator will slow.<a name="line.170"></a>
+<span class="sourceLineNo">171</span> */<a name="line.171"></a>
+<span class="sourceLineNo">172</span> Comparator getSimpleComparator();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>}<a name="line.173"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
index c6ccc03..3b9a90e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
@@ -58,7 +58,7 @@
<span class="sourceLineNo">050</span> * When finished with a ChoreService it is good practice to call {@link ChoreService#shutdown()}.<a name="line.50"></a>
<span class="sourceLineNo">051</span> * Calling this method ensures that all scheduled chores are cancelled and cleaned up properly.<a name="line.51"></a>
<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@InterfaceAudience.Public<a name="line.53"></a>
+<span class="sourceLineNo">053</span>@InterfaceAudience.Private<a name="line.53"></a>
<span class="sourceLineNo">054</span>public class ChoreService {<a name="line.54"></a>
<span class="sourceLineNo">055</span> private static final Logger LOG = LoggerFactory.getLogger(ChoreService.class);<a name="line.55"></a>
<span class="sourceLineNo">056</span><a name="line.56"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
index c6ccc03..3b9a90e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
@@ -58,7 +58,7 @@
<span class="sourceLineNo">050</span> * When finished with a ChoreService it is good practice to call {@link ChoreService#shutdown()}.<a name="line.50"></a>
<span class="sourceLineNo">051</span> * Calling this method ensures that all scheduled chores are cancelled and cleaned up properly.<a name="line.51"></a>
<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@InterfaceAudience.Public<a name="line.53"></a>
+<span class="sourceLineNo">053</span>@InterfaceAudience.Private<a name="line.53"></a>
<span class="sourceLineNo">054</span>public class ChoreService {<a name="line.54"></a>
<span class="sourceLineNo">055</span> private static final Logger LOG = LoggerFactory.getLogger(ChoreService.class);<a name="line.55"></a>
<span class="sourceLineNo">056</span><a name="line.56"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaCellComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaCellComparator.html
index c3791ec..adaf339 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaCellComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaCellComparator.html
@@ -64,98 +64,103 @@
<span class="sourceLineNo">056</span> }<a name="line.56"></a>
<span class="sourceLineNo">057</span><a name="line.57"></a>
<span class="sourceLineNo">058</span> @Override<a name="line.58"></a>
-<span class="sourceLineNo">059</span> public int compare(final Cell a, final Cell b, boolean ignoreSequenceid) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span> int diff = compareRows(a, b);<a name="line.60"></a>
-<span class="sourceLineNo">061</span> if (diff != 0) {<a name="line.61"></a>
-<span class="sourceLineNo">062</span> return diff;<a name="line.62"></a>
-<span class="sourceLineNo">063</span> }<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span> diff = compareWithoutRow(a, b);<a name="line.65"></a>
+<span class="sourceLineNo">059</span> public int compareRows(byte[] leftRow, byte[] rightRow) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span> return compareRows(leftRow, 0, leftRow.length, rightRow, 0, rightRow.length);<a name="line.60"></a>
+<span class="sourceLineNo">061</span> }<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span> @Override<a name="line.63"></a>
+<span class="sourceLineNo">064</span> public int compare(final Cell a, final Cell b, boolean ignoreSequenceid) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span> int diff = compareRows(a, b);<a name="line.65"></a>
<span class="sourceLineNo">066</span> if (diff != 0) {<a name="line.66"></a>
<span class="sourceLineNo">067</span> return diff;<a name="line.67"></a>
<span class="sourceLineNo">068</span> }<a name="line.68"></a>
<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span> // Negate following comparisons so later edits show up first mvccVersion: later sorts first<a name="line.70"></a>
-<span class="sourceLineNo">071</span> return ignoreSequenceid ? diff : Longs.compare(b.getSequenceId(), a.getSequenceId());<a name="line.71"></a>
-<span class="sourceLineNo">072</span> }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span> private static int compareRows(byte[] left, int loffset, int llength, byte[] right, int roffset,<a name="line.74"></a>
-<span class="sourceLineNo">075</span> int rlength) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span> int leftDelimiter = Bytes.searchDelimiterIndex(left, loffset, llength, HConstants.DELIMITER);<a name="line.76"></a>
-<span class="sourceLineNo">077</span> int rightDelimiter = Bytes.searchDelimiterIndex(right, roffset, rlength, HConstants.DELIMITER);<a name="line.77"></a>
-<span class="sourceLineNo">078</span> // Compare up to the delimiter<a name="line.78"></a>
-<span class="sourceLineNo">079</span> int lpart = (leftDelimiter < 0 ? llength : leftDelimiter - loffset);<a name="line.79"></a>
-<span class="sourceLineNo">080</span> int rpart = (rightDelimiter < 0 ? rlength : rightDelimiter - roffset);<a name="line.80"></a>
-<span class="sourceLineNo">081</span> int result = Bytes.compareTo(left, loffset, lpart, right, roffset, rpart);<a name="line.81"></a>
-<span class="sourceLineNo">082</span> if (result != 0) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span> return result;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> } else {<a name="line.84"></a>
-<span class="sourceLineNo">085</span> if (leftDelimiter < 0 && rightDelimiter >= 0) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span> return -1;<a name="line.86"></a>
-<span class="sourceLineNo">087</span> } else if (rightDelimiter < 0 && leftDelimiter >= 0) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span> return 1;<a name="line.88"></a>
-<span class="sourceLineNo">089</span> } else if (leftDelimiter < 0) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span> return 0;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> }<a name="line.91"></a>
-<span class="sourceLineNo">092</span> }<a name="line.92"></a>
-<span class="sourceLineNo">093</span> // Compare middle bit of the row.<a name="line.93"></a>
-<span class="sourceLineNo">094</span> // Move past delimiter<a name="line.94"></a>
-<span class="sourceLineNo">095</span> leftDelimiter++;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> rightDelimiter++;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> int leftFarDelimiter = Bytes<a name="line.97"></a>
-<span class="sourceLineNo">098</span> .searchDelimiterIndexInReverse(left, leftDelimiter, llength - (leftDelimiter - loffset),<a name="line.98"></a>
-<span class="sourceLineNo">099</span> HConstants.DELIMITER);<a name="line.99"></a>
-<span class="sourceLineNo">100</span> int rightFarDelimiter = Bytes<a name="line.100"></a>
-<span class="sourceLineNo">101</span> .searchDelimiterIndexInReverse(right, rightDelimiter, rlength - (rightDelimiter - roffset),<a name="line.101"></a>
-<span class="sourceLineNo">102</span> HConstants.DELIMITER);<a name="line.102"></a>
-<span class="sourceLineNo">103</span> // Now compare middlesection of row.<a name="line.103"></a>
-<span class="sourceLineNo">104</span> lpart = (leftFarDelimiter < 0 ? llength + loffset : leftFarDelimiter) - leftDelimiter;<a name="line.104"></a>
-<span class="sourceLineNo">105</span> rpart = (rightFarDelimiter < 0 ? rlength + roffset : rightFarDelimiter) - rightDelimiter;<a name="line.105"></a>
-<span class="sourceLineNo">106</span> result = Bytes.compareTo(left, leftDelimiter, lpart, right, rightDelimiter, rpart);<a name="line.106"></a>
-<span class="sourceLineNo">107</span> if (result != 0) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span> return result;<a name="line.108"></a>
-<span class="sourceLineNo">109</span> } else {<a name="line.109"></a>
-<span class="sourceLineNo">110</span> if (leftDelimiter < 0 && rightDelimiter >= 0) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span> return -1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span> } else if (rightDelimiter < 0 && leftDelimiter >= 0) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span> return 1;<a name="line.113"></a>
-<span class="sourceLineNo">114</span> } else if (leftDelimiter < 0) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span> return 0;<a name="line.115"></a>
-<span class="sourceLineNo">116</span> }<a name="line.116"></a>
-<span class="sourceLineNo">117</span> }<a name="line.117"></a>
-<span class="sourceLineNo">118</span> // Compare last part of row, the rowid.<a name="line.118"></a>
-<span class="sourceLineNo">119</span> leftFarDelimiter++;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> rightFarDelimiter++;<a name="line.120"></a>
-<span class="sourceLineNo">121</span> result = Bytes.compareTo(left, leftFarDelimiter, llength - (leftFarDelimiter - loffset), right,<a name="line.121"></a>
-<span class="sourceLineNo">122</span> rightFarDelimiter, rlength - (rightFarDelimiter - roffset));<a name="line.122"></a>
-<span class="sourceLineNo">123</span> return result;<a name="line.123"></a>
-<span class="sourceLineNo">124</span> }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span> @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span> public int compareRows(ByteBuffer row, Cell cell) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span> byte[] array;<a name="line.128"></a>
-<span class="sourceLineNo">129</span> int offset;<a name="line.129"></a>
-<span class="sourceLineNo">130</span> int len = row.remaining();<a name="line.130"></a>
-<span class="sourceLineNo">131</span> if (row.hasArray()) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span> array = row.array();<a name="line.132"></a>
-<span class="sourceLineNo">133</span> offset = row.position() + row.arrayOffset();<a name="line.133"></a>
-<span class="sourceLineNo">134</span> } else {<a name="line.134"></a>
-<span class="sourceLineNo">135</span> // We copy the row array if offheap just so we can do a compare. We do this elsewhere too<a name="line.135"></a>
-<span class="sourceLineNo">136</span> // in BBUtils when Cell is backed by an offheap ByteBuffer. Needs fixing so no copy. TODO.<a name="line.136"></a>
-<span class="sourceLineNo">137</span> array = new byte[len];<a name="line.137"></a>
-<span class="sourceLineNo">138</span> offset = 0;<a name="line.138"></a>
-<span class="sourceLineNo">139</span> ByteBufferUtils.copyFromBufferToArray(array, row, row.position(), 0, len);<a name="line.139"></a>
-<span class="sourceLineNo">140</span> }<a name="line.140"></a>
-<span class="sourceLineNo">141</span> // Reverse result since we swap the order of the params we pass below.<a name="line.141"></a>
-<span class="sourceLineNo">142</span> return -compareRows(cell, array, offset, len);<a name="line.142"></a>
-<span class="sourceLineNo">143</span> }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span> @Override<a name="line.145"></a>
-<span class="sourceLineNo">146</span> public Comparator getSimpleComparator() {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> return this;<a name="line.147"></a>
+<span class="sourceLineNo">070</span> diff = compareWithoutRow(a, b);<a name="line.70"></a>
+<span class="sourceLineNo">071</span> if (diff != 0) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span> return diff;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> }<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span> // Negate following comparisons so later edits show up first mvccVersion: later sorts first<a name="line.75"></a>
+<span class="sourceLineNo">076</span> return ignoreSequenceid ? diff : Longs.compare(b.getSequenceId(), a.getSequenceId());<a name="line.76"></a>
+<span class="sourceLineNo">077</span> }<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span> private static int compareRows(byte[] left, int loffset, int llength, byte[] right, int roffset,<a name="line.79"></a>
+<span class="sourceLineNo">080</span> int rlength) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span> int leftDelimiter = Bytes.searchDelimiterIndex(left, loffset, llength, HConstants.DELIMITER);<a name="line.81"></a>
+<span class="sourceLineNo">082</span> int rightDelimiter = Bytes.searchDelimiterIndex(right, roffset, rlength, HConstants.DELIMITER);<a name="line.82"></a>
+<span class="sourceLineNo">083</span> // Compare up to the delimiter<a name="line.83"></a>
+<span class="sourceLineNo">084</span> int lpart = (leftDelimiter < 0 ? llength : leftDelimiter - loffset);<a name="line.84"></a>
+<span class="sourceLineNo">085</span> int rpart = (rightDelimiter < 0 ? rlength : rightDelimiter - roffset);<a name="line.85"></a>
+<span class="sourceLineNo">086</span> int result = Bytes.compareTo(left, loffset, lpart, right, roffset, rpart);<a name="line.86"></a>
+<span class="sourceLineNo">087</span> if (result != 0) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span> return result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span> } else {<a name="line.89"></a>
+<span class="sourceLineNo">090</span> if (leftDelimiter < 0 && rightDelimiter >= 0) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span> return -1;<a name="line.91"></a>
+<span class="sourceLineNo">092</span> } else if (rightDelimiter < 0 && leftDelimiter >= 0) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span> return 1;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> } else if (leftDelimiter < 0) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span> return 0;<a name="line.95"></a>
+<span class="sourceLineNo">096</span> }<a name="line.96"></a>
+<span class="sourceLineNo">097</span> }<a name="line.97"></a>
+<span class="sourceLineNo">098</span> // Compare middle bit of the row.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> // Move past delimiter<a name="line.99"></a>
+<span class="sourceLineNo">100</span> leftDelimiter++;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> rightDelimiter++;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> int leftFarDelimiter = Bytes<a name="line.102"></a>
+<span class="sourceLineNo">103</span> .searchDelimiterIndexInReverse(left, leftDelimiter, llength - (leftDelimiter - loffset),<a name="line.103"></a>
+<span class="sourceLineNo">104</span> HConstants.DELIMITER);<a name="line.104"></a>
+<span class="sourceLineNo">105</span> int rightFarDelimiter = Bytes<a name="line.105"></a>
+<span class="sourceLineNo">106</span> .searchDelimiterIndexInReverse(right, rightDelimiter, rlength - (rightDelimiter - roffset),<a name="line.106"></a>
+<span class="sourceLineNo">107</span> HConstants.DELIMITER);<a name="line.107"></a>
+<span class="sourceLineNo">108</span> // Now compare middlesection of row.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> lpart = (leftFarDelimiter < 0 ? llength + loffset : leftFarDelimiter) - leftDelimiter;<a name="line.109"></a>
+<span class="sourceLineNo">110</span> rpart = (rightFarDelimiter < 0 ? rlength + roffset : rightFarDelimiter) - rightDelimiter;<a name="line.110"></a>
+<span class="sourceLineNo">111</span> result = Bytes.compareTo(left, leftDelimiter, lpart, right, rightDelimiter, rpart);<a name="line.111"></a>
+<span class="sourceLineNo">112</span> if (result != 0) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span> return result;<a name="line.113"></a>
+<span class="sourceLineNo">114</span> } else {<a name="line.114"></a>
+<span class="sourceLineNo">115</span> if (leftDelimiter < 0 && rightDelimiter >= 0) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span> return -1;<a name="line.116"></a>
+<span class="sourceLineNo">117</span> } else if (rightDelimiter < 0 && leftDelimiter >= 0) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span> return 1;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> } else if (leftDelimiter < 0) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span> return 0;<a name="line.120"></a>
+<span class="sourceLineNo">121</span> }<a name="line.121"></a>
+<span class="sourceLineNo">122</span> }<a name="line.122"></a>
+<span class="sourceLineNo">123</span> // Compare last part of row, the rowid.<a name="line.123"></a>
+<span class="sourceLineNo">124</span> leftFarDelimiter++;<a name="line.124"></a>
+<span class="sourceLineNo">125</span> rightFarDelimiter++;<a name="line.125"></a>
+<span class="sourceLineNo">126</span> result = Bytes.compareTo(left, leftFarDelimiter, llength - (leftFarDelimiter - loffset), right,<a name="line.126"></a>
+<span class="sourceLineNo">127</span> rightFarDelimiter, rlength - (rightFarDelimiter - roffset));<a name="line.127"></a>
+<span class="sourceLineNo">128</span> return result;<a name="line.128"></a>
+<span class="sourceLineNo">129</span> }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span> @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span> public int compareRows(ByteBuffer row, Cell cell) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span> byte[] array;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> int offset;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> int len = row.remaining();<a name="line.135"></a>
+<span class="sourceLineNo">136</span> if (row.hasArray()) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span> array = row.array();<a name="line.137"></a>
+<span class="sourceLineNo">138</span> offset = row.position() + row.arrayOffset();<a name="line.138"></a>
+<span class="sourceLineNo">139</span> } else {<a name="line.139"></a>
+<span class="sourceLineNo">140</span> // We copy the row array if offheap just so we can do a compare. We do this elsewhere too<a name="line.140"></a>
+<span class="sourceLineNo">141</span> // in BBUtils when Cell is backed by an offheap ByteBuffer. Needs fixing so no copy. TODO.<a name="line.141"></a>
+<span class="sourceLineNo">142</span> array = new byte[len];<a name="line.142"></a>
+<span class="sourceLineNo">143</span> offset = 0;<a name="line.143"></a>
+<span class="sourceLineNo">144</span> ByteBufferUtils.copyFromBufferToArray(array, row, row.position(), 0, len);<a name="line.144"></a>
+<span class="sourceLineNo">145</span> }<a name="line.145"></a>
+<span class="sourceLineNo">146</span> // Reverse result since we swap the order of the params we pass below.<a name="line.146"></a>
+<span class="sourceLineNo">147</span> return -compareRows(cell, array, offset, len);<a name="line.147"></a>
<span class="sourceLineNo">148</span> }<a name="line.148"></a>
<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>}<a name="line.150"></a>
+<span class="sourceLineNo">150</span> @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span> public Comparator getSimpleComparator() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span> return this;<a name="line.152"></a>
+<span class="sourceLineNo">153</span> }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>}<a name="line.155"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html
index 10020c9..c1c160a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ScheduledChore.html
@@ -48,7 +48,7 @@
<span class="sourceLineNo">040</span> * Don't subclass ScheduledChore if the task relies on being woken up for something to do, such as<a name="line.40"></a>
<span class="sourceLineNo">041</span> * an entry being added to a queue, etc.<a name="line.41"></a>
<span class="sourceLineNo">042</span> */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>@InterfaceAudience.Public<a name="line.43"></a>
+<span class="sourceLineNo">043</span>@InterfaceAudience.Private<a name="line.43"></a>
<span class="sourceLineNo">044</span>public abstract class ScheduledChore implements Runnable {<a name="line.44"></a>
<span class="sourceLineNo">045</span> private static final Logger LOG = LoggerFactory.getLogger(ScheduledChore.class);<a name="line.45"></a>
<span class="sourceLineNo">046</span><a name="line.46"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html
index 15d1fa1..b19e95e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MutableRegionInfo.html
@@ -25,329 +25,333 @@
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
<span class="sourceLineNo">019</span>import java.util.Arrays;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.HConstants;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.TableName;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * An implementation of RegionInfo that adds mutable methods so can build a RegionInfo instance.<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * Package private. Use {@link RegionInfoBuilder} creating instances of {@link RegionInfo}s.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> */<a name="line.30"></a>
-<span class="sourceLineNo">031</span>@InterfaceAudience.Private<a name="line.31"></a>
-<span class="sourceLineNo">032</span>class MutableRegionInfo implements RegionInfo {<a name="line.32"></a>
-<span class="sourceLineNo">033</span> private static final Logger LOG = LoggerFactory.getLogger(MutableRegionInfo.class);<a name="line.33"></a>
-<span class="sourceLineNo">034</span> private static final int MAX_REPLICA_ID = 0xFFFF;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span> /**<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * The new format for a region name contains its encodedName at the end.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * The encoded name also serves as the directory name for the region<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * in the filesystem.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> *<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * New region name format:<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * &lt;tablename>,,&lt;startkey>,&lt;regionIdTimestamp>.&lt;encodedName>.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * where,<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * &lt;encodedName> is a hex version of the MD5 hash of<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * &lt;tablename>,&lt;startkey>,&lt;regionIdTimestamp><a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * The old region name format:<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * &lt;tablename>,&lt;startkey>,&lt;regionIdTimestamp><a name="line.48"></a>
-<span class="sourceLineNo">049</span> * For region names in the old format, the encoded name is a 32-bit<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * JenkinsHash integer value (in its decimal notation, string form).<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *<p><a name="line.51"></a>
-<span class="sourceLineNo">052</span> * **NOTE**<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * The first hbase:meta region, and regions created by an older<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * version of HBase (0.20 or prior) will continue to use the<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * old region name format.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> */<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span> // This flag is in the parent of a split while the parent is still referenced by daughter<a name="line.59"></a>
-<span class="sourceLineNo">060</span> // regions. We USED to set this flag when we disabled a table but now table state is kept up in<a name="line.60"></a>
-<span class="sourceLineNo">061</span> // zookeeper as of 0.90.0 HBase. And now in DisableTableProcedure, finally we will create bunch<a name="line.61"></a>
-<span class="sourceLineNo">062</span> // of UnassignProcedures and at the last of the procedure we will set the region state to<a name="line.62"></a>
-<span class="sourceLineNo">063</span> // CLOSED, and will not change the offLine flag.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> private boolean offLine;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> private boolean split;<a name="line.65"></a>
-<span class="sourceLineNo">066</span> private final long regionId;<a name="line.66"></a>
-<span class="sourceLineNo">067</span> private final int replicaId;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> private final byte[] regionName;<a name="line.68"></a>
-<span class="sourceLineNo">069</span> private final byte[] startKey;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> private final byte[] endKey;<a name="line.70"></a>
-<span class="sourceLineNo">071</span> private final int hashCode;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> private final String encodedName;<a name="line.72"></a>
-<span class="sourceLineNo">073</span> private final byte[] encodedNameAsBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span> private final TableName tableName;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span> private static int generateHashCode(final TableName tableName, final byte[] startKey,<a name="line.76"></a>
-<span class="sourceLineNo">077</span> final byte[] endKey, final long regionId,<a name="line.77"></a>
-<span class="sourceLineNo">078</span> final int replicaId, boolean offLine, byte[] regionName) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span> int result = Arrays.hashCode(regionName);<a name="line.79"></a>
-<span class="sourceLineNo">080</span> result = (int) (result ^ regionId);<a name="line.80"></a>
-<span class="sourceLineNo">081</span> result ^= Arrays.hashCode(checkStartKey(startKey));<a name="line.81"></a>
-<span class="sourceLineNo">082</span> result ^= Arrays.hashCode(checkEndKey(endKey));<a name="line.82"></a>
-<span class="sourceLineNo">083</span> result ^= Boolean.valueOf(offLine).hashCode();<a name="line.83"></a>
-<span class="sourceLineNo">084</span> result ^= Arrays.hashCode(tableName.getName());<a name="line.84"></a>
-<span class="sourceLineNo">085</span> result ^= replicaId;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> return result;<a name="line.86"></a>
-<span class="sourceLineNo">087</span> }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span> private static byte[] checkStartKey(byte[] startKey) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span> return startKey == null? HConstants.EMPTY_START_ROW: startKey;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span> private static byte[] checkEndKey(byte[] endKey) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span> return endKey == null? HConstants.EMPTY_END_ROW: endKey;<a name="line.94"></a>
-<span class="sourceLineNo">095</span> }<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span> private static TableName checkTableName(TableName tableName) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span> if (tableName == null) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span> throw new IllegalArgumentException("TableName cannot be null");<a name="line.99"></a>
-<span class="sourceLineNo">100</span> }<a name="line.100"></a>
-<span class="sourceLineNo">101</span> return tableName;<a name="line.101"></a>
-<span class="sourceLineNo">102</span> }<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> private static int checkReplicaId(int regionId) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span> if (regionId > MAX_REPLICA_ID) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span> throw new IllegalArgumentException("ReplicaId cannot be greater than" + MAX_REPLICA_ID);<a name="line.106"></a>
-<span class="sourceLineNo">107</span> }<a name="line.107"></a>
-<span class="sourceLineNo">108</span> return regionId;<a name="line.108"></a>
-<span class="sourceLineNo">109</span> }<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span> /**<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * Package private constructor used constructing MutableRegionInfo for the first meta regions<a name="line.112"></a>
-<span class="sourceLineNo">113</span> */<a name="line.113"></a>
-<span class="sourceLineNo">114</span> MutableRegionInfo(long regionId, TableName tableName, int replicaId) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span> this(tableName, HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW, false, regionId,<a name="line.115"></a>
-<span class="sourceLineNo">116</span> replicaId, false);<a name="line.116"></a>
-<span class="sourceLineNo">117</span> }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span> MutableRegionInfo(final TableName tableName, final byte[] startKey, final byte[] endKey,<a name="line.119"></a>
-<span class="sourceLineNo">120</span> final boolean split, final long regionId, final int replicaId, boolean offLine) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span> this.tableName = checkTableName(tableName);<a name="line.121"></a>
-<span class="sourceLineNo">122</span> this.startKey = checkStartKey(startKey);<a name="line.122"></a>
-<span class="sourceLineNo">123</span> this.endKey = checkEndKey(endKey);<a name="line.123"></a>
-<span class="sourceLineNo">124</span> this.split = split;<a name="line.124"></a>
-<span class="sourceLineNo">125</span> this.regionId = regionId;<a name="line.125"></a>
-<span class="sourceLineNo">126</span> this.replicaId = checkReplicaId(replicaId);<a name="line.126"></a>
-<span class="sourceLineNo">127</span> this.offLine = offLine;<a name="line.127"></a>
-<span class="sourceLineNo">128</span> this.regionName = RegionInfo.createRegionName(this.tableName, this.startKey, this.regionId,<a name="line.128"></a>
-<span class="sourceLineNo">129</span> this.replicaId, !this.tableName.equals(TableName.META_TABLE_NAME));<a name="line.129"></a>
-<span class="sourceLineNo">130</span> this.encodedName = RegionInfo.encodeRegionName(this.regionName);<a name="line.130"></a>
-<span class="sourceLineNo">131</span> this.hashCode = generateHashCode(this.tableName, this.startKey, this.endKey, this.regionId,<a name="line.131"></a>
-<span class="sourceLineNo">132</span> this.replicaId, this.offLine, this.regionName);<a name="line.132"></a>
-<span class="sourceLineNo">133</span> this.encodedNameAsBytes = Bytes.toBytes(this.encodedName);<a name="line.133"></a>
-<span class="sourceLineNo">134</span> }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span> /**<a name="line.136"></a>
-<span class="sourceLineNo">137</span> * @return Return a short, printable name for this region (usually encoded name) for us logging.<a name="line.137"></a>
-<span class="sourceLineNo">138</span> */<a name="line.138"></a>
-<span class="sourceLineNo">139</span> @Override<a name="line.139"></a>
-<span class="sourceLineNo">140</span> public String getShortNameToLog() {<a name="line.140"></a>
-<span class="sourceLineNo">141</span> return RegionInfo.prettyPrint(this.getEncodedName());<a name="line.141"></a>
-<span class="sourceLineNo">142</span> }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span> /** @return the regionId */<a name="line.144"></a>
-<span class="sourceLineNo">145</span> @Override<a name="line.145"></a>
-<span class="sourceLineNo">146</span> public long getRegionId(){<a name="line.146"></a>
-<span class="sourceLineNo">147</span> return regionId;<a name="line.147"></a>
-<span class="sourceLineNo">148</span> }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span> /**<a name="line.151"></a>
-<span class="sourceLineNo">152</span> * @return the regionName as an array of bytes.<a name="line.152"></a>
-<span class="sourceLineNo">153</span> * @see #getRegionNameAsString()<a name="line.153"></a>
-<span class="sourceLineNo">154</span> */<a name="line.154"></a>
-<span class="sourceLineNo">155</span> @Override<a name="line.155"></a>
-<span class="sourceLineNo">156</span> public byte[] getRegionName() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> return regionName;<a name="line.157"></a>
-<span class="sourceLineNo">158</span> }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span> /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span> * @return Region name as a String for use in logging, etc.<a name="line.161"></a>
-<span class="sourceLineNo">162</span> */<a name="line.162"></a>
-<span class="sourceLineNo">163</span> @Override<a name="line.163"></a>
-<span class="sourceLineNo">164</span> public String getRegionNameAsString() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> return RegionInfo.getRegionNameAsString(this, this.regionName);<a name="line.165"></a>
-<span class="sourceLineNo">166</span> }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span> /** @return the encoded region name */<a name="line.168"></a>
-<span class="sourceLineNo">169</span> @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span> public String getEncodedName() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span> return this.encodedName;<a name="line.171"></a>
-<span class="sourceLineNo">172</span> }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span> @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span> public byte[] getEncodedNameAsBytes() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span> return this.encodedNameAsBytes;<a name="line.176"></a>
-<span class="sourceLineNo">177</span> }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span> /** @return the startKey */<a name="line.179"></a>
-<span class="sourceLineNo">180</span> @Override<a name="line.180"></a>
-<span class="sourceLineNo">181</span> public byte[] getStartKey() {<a name="line.181"></a>
-<span class="sourceLineNo">182</span> return startKey;<a name="line.182"></a>
-<span class="sourceLineNo">183</span> }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span> /** @return the endKey */<a name="line.185"></a>
-<span class="sourceLineNo">186</span> @Override<a name="line.186"></a>
-<span class="sourceLineNo">187</span> public byte[] getEndKey() {<a name="line.187"></a>
-<span class="sourceLineNo">188</span> return endKey;<a name="line.188"></a>
-<span class="sourceLineNo">189</span> }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span> /**<a name="line.191"></a>
-<span class="sourceLineNo">192</span> * Get current table name of the region<a name="line.192"></a>
-<span class="sourceLineNo">193</span> * @return TableName<a name="line.193"></a>
-<span class="sourceLineNo">194</span> */<a name="line.194"></a>
-<span class="sourceLineNo">195</span> @Override<a name="line.195"></a>
-<span class="sourceLineNo">196</span> public TableName getTable() {<a name="line.196"></a>
-<span class="sourceLineNo">197</span> return this.tableName;<a name="line.197"></a>
-<span class="sourceLineNo">198</span> }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span> /**<a name="line.200"></a>
-<span class="sourceLineNo">201</span> * Returns true if the given inclusive range of rows is fully contained<a name="line.201"></a>
-<span class="sourceLineNo">202</span> * by this region. For example, if the region is foo,a,g and this is<a name="line.202"></a>
-<span class="sourceLineNo">203</span> * passed ["b","c"] or ["a","c"] it will return true, but if this is passed<a name="line.203"></a>
-<span class="sourceLineNo">204</span> * ["b","z"] it will return false.<a name="line.204"></a>
-<span class="sourceLineNo">205</span> * @throws IllegalArgumentException if the range passed is invalid (ie. end &lt; start)<a name="line.205"></a>
-<span class="sourceLineNo">206</span> */<a name="line.206"></a>
-<span class="sourceLineNo">207</span> @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span> public boolean containsRange(byte[] rangeStartKey, byte[] rangeEndKey) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span> if (Bytes.compareTo(rangeStartKey, rangeEndKey) > 0) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span> throw new IllegalArgumentException(<a name="line.210"></a>
-<span class="sourceLineNo">211</span> "Invalid range: " + Bytes.toStringBinary(rangeStartKey) +<a name="line.211"></a>
-<span class="sourceLineNo">212</span> " > " + Bytes.toStringBinary(rangeEndKey));<a name="line.212"></a>
-<span class="sourceLineNo">213</span> }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span> boolean firstKeyInRange = Bytes.compareTo(rangeStartKey, startKey) >= 0;<a name="line.215"></a>
-<span class="sourceLineNo">216</span> boolean lastKeyInRange =<a name="line.216"></a>
-<span class="sourceLineNo">217</span> Bytes.compareTo(rangeEndKey, endKey) < 0 ||<a name="line.217"></a>
-<span class="sourceLineNo">218</span> Bytes.equals(endKey, HConstants.EMPTY_BYTE_ARRAY);<a name="line.218"></a>
-<span class="sourceLineNo">219</span> return firstKeyInRange && lastKeyInRange;<a name="line.219"></a>
-<span class="sourceLineNo">220</span> }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span> /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * Return true if the given row falls in this region.<a name="line.223"></a>
-<span class="sourceLineNo">224</span> */<a name="line.224"></a>
-<span class="sourceLineNo">225</span> @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span> public boolean containsRow(byte[] row) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span> return Bytes.compareTo(row, startKey) >= 0 &&<a name="line.227"></a>
-<span class="sourceLineNo">228</span> (Bytes.compareTo(row, endKey) < 0 ||<a name="line.228"></a>
-<span class="sourceLineNo">229</span> Bytes.equals(endKey, HConstants.EMPTY_BYTE_ARRAY));<a name="line.229"></a>
-<span class="sourceLineNo">230</span> }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span> /** @return true if this region is a meta region */<a name="line.232"></a>
-<span class="sourceLineNo">233</span> @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span> public boolean isMetaRegion() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span> return tableName.equals(TableName.META_TABLE_NAME);<a name="line.235"></a>
-<span class="sourceLineNo">236</span> }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span> /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * @return True if has been split and has daughters.<a name="line.239"></a>
-<span class="sourceLineNo">240</span> */<a name="line.240"></a>
-<span class="sourceLineNo">241</span> @Override<a name="line.241"></a>
-<span class="sourceLineNo">242</span> public boolean isSplit() {<a name="line.242"></a>
-<span class="sourceLineNo">243</span> return this.split;<a name="line.243"></a>
-<span class="sourceLineNo">244</span> }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span> /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * @param split set split status<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * @return MutableRegionInfo<a name="line.248"></a>
-<span class="sourceLineNo">249</span> */<a name="line.249"></a>
-<span class="sourceLineNo">250</span> public MutableRegionInfo setSplit(boolean split) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span> this.split = split;<a name="line.251"></a>
-<span class="sourceLineNo">252</span> return this;<a name="line.252"></a>
-<span class="sourceLineNo">253</span> }<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span> /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * @return True if this region is offline.<a name="line.256"></a>
-<span class="sourceLineNo">257</span> * @deprecated since 3.0.0 and will be removed in 4.0.0<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-25210">HBASE-25210</a><a name="line.258"></a>
-<span class="sourceLineNo">259</span> */<a name="line.259"></a>
-<span class="sourceLineNo">260</span> @Override<a name="line.260"></a>
-<span class="sourceLineNo">261</span> @Deprecated<a name="line.261"></a>
-<span class="sourceLineNo">262</span> public boolean isOffline() {<a name="line.262"></a>
-<span class="sourceLineNo">263</span> return this.offLine;<a name="line.263"></a>
-<span class="sourceLineNo">264</span> }<a name="line.264"></a>
-<span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span> /**<a name="line.266"></a>
-<span class="sourceLineNo">267</span> * The parent of a region split is offline while split daughters hold<a name="line.267"></a>
-<span class="sourceLineNo">268</span> * references to the parent. Offlined regions are closed.<a name="line.268"></a>
-<span class="sourceLineNo">269</span> * @param offLine Set online/offline status.<a name="line.269"></a>
-<span class="sourceLineNo">270</span> * @return MutableRegionInfo<a name="line.270"></a>
-<span class="sourceLineNo">271</span> */<a name="line.271"></a>
-<span class="sourceLineNo">272</span> public MutableRegionInfo setOffline(boolean offLine) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span> this.offLine = offLine;<a name="line.273"></a>
-<span class="sourceLineNo">274</span> return this;<a name="line.274"></a>
-<span class="sourceLineNo">275</span> }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span> /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span> * @return True if this is a split parent region.<a name="line.278"></a>
-<span class="sourceLineNo">279</span> * @deprecated since 3.0.0 and will be removed in 4.0.0, Use {@link #isSplit()} instead.<a name="line.279"></a>
-<span class="sourceLineNo">280</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-25210">HBASE-25210</a><a name="line.280"></a>
-<span class="sourceLineNo">281</span> */<a name="line.281"></a>
-<span class="sourceLineNo">282</span> @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span> @Deprecated<a name="line.283"></a>
-<span class="sourceLineNo">284</span> public boolean isSplitParent() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span> if (!isSplit()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span> return false;<a name="line.286"></a>
-<span class="sourceLineNo">287</span> }<a name="line.287"></a>
-<span class="sourceLineNo">288</span> if (!isOffline()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span> LOG.warn("Region is split but NOT offline: " + getRegionNameAsString());<a name="line.289"></a>
-<span class="sourceLineNo">290</span> }<a name="line.290"></a>
-<span class="sourceLineNo">291</span> return true;<a name="line.291"></a>
-<span class="sourceLineNo">292</span> }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span> /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span> * Returns the region replica id<a name="line.295"></a>
-<span class="sourceLineNo">296</span> * @return returns region replica id<a name="line.296"></a>
-<span class="sourceLineNo">297</span> */<a name="line.297"></a>
-<span class="sourceLineNo">298</span> @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span> public int getReplicaId() {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> return replicaId;<a name="line.300"></a>
-<span class="sourceLineNo">301</span> }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span> /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span> * @see Object#toString()<a name="line.304"></a>
-<span class="sourceLineNo">305</span> */<a name="line.305"></a>
-<span class="sourceLineNo">306</span> @Override<a name="line.306"></a>
-<span class="sourceLineNo">307</span> public String toString() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return "{ENCODED => " + getEncodedName() + ", " +<a name="line.308"></a>
-<span class="sourceLineNo">309</span> HConstants.NAME + " => '" + Bytes.toStringBinary(this.regionName)<a name="line.309"></a>
-<span class="sourceLineNo">310</span> + "', STARTKEY => '" +<a name="line.310"></a>
-<span class="sourceLineNo">311</span> Bytes.toStringBinary(this.startKey) + "', ENDKEY => '" +<a name="line.311"></a>
-<span class="sourceLineNo">312</span> Bytes.toStringBinary(this.endKey) + "'" +<a name="line.312"></a>
-<span class="sourceLineNo">313</span> (isOffline()? ", OFFLINE => true": "") +<a name="line.313"></a>
-<span class="sourceLineNo">314</span> (isSplit()? ", SPLIT => true": "") +<a name="line.314"></a>
-<span class="sourceLineNo">315</span> ((replicaId > 0)? ", REPLICA_ID => " + replicaId : "") + "}";<a name="line.315"></a>
-<span class="sourceLineNo">316</span> }<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span> /**<a name="line.318"></a>
-<span class="sourceLineNo">319</span> * @see Object#equals(Object)<a name="line.319"></a>
-<span class="sourceLineNo">320</span> */<a name="line.320"></a>
-<span class="sourceLineNo">321</span> @Override<a name="line.321"></a>
-<span class="sourceLineNo">322</span> public boolean equals(Object o) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span> if (this == o) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span> return true;<a name="line.324"></a>
-<span class="sourceLineNo">325</span> }<a name="line.325"></a>
-<span class="sourceLineNo">326</span> if (o == null) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span> return false;<a name="line.327"></a>
-<span class="sourceLineNo">328</span> }<a name="line.328"></a>
-<span class="sourceLineNo">329</span> if (!(o instanceof RegionInfo)) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span> return false;<a name="line.330"></a>
-<span class="sourceLineNo">331</span> }<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return compareTo((RegionInfo)o) == 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span> }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span> /**<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * @see Object#hashCode()<a name="line.336"></a>
-<span class="sourceLineNo">337</span> */<a name="line.337"></a>
-<span class="sourceLineNo">338</span> @Override<a name="line.338"></a>
-<span class="sourceLineNo">339</span> public int hashCode() {<a name="line.339"></a>
-<span class="sourceLineNo">340</span> return this.hashCode;<a name="line.340"></a>
-<span class="sourceLineNo">341</span> }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>}<a name="line.342"></a>
+<span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.HConstants;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.TableName;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.slf4j.Logger;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.slf4j.LoggerFactory;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * An implementation of RegionInfo that adds mutable methods so can build a RegionInfo instance.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Package private. Use {@link RegionInfoBuilder} creating instances of {@link RegionInfo}s.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> */<a name="line.32"></a>
+<span class="sourceLineNo">033</span>@InterfaceAudience.Private<a name="line.33"></a>
+<span class="sourceLineNo">034</span>class MutableRegionInfo implements RegionInfo {<a name="line.34"></a>
+<span class="sourceLineNo">035</span> private static final Logger LOG = LoggerFactory.getLogger(MutableRegionInfo.class);<a name="line.35"></a>
+<span class="sourceLineNo">036</span> private static final int MAX_REPLICA_ID = 0xFFFF;<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span> /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * The new format for a region name contains its encodedName at the end.<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * The encoded name also serves as the directory name for the region<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * in the filesystem.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * New region name format:<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * &lt;tablename>,,&lt;startkey>,&lt;regionIdTimestamp>.&lt;encodedName>.<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * where,<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;encodedName> is a hex version of the MD5 hash of<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * &lt;tablename>,&lt;startkey>,&lt;regionIdTimestamp><a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * The old region name format:<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * &lt;tablename>,&lt;startkey>,&lt;regionIdTimestamp><a name="line.50"></a>
+<span class="sourceLineNo">051</span> * For region names in the old format, the encoded name is a 32-bit<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * JenkinsHash integer value (in its decimal notation, string form).<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *<p><a name="line.53"></a>
+<span class="sourceLineNo">054</span> * **NOTE**<a name="line.54"></a>
+<span class="sourceLineNo">055</span> *<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * The first hbase:meta region, and regions created by an older<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * version of HBase (0.20 or prior) will continue to use the<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * old region name format.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> */<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span> // This flag is in the parent of a split while the parent is still referenced by daughter<a name="line.61"></a>
+<span class="sourceLineNo">062</span> // regions. We USED to set this flag when we disabled a table but now table state is kept up in<a name="line.62"></a>
+<span class="sourceLineNo">063</span> // zookeeper as of 0.90.0 HBase. And now in DisableTableProcedure, finally we will create bunch<a name="line.63"></a>
+<span class="sourceLineNo">064</span> // of UnassignProcedures and at the last of the procedure we will set the region state to<a name="line.64"></a>
+<span class="sourceLineNo">065</span> // CLOSED, and will not change the offLine flag.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> private boolean offLine;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> private boolean split;<a name="line.67"></a>
+<span class="sourceLineNo">068</span> private final long regionId;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> private final int replicaId;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> private final byte[] regionName;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> private final byte[] startKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span> private final byte[] endKey;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> private final int hashCode;<a name="line.73"></a>
+<span class="sourceLineNo">074</span> private final String encodedName;<a name="line.74"></a>
+<span class="sourceLineNo">075</span> private final byte[] encodedNameAsBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> private final TableName tableName;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span> private static int generateHashCode(final TableName tableName, final byte[] startKey,<a name="line.78"></a>
+<span class="sourceLineNo">079</span> final byte[] endKey, final long regionId,<a name="line.79"></a>
+<span class="sourceLineNo">080</span> final int replicaId, boolean offLine, byte[] regionName) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span> int result = Arrays.hashCode(regionName);<a name="line.81"></a>
+<span class="sourceLineNo">082</span> result = (int) (result ^ regionId);<a name="line.82"></a>
+<span class="sourceLineNo">083</span> result ^= Arrays.hashCode(checkStartKey(startKey));<a name="line.83"></a>
+<span class="sourceLineNo">084</span> result ^= Arrays.hashCode(checkEndKey(endKey));<a name="line.84"></a>
+<span class="sourceLineNo">085</span> result ^= Boolean.valueOf(offLine).hashCode();<a name="line.85"></a>
+<span class="sourceLineNo">086</span> result ^= Arrays.hashCode(tableName.getName());<a name="line.86"></a>
+<span class="sourceLineNo">087</span> result ^= replicaId;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> return result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span> }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span> private static byte[] checkStartKey(byte[] startKey) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span> return startKey == null? HConstants.EMPTY_START_ROW: startKey;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span> private static byte[] checkEndKey(byte[] endKey) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span> return endKey == null? HConstants.EMPTY_END_ROW: endKey;<a name="line.96"></a>
+<span class="sourceLineNo">097</span> }<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span> private static TableName checkTableName(TableName tableName) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span> if (tableName == null) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span> throw new IllegalArgumentException("TableName cannot be null");<a name="line.101"></a>
+<span class="sourceLineNo">102</span> }<a name="line.102"></a>
+<span class="sourceLineNo">103</span> return tableName;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span> private static int checkReplicaId(int regionId) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span> if (regionId > MAX_REPLICA_ID) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span> throw new IllegalArgumentException("ReplicaId cannot be greater than" + MAX_REPLICA_ID);<a name="line.108"></a>
+<span class="sourceLineNo">109</span> }<a name="line.109"></a>
+<span class="sourceLineNo">110</span> return regionId;<a name="line.110"></a>
+<span class="sourceLineNo">111</span> }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span> /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * Package private constructor used constructing MutableRegionInfo for the first meta regions<a name="line.114"></a>
+<span class="sourceLineNo">115</span> */<a name="line.115"></a>
+<span class="sourceLineNo">116</span> MutableRegionInfo(long regionId, TableName tableName, int replicaId) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span> this(tableName, HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW, false, regionId,<a name="line.117"></a>
+<span class="sourceLineNo">118</span> replicaId, false);<a name="line.118"></a>
+<span class="sourceLineNo">119</span> }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span> MutableRegionInfo(final TableName tableName, final byte[] startKey, final byte[] endKey,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> final boolean split, final long regionId, final int replicaId, boolean offLine) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span> this.tableName = checkTableName(tableName);<a name="line.123"></a>
+<span class="sourceLineNo">124</span> this.startKey = checkStartKey(startKey);<a name="line.124"></a>
+<span class="sourceLineNo">125</span> this.endKey = checkEndKey(endKey);<a name="line.125"></a>
+<span class="sourceLineNo">126</span> this.split = split;<a name="line.126"></a>
+<span class="sourceLineNo">127</span> this.regionId = regionId;<a name="line.127"></a>
+<span class="sourceLineNo">128</span> this.replicaId = checkReplicaId(replicaId);<a name="line.128"></a>
+<span class="sourceLineNo">129</span> this.offLine = offLine;<a name="line.129"></a>
+<span class="sourceLineNo">130</span> this.regionName = RegionInfo.createRegionName(this.tableName, this.startKey, this.regionId,<a name="line.130"></a>
+<span class="sourceLineNo">131</span> this.replicaId, !this.tableName.equals(TableName.META_TABLE_NAME));<a name="line.131"></a>
+<span class="sourceLineNo">132</span> this.encodedName = RegionInfo.encodeRegionName(this.regionName);<a name="line.132"></a>
+<span class="sourceLineNo">133</span> this.hashCode = generateHashCode(this.tableName, this.startKey, this.endKey, this.regionId,<a name="line.133"></a>
+<span class="sourceLineNo">134</span> this.replicaId, this.offLine, this.regionName);<a name="line.134"></a>
+<span class="sourceLineNo">135</span> this.encodedNameAsBytes = Bytes.toBytes(this.encodedName);<a name="line.135"></a>
+<span class="sourceLineNo">136</span> }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span> /**<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * @return Return a short, printable name for this region (usually encoded name) for us logging.<a name="line.139"></a>
+<span class="sourceLineNo">140</span> */<a name="line.140"></a>
+<span class="sourceLineNo">141</span> @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span> public String getShortNameToLog() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span> return RegionInfo.prettyPrint(this.getEncodedName());<a name="line.143"></a>
+<span class="sourceLineNo">144</span> }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span> /** @return the regionId */<a name="line.146"></a>
+<span class="sourceLineNo">147</span> @Override<a name="line.147"></a>
+<span class="sourceLineNo">148</span> public long getRegionId(){<a name="line.148"></a>
+<span class="sourceLineNo">149</span> return regionId;<a name="line.149"></a>
+<span class="sourceLineNo">150</span> }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span> /**<a name="line.153"></a>
+<span class="sourceLineNo">154</span> * @return the regionName as an array of bytes.<a name="line.154"></a>
+<span class="sourceLineNo">155</span> * @see #getRegionNameAsString()<a name="line.155"></a>
+<span class="sourceLineNo">156</span> */<a name="line.156"></a>
+<span class="sourceLineNo">157</span> @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span> public byte[] getRegionName() {<a name="line.158"></a>
+<span class="sourceLineNo">159</span> return regionName;<a name="line.159"></a>
+<span class="sourceLineNo">160</span> }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span> /**<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * @return Region name as a String for use in logging, etc.<a name="line.163"></a>
+<span class="sourceLineNo">164</span> */<a name="line.164"></a>
+<span class="sourceLineNo">165</span> @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span> public String getRegionNameAsString() {<a name="line.166"></a>
+<span class="sourceLineNo">167</span> return RegionInfo.getRegionNameAsString(this, this.regionName);<a name="line.167"></a>
+<span class="sourceLineNo">168</span> }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span> /** @return the encoded region name */<a name="line.170"></a>
+<span class="sourceLineNo">171</span> @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span> public String getEncodedName() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span> return this.encodedName;<a name="line.173"></a>
+<span class="sourceLineNo">174</span> }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span> @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span> public byte[] getEncodedNameAsBytes() {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> return this.encodedNameAsBytes;<a name="line.178"></a>
+<span class="sourceLineNo">179</span> }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span> /** @return the startKey */<a name="line.181"></a>
+<span class="sourceLineNo">182</span> @Override<a name="line.182"></a>
+<span class="sourceLineNo">183</span> public byte[] getStartKey() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span> return startKey;<a name="line.184"></a>
+<span class="sourceLineNo">185</span> }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span> /** @return the endKey */<a name="line.187"></a>
+<span class="sourceLineNo">188</span> @Override<a name="line.188"></a>
+<span class="sourceLineNo">189</span> public byte[] getEndKey() {<a name="line.189"></a>
+<span class="sourceLineNo">190</span> return endKey;<a name="line.190"></a>
+<span class="sourceLineNo">191</span> }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span> /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span> * Get current table name of the region<a name="line.194"></a>
+<span class="sourceLineNo">195</span> * @return TableName<a name="line.195"></a>
+<span class="sourceLineNo">196</span> */<a name="line.196"></a>
+<span class="sourceLineNo">197</span> @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span> public TableName getTable() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span> return this.tableName;<a name="line.199"></a>
+<span class="sourceLineNo">200</span> }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span> /**<a name="line.202"></a>
+<span class="sourceLineNo">203</span> * Returns true if the given inclusive range of rows is fully contained<a name="line.203"></a>
+<span class="sourceLineNo">204</span> * by this region. For example, if the region is foo,a,g and this is<a name="line.204"></a>
+<span class="sourceLineNo">205</span> * passed ["b","c"] or ["a","c"] it will return true, but if this is passed<a name="line.205"></a>
+<span class="sourceLineNo">206</span> * ["b","z"] it will return false.<a name="line.206"></a>
+<span class="sourceLineNo">207</span> * @throws IllegalArgumentException if the range passed is invalid (ie. end &lt; start)<a name="line.207"></a>
+<span class="sourceLineNo">208</span> */<a name="line.208"></a>
+<span class="sourceLineNo">209</span> @Override<a name="line.209"></a>
+<span class="sourceLineNo">210</span> public boolean containsRange(byte[] rangeStartKey, byte[] rangeEndKey) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span> CellComparator cellComparator = CellComparatorImpl.getCellComparator(tableName);<a name="line.211"></a>
+<span class="sourceLineNo">212</span> if (cellComparator.compareRows(rangeStartKey, rangeEndKey) > 0) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span> throw new IllegalArgumentException(<a name="line.213"></a>
+<span class="sourceLineNo">214</span> "Invalid range: " + Bytes.toStringBinary(rangeStartKey) +<a name="line.214"></a>
+<span class="sourceLineNo">215</span> " > " + Bytes.toStringBinary(rangeEndKey));<a name="line.215"></a>
+<span class="sourceLineNo">216</span> }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span> boolean firstKeyInRange = cellComparator.compareRows(rangeStartKey, startKey) >= 0;<a name="line.218"></a>
+<span class="sourceLineNo">219</span> boolean lastKeyInRange =<a name="line.219"></a>
+<span class="sourceLineNo">220</span> cellComparator.compareRows(rangeEndKey, endKey) < 0 ||<a name="line.220"></a>
+<span class="sourceLineNo">221</span> Bytes.equals(endKey, HConstants.EMPTY_BYTE_ARRAY);<a name="line.221"></a>
+<span class="sourceLineNo">222</span> return firstKeyInRange && lastKeyInRange;<a name="line.222"></a>
+<span class="sourceLineNo">223</span> }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span> /**<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * Return true if the given row falls in this region.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> */<a name="line.227"></a>
+<span class="sourceLineNo">228</span> @Override<a name="line.228"></a>
+<span class="sourceLineNo">229</span> public boolean containsRow(byte[] row) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span> CellComparator cellComparator = CellComparatorImpl.getCellComparator(tableName);<a name="line.230"></a>
+<span class="sourceLineNo">231</span> return cellComparator.compareRows(row, startKey) >= 0 &&<a name="line.231"></a>
+<span class="sourceLineNo">232</span> (cellComparator.compareRows(row, endKey) < 0 ||<a name="line.232"></a>
+<span class="sourceLineNo">233</span> Bytes.equals(endKey, HConstants.EMPTY_BYTE_ARRAY));<a name="line.233"></a>
+<span class="sourceLineNo">234</span> }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span> /** @return true if this region is a meta region */<a name="line.236"></a>
+<span class="sourceLineNo">237</span> @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span> public boolean isMetaRegion() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span> return tableName.equals(TableName.META_TABLE_NAME);<a name="line.239"></a>
+<span class="sourceLineNo">240</span> }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span> /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * @return True if has been split and has daughters.<a name="line.243"></a>
+<span class="sourceLineNo">244</span> */<a name="line.244"></a>
+<span class="sourceLineNo">245</span> @Override<a name="line.245"></a>
+<span class="sourceLineNo">246</span> public boolean isSplit() {<a name="line.246"></a>
+<span class="sourceLineNo">247</span> return this.split;<a name="line.247"></a>
+<span class="sourceLineNo">248</span> }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span> /**<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * @param split set split status<a name="line.251"></a>
+<span class="sourceLineNo">252</span> * @return MutableRegionInfo<a name="line.252"></a>
+<span class="sourceLineNo">253</span> */<a name="line.253"></a>
+<span class="sourceLineNo">254</span> public MutableRegionInfo setSplit(boolean split) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span> this.split = split;<a name="line.255"></a>
+<span class="sourceLineNo">256</span> return this;<a name="line.256"></a>
+<span class="sourceLineNo">257</span> }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span> /**<a name="line.259"></a>
+<span class="sourceLineNo">260</span> * @return True if this region is offline.<a name="line.260"></a>
+<span class="sourceLineNo">261</span> * @deprecated since 3.0.0 and will be removed in 4.0.0<a name="line.261"></a>
+<span class="sourceLineNo">262</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-25210">HBASE-25210</a><a name="line.262"></a>
+<span class="sourceLineNo">263</span> */<a name="line.263"></a>
+<span class="sourceLineNo">264</span> @Override<a name="line.264"></a>
+<span class="sourceLineNo">265</span> @Deprecated<a name="line.265"></a>
+<span class="sourceLineNo">266</span> public boolean isOffline() {<a name="line.266"></a>
+<span class="sourceLineNo">267</span> return this.offLine;<a name="line.267"></a>
+<span class="sourceLineNo">268</span> }<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span> /**<a name="line.270"></a>
+<span class="sourceLineNo">271</span> * The parent of a region split is offline while split daughters hold<a name="line.271"></a>
+<span class="sourceLineNo">272</span> * references to the parent. Offlined regions are closed.<a name="line.272"></a>
+<span class="sourceLineNo">273</span> * @param offLine Set online/offline status.<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * @return MutableRegionInfo<a name="line.274"></a>
+<span class="sourceLineNo">275</span> */<a name="line.275"></a>
+<span class="sourceLineNo">276</span> public MutableRegionInfo setOffline(boolean offLine) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span> this.offLine = offLine;<a name="line.277"></a>
+<span class="sourceLineNo">278</span> return this;<a name="line.278"></a>
+<span class="sourceLineNo">279</span> }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span> /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span> * @return True if this is a split parent region.<a name="line.282"></a>
+<span class="sourceLineNo">283</span> * @deprecated since 3.0.0 and will be removed in 4.0.0, Use {@link #isSplit()} instead.<a name="line.283"></a>
+<span class="sourceLineNo">284</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-25210">HBASE-25210</a><a name="line.284"></a>
+<span class="sourceLineNo">285</span> */<a name="line.285"></a>
+<span class="sourceLineNo">286</span> @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span> @Deprecated<a name="line.287"></a>
+<span class="sourceLineNo">288</span> public boolean isSplitParent() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span> if (!isSplit()) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> return false;<a name="line.290"></a>
+<span class="sourceLineNo">291</span> }<a name="line.291"></a>
+<span class="sourceLineNo">292</span> if (!isOffline()) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span> LOG.warn("Region is split but NOT offline: " + getRegionNameAsString());<a name="line.293"></a>
+<span class="sourceLineNo">294</span> }<a name="line.294"></a>
+<span class="sourceLineNo">295</span> return true;<a name="line.295"></a>
+<span class="sourceLineNo">296</span> }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span> /**<a name="line.298"></a>
+<span class="sourceLineNo">299</span> * Returns the region replica id<a name="line.299"></a>
+<span class="sourceLineNo">300</span> * @return returns region replica id<a name="line.300"></a>
+<span class="sourceLineNo">301</span> */<a name="line.301"></a>
+<span class="sourceLineNo">302</span> @Override<a name="line.302"></a>
+<span class="sourceLineNo">303</span> public int getReplicaId() {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> return replicaId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span> /**<a name="line.307"></a>
+<span class="sourceLineNo">308</span> * @see Object#toString()<a name="line.308"></a>
+<span class="sourceLineNo">309</span> */<a name="line.309"></a>
+<span class="sourceLineNo">310</span> @Override<a name="line.310"></a>
+<span class="sourceLineNo">311</span> public String toString() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span> return "{ENCODED => " + getEncodedName() + ", " +<a name="line.312"></a>
+<span class="sourceLineNo">313</span> HConstants.NAME + " => '" + Bytes.toStringBinary(this.regionName)<a name="line.313"></a>
+<span class="sourceLineNo">314</span> + "', STARTKEY => '" +<a name="line.314"></a>
+<span class="sourceLineNo">315</span> Bytes.toStringBinary(this.startKey) + "', ENDKEY => '" +<a name="line.315"></a>
+<span class="sourceLineNo">316</span> Bytes.toStringBinary(this.endKey) + "'" +<a name="line.316"></a>
+<span class="sourceLineNo">317</span> (isOffline()? ", OFFLINE => true": "") +<a name="line.317"></a>
+<span class="sourceLineNo">318</span> (isSplit()? ", SPLIT => true": "") +<a name="line.318"></a>
+<span class="sourceLineNo">319</span> ((replicaId > 0)? ", REPLICA_ID => " + replicaId : "") + "}";<a name="line.319"></a>
+<span class="sourceLineNo">320</span> }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span> /**<a name="line.322"></a>
+<span class="sourceLineNo">323</span> * @see Object#equals(Object)<a name="line.323"></a>
+<span class="sourceLineNo">324</span> */<a name="line.324"></a>
+<span class="sourceLineNo">325</span> @Override<a name="line.325"></a>
+<span class="sourceLineNo">326</span> public boolean equals(Object o) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span> if (this == o) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span> return true;<a name="line.328"></a>
+<span class="sourceLineNo">329</span> }<a name="line.329"></a>
+<span class="sourceLineNo">330</span> if (o == null) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span> return false;<a name="line.331"></a>
+<span class="sourceLineNo">332</span> }<a name="line.332"></a>
+<span class="sourceLineNo">333</span> if (!(o instanceof RegionInfo)) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span> return false;<a name="line.334"></a>
+<span class="sourceLineNo">335</span> }<a name="line.335"></a>
+<span class="sourceLineNo">336</span> return compareTo((RegionInfo)o) == 0;<a name="line.336"></a>
+<span class="sourceLineNo">337</span> }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span> /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span> * @see Object#hashCode()<a name="line.340"></a>
+<span class="sourceLineNo">341</span> */<a name="line.341"></a>
+<span class="sourceLineNo">342</span> @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span> public int hashCode() {<a name="line.343"></a>
+<span class="sourceLineNo">344</span> return this.hashCode;<a name="line.344"></a>
+<span class="sourceLineNo">345</span> }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>}<a name="line.346"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html b/devapidocs/src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html
index 8669464..ad53c54 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.html
@@ -43,647 +43,649 @@
<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.FileSystem;<a name="line.35"></a>
<span class="sourceLineNo">036</span>import org.apache.hadoop.fs.Path;<a name="line.36"></a>
<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.Cell;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.CellSink;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.HMobStore;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.KeyValueScanner;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.regionserver.ScanInfo;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.regionserver.ScanType;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.ShipperListener;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.StoreFileScanner;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.StoreScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.compactions.CloseChecker;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputControlUtil;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.security.User;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.slf4j.Logger;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.slf4j.LoggerFactory;<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hbase.thirdparty.com.google.common.collect.HashMultimap;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSetMultimap;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hbase.thirdparty.com.google.common.collect.SetMultimap;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>/**<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * Compact passed set of files in the mob-enabled column family.<a name="line.72"></a>
-<span class="sourceLineNo">073</span> */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>@InterfaceAudience.Private<a name="line.74"></a>
-<span class="sourceLineNo">075</span>public class DefaultMobStoreCompactor extends DefaultCompactor {<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span> private static final Logger LOG = LoggerFactory.getLogger(DefaultMobStoreCompactor.class);<a name="line.77"></a>
-<span class="sourceLineNo">078</span> protected long mobSizeThreshold;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> protected HMobStore mobStore;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> protected boolean ioOptimizedMode = false;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span> /*<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * MOB file reference set thread local variable. It contains set of a MOB file names, which newly<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * compacted store file has references to. This variable is populated during compaction and the<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * content of it is written into meta section of a newly created store file at the final step of<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * compaction process.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> */<a name="line.87"></a>
-<span class="sourceLineNo">088</span> static ThreadLocal<SetMultimap<TableName,String>> mobRefSet =<a name="line.88"></a>
-<span class="sourceLineNo">089</span> ThreadLocal.withInitial(HashMultimap::create);<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span> /*<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * Is it user or system-originated request.<a name="line.92"></a>
-<span class="sourceLineNo">093</span> */<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span> static ThreadLocal<Boolean> userRequest = new ThreadLocal<Boolean>() {<a name="line.95"></a>
-<span class="sourceLineNo">096</span> @Override<a name="line.96"></a>
-<span class="sourceLineNo">097</span> protected Boolean initialValue() {<a name="line.97"></a>
-<span class="sourceLineNo">098</span> return Boolean.FALSE;<a name="line.98"></a>
-<span class="sourceLineNo">099</span> }<a name="line.99"></a>
-<span class="sourceLineNo">100</span> };<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.TableName;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.CellSink;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.HMobStore;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.regionserver.KeyValueScanner;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.regionserver.ScanInfo;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.ScanType;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.ShipperListener;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.StoreFileScanner;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.StoreScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.regionserver.compactions.CloseChecker;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputControlUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.security.User;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.slf4j.Logger;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.slf4j.LoggerFactory;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hbase.thirdparty.com.google.common.collect.HashMultimap;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSetMultimap;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.common.collect.SetMultimap;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>/**<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * Compact passed set of files in the mob-enabled column family.<a name="line.73"></a>
+<span class="sourceLineNo">074</span> */<a name="line.74"></a>
+<span class="sourceLineNo">075</span>@InterfaceAudience.Private<a name="line.75"></a>
+<span class="sourceLineNo">076</span>public class DefaultMobStoreCompactor extends DefaultCompactor {<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span> private static final Logger LOG = LoggerFactory.getLogger(DefaultMobStoreCompactor.class);<a name="line.78"></a>
+<span class="sourceLineNo">079</span> protected long mobSizeThreshold;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> protected HMobStore mobStore;<a name="line.80"></a>
+<span class="sourceLineNo">081</span> protected boolean ioOptimizedMode = false;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span> /*<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * MOB file reference set thread local variable. It contains set of a MOB file names, which newly<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * compacted store file has references to. This variable is populated during compaction and the<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * content of it is written into meta section of a newly created store file at the final step of<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * compaction process.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> */<a name="line.88"></a>
+<span class="sourceLineNo">089</span> static ThreadLocal<SetMultimap<TableName,String>> mobRefSet =<a name="line.89"></a>
+<span class="sourceLineNo">090</span> ThreadLocal.withInitial(HashMultimap::create);<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span> /*<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * Is it user or system-originated request.<a name="line.93"></a>
+<span class="sourceLineNo">094</span> */<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span> static ThreadLocal<Boolean> userRequest = new ThreadLocal<Boolean>() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span> @Override<a name="line.97"></a>
+<span class="sourceLineNo">098</span> protected Boolean initialValue() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span> return Boolean.FALSE;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> }<a name="line.100"></a>
+<span class="sourceLineNo">101</span> };<a name="line.101"></a>
<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span> /*<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * Disable IO mode. IO mode can be forcefully disabled if compactor finds<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * old MOB file (pre-distributed compaction). This means that migration has not<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * been completed yet. During data migration (upgrade) process only general compaction<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * is allowed.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> */<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span> static ThreadLocal<Boolean> disableIO = new ThreadLocal<Boolean>() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span> @Override<a name="line.113"></a>
-<span class="sourceLineNo">114</span> protected Boolean initialValue() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span> return Boolean.FALSE;<a name="line.115"></a>
-<span class="sourceLineNo">116</span> }<a name="line.116"></a>
-<span class="sourceLineNo">117</span> };<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span> /*<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * Map : MOB file name - file length Can be expensive for large amount of MOB files.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> */<a name="line.121"></a>
-<span class="sourceLineNo">122</span> static ThreadLocal<HashMap<String, Long>> mobLengthMap =<a name="line.122"></a>
-<span class="sourceLineNo">123</span> new ThreadLocal<HashMap<String, Long>>() {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> @Override<a name="line.124"></a>
-<span class="sourceLineNo">125</span> protected HashMap<String, Long> initialValue() {<a name="line.125"></a>
-<span class="sourceLineNo">126</span> return new HashMap<String, Long>();<a name="line.126"></a>
-<span class="sourceLineNo">127</span> }<a name="line.127"></a>
-<span class="sourceLineNo">128</span> };<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span> private final InternalScannerFactory scannerFactory = new InternalScannerFactory() {<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span> @Override<a name="line.132"></a>
-<span class="sourceLineNo">133</span> public ScanType getScanType(CompactionRequestImpl request) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span> return request.isAllFiles() ? COMPACT_DROP_DELETES : COMPACT_RETAIN_DELETES;<a name="line.134"></a>
-<span class="sourceLineNo">135</span> }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span> @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span> public InternalScanner createScanner(ScanInfo scanInfo, List<StoreFileScanner> scanners,<a name="line.138"></a>
-<span class="sourceLineNo">139</span> ScanType scanType, FileDetails fd, long smallestReadPoint) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span> return new StoreScanner(store, scanInfo, scanners, scanType, smallestReadPoint,<a name="line.140"></a>
-<span class="sourceLineNo">141</span> fd.earliestPutTs);<a name="line.141"></a>
-<span class="sourceLineNo">142</span> }<a name="line.142"></a>
-<span class="sourceLineNo">143</span> };<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span> private final CellSinkFactory<StoreFileWriter> writerFactory =<a name="line.145"></a>
-<span class="sourceLineNo">146</span> new CellSinkFactory<StoreFileWriter>() {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> @Override<a name="line.147"></a>
-<span class="sourceLineNo">148</span> public StoreFileWriter createWriter(InternalScanner scanner,<a name="line.148"></a>
-<span class="sourceLineNo">149</span> org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails fd,<a name="line.149"></a>
-<span class="sourceLineNo">150</span> boolean shouldDropBehind, boolean major) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span> // make this writer with tags always because of possible new cells with tags.<a name="line.151"></a>
-<span class="sourceLineNo">152</span> return store.createWriterInTmp(fd.maxKeyCount,<a name="line.152"></a>
-<span class="sourceLineNo">153</span> major ? majorCompactionCompression : minorCompactionCompression,<a name="line.153"></a>
-<span class="sourceLineNo">154</span> true, true, true, shouldDropBehind);<a name="line.154"></a>
-<span class="sourceLineNo">155</span> }<a name="line.155"></a>
-<span class="sourceLineNo">156</span> };<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span> public DefaultMobStoreCompactor(Configuration conf, HStore store) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span> super(conf, store);<a name="line.159"></a>
-<span class="sourceLineNo">160</span> // The mob cells reside in the mob-enabled column family which is held by HMobStore.<a name="line.160"></a>
-<span class="sourceLineNo">161</span> // During the compaction, the compactor reads the cells from the mob files and<a name="line.161"></a>
-<span class="sourceLineNo">162</span> // probably creates new mob files. All of these operations are included in HMobStore,<a name="line.162"></a>
-<span class="sourceLineNo">163</span> // so we need to cast the Store to HMobStore.<a name="line.163"></a>
-<span class="sourceLineNo">164</span> if (!(store instanceof HMobStore)) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> throw new IllegalArgumentException("The store " + store + " is not a HMobStore");<a name="line.165"></a>
-<span class="sourceLineNo">166</span> }<a name="line.166"></a>
-<span class="sourceLineNo">167</span> this.mobStore = (HMobStore) store;<a name="line.167"></a>
-<span class="sourceLineNo">168</span> this.mobSizeThreshold = store.getColumnFamilyDescriptor().getMobThreshold();<a name="line.168"></a>
-<span class="sourceLineNo">169</span> this.ioOptimizedMode = conf.get(MobConstants.MOB_COMPACTION_TYPE_KEY,<a name="line.169"></a>
-<span class="sourceLineNo">170</span> MobConstants.DEFAULT_MOB_COMPACTION_TYPE).<a name="line.170"></a>
-<span class="sourceLineNo">171</span> equals(MobConstants.OPTIMIZED_MOB_COMPACTION_TYPE);<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span> }<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span> @Override<a name="line.175"></a>
-<span class="sourceLineNo">176</span> public List<Path> compact(CompactionRequestImpl request,<a name="line.176"></a>
-<span class="sourceLineNo">177</span> ThroughputController throughputController, User user) throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span> String tableName = store.getTableName().toString();<a name="line.178"></a>
-<span class="sourceLineNo">179</span> String regionName = store.getRegionInfo().getRegionNameAsString();<a name="line.179"></a>
-<span class="sourceLineNo">180</span> String familyName = store.getColumnFamilyName();<a name="line.180"></a>
-<span class="sourceLineNo">181</span> LOG.info("MOB compaction: major={} isAll={} priority={} throughput controller={}" +<a name="line.181"></a>
-<span class="sourceLineNo">182</span> " table={} cf={} region={}",<a name="line.182"></a>
-<span class="sourceLineNo">183</span> request.isMajor(), request.isAllFiles(), request.getPriority(),<a name="line.183"></a>
-<span class="sourceLineNo">184</span> throughputController, tableName, familyName, regionName);<a name="line.184"></a>
-<span class="sourceLineNo">185</span> if (request.getPriority() == HStore.PRIORITY_USER) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span> userRequest.set(Boolean.TRUE);<a name="line.186"></a>
-<span class="sourceLineNo">187</span> } else {<a name="line.187"></a>
-<span class="sourceLineNo">188</span> userRequest.set(Boolean.FALSE);<a name="line.188"></a>
-<span class="sourceLineNo">189</span> }<a name="line.189"></a>
-<span class="sourceLineNo">190</span> LOG.debug("MOB compaction table={} cf={} region={} files: {}", tableName, familyName,<a name="line.190"></a>
-<span class="sourceLineNo">191</span> regionName, request.getFiles());<a name="line.191"></a>
-<span class="sourceLineNo">192</span> // Check if I/O optimized MOB compaction<a name="line.192"></a>
-<span class="sourceLineNo">193</span> if (ioOptimizedMode) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span> if (request.isMajor() && request.getPriority() == HStore.PRIORITY_USER) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span> try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span> final SetMultimap<TableName, String> mobRefs = request.getFiles().stream()<a name="line.196"></a>
-<span class="sourceLineNo">197</span> .map(file -> {<a name="line.197"></a>
-<span class="sourceLineNo">198</span> byte[] value = file.getMetadataValue(HStoreFile.MOB_FILE_REFS);<a name="line.198"></a>
-<span class="sourceLineNo">199</span> ImmutableSetMultimap.Builder<TableName, String> builder;<a name="line.199"></a>
-<span class="sourceLineNo">200</span> if (value == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span> builder = ImmutableSetMultimap.builder();<a name="line.201"></a>
-<span class="sourceLineNo">202</span> } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> try {<a name="line.203"></a>
-<span class="sourceLineNo">204</span> builder = MobUtils.deserializeMobFileRefs(value);<a name="line.204"></a>
-<span class="sourceLineNo">205</span> } catch (RuntimeException exception) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span> throw new RuntimeException("failure getting mob references for hfile " + file,<a name="line.206"></a>
-<span class="sourceLineNo">207</span> exception);<a name="line.207"></a>
-<span class="sourceLineNo">208</span> }<a name="line.208"></a>
-<span class="sourceLineNo">209</span> }<a name="line.209"></a>
-<span class="sourceLineNo">210</span> return builder;<a name="line.210"></a>
-<span class="sourceLineNo">211</span> }).reduce((a, b) -> a.putAll(b.build())).orElseGet(ImmutableSetMultimap::builder)<a name="line.211"></a>
-<span class="sourceLineNo">212</span> .build();<a name="line.212"></a>
-<span class="sourceLineNo">213</span> //reset disableIO<a name="line.213"></a>
-<span class="sourceLineNo">214</span> disableIO.set(Boolean.FALSE);<a name="line.214"></a>
-<span class="sourceLineNo">215</span> if (!mobRefs.isEmpty()) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span> calculateMobLengthMap(mobRefs);<a name="line.216"></a>
-<span class="sourceLineNo">217</span> }<a name="line.217"></a>
-<span class="sourceLineNo">218</span> LOG.info("Table={} cf={} region={}. I/O optimized MOB compaction. "+<a name="line.218"></a>
-<span class="sourceLineNo">219</span> "Total referenced MOB files: {}", tableName, familyName, regionName, mobRefs.size());<a name="line.219"></a>
-<span class="sourceLineNo">220</span> } catch (RuntimeException exception) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span> throw new IOException("Failed to get list of referenced hfiles for request " + request,<a name="line.221"></a>
-<span class="sourceLineNo">222</span> exception);<a name="line.222"></a>
-<span class="sourceLineNo">223</span> }<a name="line.223"></a>
-<span class="sourceLineNo">224</span> }<a name="line.224"></a>
-<span class="sourceLineNo">225</span> }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span> return compact(request, scannerFactory, writerFactory, throughputController, user);<a name="line.227"></a>
-<span class="sourceLineNo">228</span> }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span> /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * @param mobRefs multimap of original table name -> mob hfile<a name="line.231"></a>
-<span class="sourceLineNo">232</span> */<a name="line.232"></a>
-<span class="sourceLineNo">233</span> private void calculateMobLengthMap(SetMultimap<TableName, String> mobRefs) throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span> FileSystem fs = store.getFileSystem();<a name="line.234"></a>
-<span class="sourceLineNo">235</span> HashMap<String, Long> map = mobLengthMap.get();<a name="line.235"></a>
-<span class="sourceLineNo">236</span> map.clear();<a name="line.236"></a>
-<span class="sourceLineNo">237</span> for (Entry<TableName, String> reference : mobRefs.entries()) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> final TableName table = reference.getKey();<a name="line.238"></a>
-<span class="sourceLineNo">239</span> final String mobfile = reference.getValue();<a name="line.239"></a>
-<span class="sourceLineNo">240</span> if (MobFileName.isOldMobFileName(mobfile)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span> disableIO.set(Boolean.TRUE);<a name="line.241"></a>
-<span class="sourceLineNo">242</span> }<a name="line.242"></a>
-<span class="sourceLineNo">243</span> List<Path> locations = mobStore.getLocations(table);<a name="line.243"></a>
-<span class="sourceLineNo">244</span> for (Path p : locations) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> try {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> FileStatus st = fs.getFileStatus(new Path(p, mobfile));<a name="line.246"></a>
-<span class="sourceLineNo">247</span> long size = st.getLen();<a name="line.247"></a>
-<span class="sourceLineNo">248</span> LOG.debug("Referenced MOB file={} size={}", mobfile, size);<a name="line.248"></a>
-<span class="sourceLineNo">249</span> map.put(mobfile, size);<a name="line.249"></a>
-<span class="sourceLineNo">250</span> break;<a name="line.250"></a>
-<span class="sourceLineNo">251</span> } catch (FileNotFoundException exception) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span> LOG.debug("Mob file {} was not in location {}. May have other locations to try.", mobfile,<a name="line.252"></a>
-<span class="sourceLineNo">253</span> p);<a name="line.253"></a>
-<span class="sourceLineNo">254</span> }<a name="line.254"></a>
-<span class="sourceLineNo">255</span> }<a name="line.255"></a>
-<span class="sourceLineNo">256</span> if (!map.containsKey(mobfile)) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span> throw new FileNotFoundException("Could not find mob file " + mobfile + " in the list of " +<a name="line.257"></a>
-<span class="sourceLineNo">258</span> "expected locations: " + locations);<a name="line.258"></a>
-<span class="sourceLineNo">259</span> }<a name="line.259"></a>
-<span class="sourceLineNo">260</span> }<a name="line.260"></a>
-<span class="sourceLineNo">261</span> }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span> /**<a name="line.263"></a>
-<span class="sourceLineNo">264</span> * Performs compaction on a column family with the mob flag enabled. This works only when MOB<a name="line.264"></a>
-<span class="sourceLineNo">265</span> * compaction is explicitly requested (by User), or by Master There are two modes of a MOB<a name="line.265"></a>
-<span class="sourceLineNo">266</span> * compaction:<br><a name="line.266"></a>
-<span class="sourceLineNo">267</span> * <p><a name="line.267"></a>
-<span class="sourceLineNo">268</span> * <ul><a name="line.268"></a>
-<span class="sourceLineNo">269</span> * <li>1. Full mode - when all MOB data for a region is compacted into a single MOB file.<a name="line.269"></a>
-<span class="sourceLineNo">270</span> * <li>2. I/O optimized mode - for use cases with no or infrequent updates/deletes of a <br><a name="line.270"></a>
-<span class="sourceLineNo">271</span> * MOB data. The main idea behind i/o optimized compaction is to limit maximum size of a MOB file<a name="line.271"></a>
-<span class="sourceLineNo">272</span> * produced during compaction and to limit I/O write/read amplification.<a name="line.272"></a>
-<span class="sourceLineNo">273</span> * </ul><a name="line.273"></a>
-<span class="sourceLineNo">274</span> * The basic algorithm of compaction is the following: <br><a name="line.274"></a>
-<span class="sourceLineNo">275</span> * 1. If the Put cell has a mob reference tag, the cell's value is the path of the mob file.<a name="line.275"></a>
-<span class="sourceLineNo">276</span> * <ol><a name="line.276"></a>
-<span class="sourceLineNo">277</span> * <li>If the value size of a cell is larger than the threshold, this cell is regarded as a mob,<a name="line.277"></a>
-<span class="sourceLineNo">278</span> * directly copy the (with mob tag) cell into the new store file.</li><a name="line.278"></a>
-<span class="sourceLineNo">279</span> * <li>Otherwise, retrieve the mob cell from the mob file, and writes a copy of the cell into the<a name="line.279"></a>
-<span class="sourceLineNo">280</span> * new store file.</li><a name="line.280"></a>
-<span class="sourceLineNo">281</span> * </ol><a name="line.281"></a>
-<span class="sourceLineNo">282</span> * 2. If the Put cell doesn't have a reference tag.<a name="line.282"></a>
-<span class="sourceLineNo">283</span> * <ol><a name="line.283"></a>
-<span class="sourceLineNo">284</span> * <li>If the value size of a cell is larger than the threshold, this cell is regarded as a mob,<a name="line.284"></a>
-<span class="sourceLineNo">285</span> * write this cell to a mob file, and write the path of this mob file to the store file.</li><a name="line.285"></a>
-<span class="sourceLineNo">286</span> * <li>Otherwise, directly write this cell into the store file.</li><a name="line.286"></a>
-<span class="sourceLineNo">287</span> * </ol><a name="line.287"></a>
-<span class="sourceLineNo">288</span> * @param fd File details<a name="line.288"></a>
-<span class="sourceLineNo">289</span> * @param scanner Where to read from.<a name="line.289"></a>
-<span class="sourceLineNo">290</span> * @param writer Where to write to.<a name="line.290"></a>
-<span class="sourceLineNo">291</span> * @param smallestReadPoint Smallest read point.<a name="line.291"></a>
-<span class="sourceLineNo">292</span> * @param cleanSeqId When true, remove seqId(used to be mvcc) value which is <= smallestReadPoint<a name="line.292"></a>
-<span class="sourceLineNo">293</span> * @param throughputController The compaction throughput controller.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> * @param major Is a major compaction.<a name="line.294"></a>
-<span class="sourceLineNo">295</span> * @param numofFilesToCompact the number of files to compact<a name="line.295"></a>
-<span class="sourceLineNo">296</span> * @return Whether compaction ended; false if it was interrupted for any reason.<a name="line.296"></a>
-<span class="sourceLineNo">297</span> */<a name="line.297"></a>
-<span class="sourceLineNo">298</span> @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span> protected boolean performCompaction(FileDetails fd, InternalScanner scanner, CellSink writer,<a name="line.299"></a>
-<span class="sourceLineNo">300</span> long smallestReadPoint, boolean cleanSeqId, ThroughputController throughputController,<a name="line.300"></a>
-<span class="sourceLineNo">301</span> boolean major, int numofFilesToCompact) throws IOException {<a name="line.301"></a>
-<span class="sourceLineNo">302</span> long bytesWrittenProgressForLog = 0;<a name="line.302"></a>
-<span class="sourceLineNo">303</span> long bytesWrittenProgressForShippedCall = 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> // Clear old mob references<a name="line.304"></a>
-<span class="sourceLineNo">305</span> mobRefSet.get().clear();<a name="line.305"></a>
-<span class="sourceLineNo">306</span> boolean isUserRequest = userRequest.get();<a name="line.306"></a>
-<span class="sourceLineNo">307</span> boolean compactMOBs = major && isUserRequest;<a name="line.307"></a>
-<span class="sourceLineNo">308</span> boolean discardMobMiss = conf.getBoolean(MobConstants.MOB_UNSAFE_DISCARD_MISS_KEY,<a name="line.308"></a>
-<span class="sourceLineNo">309</span> MobConstants.DEFAULT_MOB_DISCARD_MISS);<a name="line.309"></a>
-<span class="sourceLineNo">310</span> if (discardMobMiss) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span> LOG.warn("{}=true. This is unsafe setting recommended only when first upgrading to a version"+<a name="line.311"></a>
-<span class="sourceLineNo">312</span> " with the distributed mob compaction feature on a cluster that has experienced MOB data " +<a name="line.312"></a>
-<span class="sourceLineNo">313</span> "corruption.", MobConstants.MOB_UNSAFE_DISCARD_MISS_KEY);<a name="line.313"></a>
-<span class="sourceLineNo">314</span> }<a name="line.314"></a>
-<span class="sourceLineNo">315</span> long maxMobFileSize = conf.getLong(MobConstants.MOB_COMPACTION_MAX_FILE_SIZE_KEY,<a name="line.315"></a>
-<span class="sourceLineNo">316</span> MobConstants.DEFAULT_MOB_COMPACTION_MAX_FILE_SIZE);<a name="line.316"></a>
-<span class="sourceLineNo">317</span> boolean ioOptimizedMode = this.ioOptimizedMode && !disableIO.get();<a name="line.317"></a>
-<span class="sourceLineNo">318</span> LOG.info("Compact MOB={} optimized configured={} optimized enabled={} maximum MOB file size={}"<a name="line.318"></a>
-<span class="sourceLineNo">319</span> + " major={} store={}", compactMOBs,<a name="line.319"></a>
-<span class="sourceLineNo">320</span> this.ioOptimizedMode, ioOptimizedMode, maxMobFileSize, major, getStoreInfo());<a name="line.320"></a>
-<span class="sourceLineNo">321</span> // Since scanner.next() can return 'false' but still be delivering data,<a name="line.321"></a>
-<span class="sourceLineNo">322</span> // we have to use a do/while loop.<a name="line.322"></a>
-<span class="sourceLineNo">323</span> List<Cell> cells = new ArrayList<>();<a name="line.323"></a>
-<span class="sourceLineNo">324</span> // Limit to "hbase.hstore.compaction.kv.max" (default 10) to avoid OOME<a name="line.324"></a>
-<span class="sourceLineNo">325</span> long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.325"></a>
-<span class="sourceLineNo">326</span> long lastMillis = 0;<a name="line.326"></a>
-<span class="sourceLineNo">327</span> if (LOG.isDebugEnabled()) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> lastMillis = currentTime;<a name="line.328"></a>
-<span class="sourceLineNo">329</span> }<a name="line.329"></a>
-<span class="sourceLineNo">330</span> CloseChecker closeChecker = new CloseChecker(conf, currentTime);<a name="line.330"></a>
-<span class="sourceLineNo">331</span> String compactionName = ThroughputControlUtil.getNameForThrottling(store, "compaction");<a name="line.331"></a>
-<span class="sourceLineNo">332</span> long now = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span> boolean hasMore;<a name="line.333"></a>
-<span class="sourceLineNo">334</span> byte[] fileName = null;<a name="line.334"></a>
-<span class="sourceLineNo">335</span> StoreFileWriter mobFileWriter = null;<a name="line.335"></a>
-<span class="sourceLineNo">336</span> /*<a name="line.336"></a>
-<span class="sourceLineNo">337</span> * mobCells are used only to decide if we need to commit or abort current MOB output file.<a name="line.337"></a>
-<span class="sourceLineNo">338</span> */<a name="line.338"></a>
-<span class="sourceLineNo">339</span> long mobCells = 0;<a name="line.339"></a>
-<span class="sourceLineNo">340</span> long cellsCountCompactedToMob = 0, cellsCountCompactedFromMob = 0;<a name="line.340"></a>
-<span class="sourceLineNo">341</span> long cellsSizeCompactedToMob = 0, cellsSizeCompactedFromMob = 0;<a name="line.341"></a>
-<span class="sourceLineNo">342</span> boolean finished = false;<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span> ScannerContext scannerContext =<a name="line.344"></a>
-<span class="sourceLineNo">345</span> ScannerContext.newBuilder().setBatchLimit(compactionKVMax).build();<a name="line.345"></a>
-<span class="sourceLineNo">346</span> throughputController.start(compactionName);<a name="line.346"></a>
-<span class="sourceLineNo">347</span> KeyValueScanner kvs = (scanner instanceof KeyValueScanner) ? (KeyValueScanner) scanner : null;<a name="line.347"></a>
-<span class="sourceLineNo">348</span> long shippedCallSizeLimit =<a name="line.348"></a>
-<span class="sourceLineNo">349</span> (long) numofFilesToCompact * this.store.getColumnFamilyDescriptor().getBlocksize();<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span> Cell mobCell = null;<a name="line.351"></a>
-<span class="sourceLineNo">352</span> try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> mobFileWriter = newMobWriter(fd, major);<a name="line.354"></a>
-<span class="sourceLineNo">355</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span> do {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> hasMore = scanner.next(cells, scannerContext);<a name="line.358"></a>
-<span class="sourceLineNo">359</span> currentTime = EnvironmentEdgeManager.currentTime();<a name="line.359"></a>
-<span class="sourceLineNo">360</span> if (LOG.isDebugEnabled()) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> now = currentTime;<a name="line.361"></a>
-<span class="sourceLineNo">362</span> }<a name="line.362"></a>
-<span class="sourceLineNo">363</span> if (closeChecker.isTimeLimit(store, currentTime)) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span> progress.cancel();<a name="line.364"></a>
-<span class="sourceLineNo">365</span> return false;<a name="line.365"></a>
-<span class="sourceLineNo">366</span> }<a name="line.366"></a>
-<span class="sourceLineNo">367</span> for (Cell c : cells) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span> if (compactMOBs) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span> if (MobUtils.isMobReferenceCell(c)) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span> String fName = MobUtils.getMobFileName(c);<a name="line.370"></a>
-<span class="sourceLineNo">371</span> // Added to support migration<a name="line.371"></a>
-<span class="sourceLineNo">372</span> try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span> mobCell = mobStore.resolve(c, true, false).getCell();<a name="line.373"></a>
-<span class="sourceLineNo">374</span> } catch (FileNotFoundException fnfe) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span> if (discardMobMiss) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> LOG.error("Missing MOB cell: file={} not found cell={}", fName, c);<a name="line.376"></a>
-<span class="sourceLineNo">377</span> continue;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> } else {<a name="line.378"></a>
-<span class="sourceLineNo">379</span> throw fnfe;<a name="line.379"></a>
-<span class="sourceLineNo">380</span> }<a name="line.380"></a>
-<span class="sourceLineNo">381</span> }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span> if (discardMobMiss && mobCell.getValueLength() == 0) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span> LOG.error("Missing MOB cell value: file={} mob cell={} cell={}", fName,<a name="line.384"></a>
-<span class="sourceLineNo">385</span> mobCell, c);<a name="line.385"></a>
-<span class="sourceLineNo">386</span> continue;<a name="line.386"></a>
-<span class="sourceLineNo">387</span> } else if (mobCell.getValueLength() == 0) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span> String errMsg = String.format("Found 0 length MOB cell in a file=%s mob cell=%s "<a name="line.388"></a>
-<span class="sourceLineNo">389</span> + " cell=%s",<a name="line.389"></a>
-<span class="sourceLineNo">390</span> fName, mobCell, c);<a name="line.390"></a>
-<span class="sourceLineNo">391</span> throw new IOException(errMsg);<a name="line.391"></a>
-<span class="sourceLineNo">392</span> }<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span> if (mobCell.getValueLength() > mobSizeThreshold) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span> // put the mob data back to the MOB store file<a name="line.395"></a>
-<span class="sourceLineNo">396</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.396"></a>
-<span class="sourceLineNo">397</span> if (!ioOptimizedMode) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span> mobFileWriter.append(mobCell);<a name="line.398"></a>
-<span class="sourceLineNo">399</span> mobCells++;<a name="line.399"></a>
-<span class="sourceLineNo">400</span> writer.append(<a name="line.400"></a>
-<span class="sourceLineNo">401</span> MobUtils.createMobRefCell(mobCell, fileName, this.mobStore.getRefCellTags()));<a name="line.401"></a>
-<span class="sourceLineNo">402</span> } else {<a name="line.402"></a>
-<span class="sourceLineNo">403</span> // I/O optimized mode<a name="line.403"></a>
-<span class="sourceLineNo">404</span> // Check if MOB cell origin file size is<a name="line.404"></a>
-<span class="sourceLineNo">405</span> // greater than threshold<a name="line.405"></a>
-<span class="sourceLineNo">406</span> Long size = mobLengthMap.get().get(fName);<a name="line.406"></a>
-<span class="sourceLineNo">407</span> if (size == null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span> // FATAL error (we should never get here though), abort compaction<a name="line.408"></a>
-<span class="sourceLineNo">409</span> // This error means that meta section of store file does not contain<a name="line.409"></a>
-<span class="sourceLineNo">410</span> // MOB file, which has references in at least one cell from this store file<a name="line.410"></a>
-<span class="sourceLineNo">411</span> String msg = String.format(<a name="line.411"></a>
-<span class="sourceLineNo">412</span> "Found an unexpected MOB file during compaction %s, aborting compaction %s",<a name="line.412"></a>
-<span class="sourceLineNo">413</span> fName, getStoreInfo());<a name="line.413"></a>
-<span class="sourceLineNo">414</span> throw new IOException(msg);<a name="line.414"></a>
-<span class="sourceLineNo">415</span> }<a name="line.415"></a>
-<span class="sourceLineNo">416</span> // Can not be null<a name="line.416"></a>
-<span class="sourceLineNo">417</span> if (size < maxMobFileSize) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span> // If MOB cell origin file is below threshold<a name="line.418"></a>
-<span class="sourceLineNo">419</span> // it is get compacted<a name="line.419"></a>
-<span class="sourceLineNo">420</span> mobFileWriter.append(mobCell);<a name="line.420"></a>
-<span class="sourceLineNo">421</span> // Update number of mobCells in a current mob writer<a name="line.421"></a>
-<span class="sourceLineNo">422</span> mobCells++;<a name="line.422"></a>
-<span class="sourceLineNo">423</span> writer.append(<a name="line.423"></a>
-<span class="sourceLineNo">424</span> MobUtils.createMobRefCell(mobCell, fileName, this.mobStore.getRefCellTags()));<a name="line.424"></a>
-<span class="sourceLineNo">425</span> // Update total size of the output (we do not take into account<a name="line.425"></a>
-<span class="sourceLineNo">426</span> // file compression yet)<a name="line.426"></a>
-<span class="sourceLineNo">427</span> long len = mobFileWriter.getPos();<a name="line.427"></a>
-<span class="sourceLineNo">428</span> if (len > maxMobFileSize) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span> LOG.debug("Closing output MOB File, length={} file={}, store={}", len,<a name="line.429"></a>
-<span class="sourceLineNo">430</span> mobFileWriter.getPath().getName(), getStoreInfo());<a name="line.430"></a>
-<span class="sourceLineNo">431</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.431"></a>
-<span class="sourceLineNo">432</span> mobFileWriter = newMobWriter(fd, major);<a name="line.432"></a>
-<span class="sourceLineNo">433</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.433"></a>
-<span class="sourceLineNo">434</span> mobCells = 0;<a name="line.434"></a>
-<span class="sourceLineNo">435</span> }<a name="line.435"></a>
-<span class="sourceLineNo">436</span> } else {<a name="line.436"></a>
-<span class="sourceLineNo">437</span> // We leave large MOB file as is (is not compacted),<a name="line.437"></a>
-<span class="sourceLineNo">438</span> // then we update set of MOB file references<a name="line.438"></a>
-<span class="sourceLineNo">439</span> // and append mob cell directly to the store's writer<a name="line.439"></a>
-<span class="sourceLineNo">440</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.440"></a>
-<span class="sourceLineNo">441</span> if (refTable.isPresent()) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span> mobRefSet.get().put(refTable.get(), fName);<a name="line.442"></a>
-<span class="sourceLineNo">443</span> writer.append(c);<a name="line.443"></a>
-<span class="sourceLineNo">444</span> } else {<a name="line.444"></a>
-<span class="sourceLineNo">445</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.445"></a>
-<span class="sourceLineNo">446</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.447"></a>
-<span class="sourceLineNo">448</span> }<a name="line.448"></a>
-<span class="sourceLineNo">449</span> }<a name="line.449"></a>
-<span class="sourceLineNo">450</span> }<a name="line.450"></a>
-<span class="sourceLineNo">451</span> } else {<a name="line.451"></a>
-<span class="sourceLineNo">452</span> // If MOB value is less than threshold, append it directly to a store file<a name="line.452"></a>
-<span class="sourceLineNo">453</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.453"></a>
-<span class="sourceLineNo">454</span> writer.append(mobCell);<a name="line.454"></a>
-<span class="sourceLineNo">455</span> cellsCountCompactedFromMob++;<a name="line.455"></a>
-<span class="sourceLineNo">456</span> cellsSizeCompactedFromMob += mobCell.getValueLength();<a name="line.456"></a>
-<span class="sourceLineNo">457</span> }<a name="line.457"></a>
-<span class="sourceLineNo">458</span> } else {<a name="line.458"></a>
-<span class="sourceLineNo">459</span> // Not a MOB reference cell<a name="line.459"></a>
-<span class="sourceLineNo">460</span> int size = c.getValueLength();<a name="line.460"></a>
-<span class="sourceLineNo">461</span> if (size > mobSizeThreshold) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span> // This MOB cell comes from a regular store file<a name="line.462"></a>
-<span class="sourceLineNo">463</span> // therefore we store it into original mob output<a name="line.463"></a>
-<span class="sourceLineNo">464</span> mobFileWriter.append(c);<a name="line.464"></a>
-<span class="sourceLineNo">465</span> writer<a name="line.465"></a>
-<span class="sourceLineNo">466</span> .append(MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags()));<a name="line.466"></a>
-<span class="sourceLineNo">467</span> mobCells++;<a name="line.467"></a>
-<span class="sourceLineNo">468</span> cellsCountCompactedToMob++;<a name="line.468"></a>
-<span class="sourceLineNo">469</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.469"></a>
-<span class="sourceLineNo">470</span> if (ioOptimizedMode) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span> // Update total size of the output (we do not take into account<a name="line.471"></a>
-<span class="sourceLineNo">472</span> // file compression yet)<a name="line.472"></a>
-<span class="sourceLineNo">473</span> long len = mobFileWriter.getPos();<a name="line.473"></a>
-<span class="sourceLineNo">474</span> if (len > maxMobFileSize) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.475"></a>
-<span class="sourceLineNo">476</span> mobFileWriter = newMobWriter(fd, major);<a name="line.476"></a>
-<span class="sourceLineNo">477</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.477"></a>
-<span class="sourceLineNo">478</span> mobCells = 0;<a name="line.478"></a>
-<span class="sourceLineNo">479</span> }<a name="line.479"></a>
-<span class="sourceLineNo">480</span> }<a name="line.480"></a>
-<span class="sourceLineNo">481</span> } else {<a name="line.481"></a>
-<span class="sourceLineNo">482</span> // Not a MOB cell, write it directly to a store file<a name="line.482"></a>
-<span class="sourceLineNo">483</span> writer.append(c);<a name="line.483"></a>
-<span class="sourceLineNo">484</span> }<a name="line.484"></a>
-<span class="sourceLineNo">485</span> }<a name="line.485"></a>
-<span class="sourceLineNo">486</span> } else if (c.getTypeByte() != KeyValue.Type.Put.getCode()) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span> // Not a major compaction or major with MOB disabled<a name="line.487"></a>
-<span class="sourceLineNo">488</span> // If the kv type is not put, directly write the cell<a name="line.488"></a>
-<span class="sourceLineNo">489</span> // to the store file.<a name="line.489"></a>
-<span class="sourceLineNo">490</span> writer.append(c);<a name="line.490"></a>
-<span class="sourceLineNo">491</span> } else if (MobUtils.isMobReferenceCell(c)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span> // Not a major MOB compaction, Put MOB reference<a name="line.492"></a>
-<span class="sourceLineNo">493</span> if (MobUtils.hasValidMobRefCellValue(c)) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span> // We do not check mobSizeThreshold during normal compaction,<a name="line.494"></a>
-<span class="sourceLineNo">495</span> // leaving it to a MOB compaction run<a name="line.495"></a>
-<span class="sourceLineNo">496</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.496"></a>
-<span class="sourceLineNo">497</span> if (refTable.isPresent()) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span> mobRefSet.get().put(refTable.get(), MobUtils.getMobFileName(c));<a name="line.498"></a>
-<span class="sourceLineNo">499</span> writer.append(c);<a name="line.499"></a>
-<span class="sourceLineNo">500</span> } else {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.501"></a>
-<span class="sourceLineNo">502</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.502"></a>
-<span class="sourceLineNo">503</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.503"></a>
-<span class="sourceLineNo">504</span> }<a name="line.504"></a>
-<span class="sourceLineNo">505</span> } else {<a name="line.505"></a>
-<span class="sourceLineNo">506</span> String errMsg = String.format("Corrupted MOB reference: %s", c.toString());<a name="line.506"></a>
-<span class="sourceLineNo">507</span> throw new IOException(errMsg);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> }<a name="line.508"></a>
-<span class="sourceLineNo">509</span> } else if (c.getValueLength() <= mobSizeThreshold) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span> // If the value size of a cell is not larger than the threshold, directly write it to<a name="line.510"></a>
-<span class="sourceLineNo">511</span> // the store file.<a name="line.511"></a>
-<span class="sourceLineNo">512</span> writer.append(c);<a name="line.512"></a>
-<span class="sourceLineNo">513</span> } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span> // If the value size of a cell is larger than the threshold, it's regarded as a mob,<a name="line.514"></a>
-<span class="sourceLineNo">515</span> // write this cell to a mob file, and write the path to the store file.<a name="line.515"></a>
-<span class="sourceLineNo">516</span> mobCells++;<a name="line.516"></a>
-<span class="sourceLineNo">517</span> // append the original keyValue in the mob file.<a name="line.517"></a>
-<span class="sourceLineNo">518</span> mobFileWriter.append(c);<a name="line.518"></a>
-<span class="sourceLineNo">519</span> Cell reference = MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags());<a name="line.519"></a>
-<span class="sourceLineNo">520</span> // write the cell whose value is the path of a mob file to the store file.<a name="line.520"></a>
-<span class="sourceLineNo">521</span> writer.append(reference);<a name="line.521"></a>
-<span class="sourceLineNo">522</span> cellsCountCompactedToMob++;<a name="line.522"></a>
-<span class="sourceLineNo">523</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.523"></a>
-<span class="sourceLineNo">524</span> if (ioOptimizedMode) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span> long len = mobFileWriter.getPos();<a name="line.525"></a>
-<span class="sourceLineNo">526</span> if (len > maxMobFileSize) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.527"></a>
-<span class="sourceLineNo">528</span> mobFileWriter = newMobWriter(fd, major);<a name="line.528"></a>
-<span class="sourceLineNo">529</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.529"></a>
-<span class="sourceLineNo">530</span> mobCells = 0;<a name="line.530"></a>
-<span class="sourceLineNo">531</span> }<a name="line.531"></a>
-<span class="sourceLineNo">532</span> }<a name="line.532"></a>
-<span class="sourceLineNo">533</span> }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span> int len = c.getSerializedSize();<a name="line.535"></a>
-<span class="sourceLineNo">536</span> ++progress.currentCompactedKVs;<a name="line.536"></a>
-<span class="sourceLineNo">537</span> progress.totalCompactedSize += len;<a name="line.537"></a>
-<span class="sourceLineNo">538</span> bytesWrittenProgressForShippedCall += len;<a name="line.538"></a>
-<span class="sourceLineNo">539</span> if (LOG.isDebugEnabled()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span> bytesWrittenProgressForLog += len;<a name="line.540"></a>
-<span class="sourceLineNo">541</span> }<a name="line.541"></a>
-<span class="sourceLineNo">542</span> throughputController.control(compactionName, len);<a name="line.542"></a>
-<span class="sourceLineNo">543</span> if (closeChecker.isSizeLimit(store, len)) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span> progress.cancel();<a name="line.544"></a>
-<span class="sourceLineNo">545</span> return false;<a name="line.545"></a>
-<span class="sourceLineNo">546</span> }<a name="line.546"></a>
-<span class="sourceLineNo">547</span> if (kvs != null && bytesWrittenProgressForShippedCall > shippedCallSizeLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span> ((ShipperListener) writer).beforeShipped();<a name="line.548"></a>
-<span class="sourceLineNo">549</span> kvs.shipped();<a name="line.549"></a>
-<span class="sourceLineNo">550</span> bytesWrittenProgressForShippedCall = 0;<a name="line.550"></a>
-<span class="sourceLineNo">551</span> }<a name="line.551"></a>
-<span class="sourceLineNo">552</span> }<a name="line.552"></a>
-<span class="sourceLineNo">553</span> // Log the progress of long running compactions every minute if<a name="line.553"></a>
-<span class="sourceLineNo">554</span> // logging at DEBUG level<a name="line.554"></a>
-<span class="sourceLineNo">555</span> if (LOG.isDebugEnabled()) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span> if ((now - lastMillis) >= COMPACTION_PROGRESS_LOG_INTERVAL) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span> String rate = String.format("%.2f",<a name="line.557"></a>
-<span class="sourceLineNo">558</span> (bytesWrittenProgressForLog / 1024.0) / ((now - lastMillis) / 1000.0));<a name="line.558"></a>
-<span class="sourceLineNo">559</span> LOG.debug("Compaction progress: {} {}, rate={} KB/sec, throughputController is {}",<a name="line.559"></a>
-<span class="sourceLineNo">560</span> compactionName, progress, rate, throughputController);<a name="line.560"></a>
-<span class="sourceLineNo">561</span> lastMillis = now;<a name="line.561"></a>
-<span class="sourceLineNo">562</span> bytesWrittenProgressForLog = 0;<a name="line.562"></a>
-<span class="sourceLineNo">563</span> }<a name="line.563"></a>
-<span class="sourceLineNo">564</span> }<a name="line.564"></a>
-<span class="sourceLineNo">565</span> cells.clear();<a name="line.565"></a>
-<span class="sourceLineNo">566</span> } while (hasMore);<a name="line.566"></a>
-<span class="sourceLineNo">567</span> finished = true;<a name="line.567"></a>
-<span class="sourceLineNo">568</span> } catch (InterruptedException e) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span> progress.cancel();<a name="line.569"></a>
-<span class="sourceLineNo">570</span> throw new InterruptedIOException(<a name="line.570"></a>
-<span class="sourceLineNo">571</span> "Interrupted while control throughput of compacting " + compactionName);<a name="line.571"></a>
-<span class="sourceLineNo">572</span> } catch (IOException t) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span> String msg = "Mob compaction failed for region: " +<a name="line.573"></a>
-<span class="sourceLineNo">574</span> store.getRegionInfo().getEncodedName();<a name="line.574"></a>
-<span class="sourceLineNo">575</span> throw new IOException(msg, t);<a name="line.575"></a>
-<span class="sourceLineNo">576</span> } finally {<a name="line.576"></a>
-<span class="sourceLineNo">577</span> // Clone last cell in the final because writer will append last cell when committing. If<a name="line.577"></a>
-<span class="sourceLineNo">578</span> // don't clone here and once the scanner get closed, then the memory of last cell will be<a name="line.578"></a>
-<span class="sourceLineNo">579</span> // released. (HBASE-22582)<a name="line.579"></a>
-<span class="sourceLineNo">580</span> ((ShipperListener) writer).beforeShipped();<a name="line.580"></a>
-<span class="sourceLineNo">581</span> throughputController.finish(compactionName);<a name="line.581"></a>
-<span class="sourceLineNo">582</span> if (!finished && mobFileWriter != null) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span> // Remove all MOB references because compaction failed<a name="line.583"></a>
-<span class="sourceLineNo">584</span> clearThreadLocals();<a name="line.584"></a>
-<span class="sourceLineNo">585</span> // Abort writer<a name="line.585"></a>
-<span class="sourceLineNo">586</span> LOG.debug("Aborting writer for {} because of a compaction failure, Store {}",<a name="line.586"></a>
-<span class="sourceLineNo">587</span> mobFileWriter.getPath(), getStoreInfo());<a name="line.587"></a>
-<span class="sourceLineNo">588</span> abortWriter(mobFileWriter);<a name="line.588"></a>
-<span class="sourceLineNo">589</span> }<a name="line.589"></a>
-<span class="sourceLineNo">590</span> }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span> // Commit last MOB writer<a name="line.592"></a>
-<span class="sourceLineNo">593</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.593"></a>
-<span class="sourceLineNo">594</span> mobStore.updateCellsCountCompactedFromMob(cellsCountCompactedFromMob);<a name="line.594"></a>
-<span class="sourceLineNo">595</span> mobStore.updateCellsCountCompactedToMob(cellsCountCompactedToMob);<a name="line.595"></a>
-<span class="sourceLineNo">596</span> mobStore.updateCellsSizeCompactedFromMob(cellsSizeCompactedFromMob);<a name="line.596"></a>
-<span class="sourceLineNo">597</span> mobStore.updateCellsSizeCompactedToMob(cellsSizeCompactedToMob);<a name="line.597"></a>
-<span class="sourceLineNo">598</span> progress.complete();<a name="line.598"></a>
-<span class="sourceLineNo">599</span> return true;<a name="line.599"></a>
-<span class="sourceLineNo">600</span> }<a name="line.600"></a>
-<span class="sourceLineNo">601</span><a name="line.601"></a>
-<span class="sourceLineNo">602</span> protected String getStoreInfo() {<a name="line.602"></a>
-<span class="sourceLineNo">603</span> return String.format("[table=%s family=%s region=%s]", store.getTableName().getNameAsString(),<a name="line.603"></a>
-<span class="sourceLineNo">604</span> store.getColumnFamilyName(), store.getRegionInfo().getEncodedName()) ;<a name="line.604"></a>
-<span class="sourceLineNo">605</span> }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span> private void clearThreadLocals() {<a name="line.607"></a>
-<span class="sourceLineNo">608</span> mobRefSet.get().clear();<a name="line.608"></a>
-<span class="sourceLineNo">609</span> HashMap<String, Long> map = mobLengthMap.get();<a name="line.609"></a>
-<span class="sourceLineNo">610</span> if (map != null) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span> map.clear();<a name="line.611"></a>
-<span class="sourceLineNo">612</span> }<a name="line.612"></a>
-<span class="sourceLineNo">613</span> }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span> private StoreFileWriter newMobWriter(FileDetails fd, boolean major)<a name="line.615"></a>
-<span class="sourceLineNo">616</span> throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span> try {<a name="line.617"></a>
-<span class="sourceLineNo">618</span> StoreFileWriter mobFileWriter = mobStore.createWriterInTmp(new Date(fd.latestPutTs),<a name="line.618"></a>
-<span class="sourceLineNo">619</span> fd.maxKeyCount, major ? majorCompactionCompression : minorCompactionCompression,<a name="line.619"></a>
-<span class="sourceLineNo">620</span> store.getRegionInfo().getStartKey(), true);<a name="line.620"></a>
-<span class="sourceLineNo">621</span> LOG.debug("New MOB writer created={} store={}", mobFileWriter.getPath().getName(),<a name="line.621"></a>
-<span class="sourceLineNo">622</span> getStoreInfo());<a name="line.622"></a>
-<span class="sourceLineNo">623</span> // Add reference we get for compact MOB<a name="line.623"></a>
-<span class="sourceLineNo">624</span> mobRefSet.get().put(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.624"></a>
-<span class="sourceLineNo">625</span> return mobFileWriter;<a name="line.625"></a>
-<span class="sourceLineNo">626</span> } catch (IOException e) {<a name="line.626"></a>
-<span class="sourceLineNo">627</span> // Bailing out<a name="line.627"></a>
-<span class="sourceLineNo">628</span> throw new IOException(String.format("Failed to create mob writer, store=%s",<a name="line.628"></a>
-<span class="sourceLineNo">629</span> getStoreInfo()), e);<a name="line.629"></a>
-<span class="sourceLineNo">630</span> }<a name="line.630"></a>
-<span class="sourceLineNo">631</span> }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span> private void commitOrAbortMobWriter(StoreFileWriter mobFileWriter, long maxSeqId, long mobCells,<a name="line.633"></a>
-<span class="sourceLineNo">634</span> boolean major) throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span> // Commit or abort major mob writer<a name="line.635"></a>
-<span class="sourceLineNo">636</span> // If IOException happens during below operation, some<a name="line.636"></a>
-<span class="sourceLineNo">637</span> // MOB files can be committed partially, but corresponding<a name="line.637"></a>
-<span class="sourceLineNo">638</span> // store file won't be committed, therefore these MOB files<a name="line.638"></a>
-<span class="sourceLineNo">639</span> // become orphans and will be deleted during next MOB cleaning chore cycle<a name="line.639"></a>
-<span class="sourceLineNo">640</span><a name="line.640"></a>
-<span class="sourceLineNo">641</span> if (mobFileWriter != null) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span> LOG.debug("Commit or abort size={} mobCells={} major={} file={}, store={}",<a name="line.642"></a>
-<span class="sourceLineNo">643</span> mobFileWriter.getPos(), mobCells, major, mobFileWriter.getPath().getName(),<a name="line.643"></a>
-<span class="sourceLineNo">644</span> getStoreInfo());<a name="line.644"></a>
-<span class="sourceLineNo">645</span> Path path =<a name="line.645"></a>
-<span class="sourceLineNo">646</span> MobUtils.getMobFamilyPath(conf, store.getTableName(), store.getColumnFamilyName());<a name="line.646"></a>
-<span class="sourceLineNo">647</span> if (mobCells > 0) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span> // If the mob file is not empty, commit it.<a name="line.648"></a>
-<span class="sourceLineNo">649</span> mobFileWriter.appendMetadata(maxSeqId, major, mobCells);<a name="line.649"></a>
-<span class="sourceLineNo">650</span> mobFileWriter.close();<a name="line.650"></a>
-<span class="sourceLineNo">651</span> mobStore.commitFile(mobFileWriter.getPath(), path);<a name="line.651"></a>
-<span class="sourceLineNo">652</span> } else {<a name="line.652"></a>
-<span class="sourceLineNo">653</span> // If the mob file is empty, delete it instead of committing.<a name="line.653"></a>
-<span class="sourceLineNo">654</span> LOG.debug("Aborting writer for {} because there are no MOB cells, store={}",<a name="line.654"></a>
-<span class="sourceLineNo">655</span> mobFileWriter.getPath(), getStoreInfo());<a name="line.655"></a>
-<span class="sourceLineNo">656</span> // Remove MOB file from reference set<a name="line.656"></a>
-<span class="sourceLineNo">657</span> mobRefSet.get().remove(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.657"></a>
-<span class="sourceLineNo">658</span> abortWriter(mobFileWriter);<a name="line.658"></a>
-<span class="sourceLineNo">659</span> }<a name="line.659"></a>
-<span class="sourceLineNo">660</span> } else {<a name="line.660"></a>
-<span class="sourceLineNo">661</span> LOG.debug("Mob file writer is null, skipping commit/abort, store=",<a name="line.661"></a>
-<span class="sourceLineNo">662</span> getStoreInfo());<a name="line.662"></a>
-<span class="sourceLineNo">663</span> }<a name="line.663"></a>
-<span class="sourceLineNo">664</span> }<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span><a name="line.666"></a>
-<span class="sourceLineNo">667</span> @Override<a name="line.667"></a>
-<span class="sourceLineNo">668</span> protected List<Path> commitWriter(StoreFileWriter writer, FileDetails fd,<a name="line.668"></a>
-<span class="sourceLineNo">669</span> CompactionRequestImpl request) throws IOException {<a name="line.669"></a>
-<span class="sourceLineNo">670</span> List<Path> newFiles = Lists.newArrayList(writer.getPath());<a name="line.670"></a>
-<span class="sourceLineNo">671</span> writer.appendMetadata(fd.maxSeqId, request.isAllFiles(), request.getFiles());<a name="line.671"></a>
-<span class="sourceLineNo">672</span> writer.appendMobMetadata(mobRefSet.get());<a name="line.672"></a>
-<span class="sourceLineNo">673</span> writer.close();<a name="line.673"></a>
-<span class="sourceLineNo">674</span> clearThreadLocals();<a name="line.674"></a>
-<span class="sourceLineNo">675</span> return newFiles;<a name="line.675"></a>
-<span class="sourceLineNo">676</span> }<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>}<a name="line.678"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span> /*<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * Disable IO mode. IO mode can be forcefully disabled if compactor finds<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * old MOB file (pre-distributed compaction). This means that migration has not<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * been completed yet. During data migration (upgrade) process only general compaction<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * is allowed.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *<a name="line.109"></a>
+<span class="sourceLineNo">110</span> */<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span> static ThreadLocal<Boolean> disableIO = new ThreadLocal<Boolean>() {<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span> @Override<a name="line.114"></a>
+<span class="sourceLineNo">115</span> protected Boolean initialValue() {<a name="line.115"></a>
+<span class="sourceLineNo">116</span> return Boolean.FALSE;<a name="line.116"></a>
+<span class="sourceLineNo">117</span> }<a name="line.117"></a>
+<span class="sourceLineNo">118</span> };<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span> /*<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * Map : MOB file name - file length Can be expensive for large amount of MOB files.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span> static ThreadLocal<HashMap<String, Long>> mobLengthMap =<a name="line.123"></a>
+<span class="sourceLineNo">124</span> new ThreadLocal<HashMap<String, Long>>() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span> @Override<a name="line.125"></a>
+<span class="sourceLineNo">126</span> protected HashMap<String, Long> initialValue() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span> return new HashMap<String, Long>();<a name="line.127"></a>
+<span class="sourceLineNo">128</span> }<a name="line.128"></a>
+<span class="sourceLineNo">129</span> };<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span> private final InternalScannerFactory scannerFactory = new InternalScannerFactory() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span> @Override<a name="line.133"></a>
+<span class="sourceLineNo">134</span> public ScanType getScanType(CompactionRequestImpl request) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span> return request.isAllFiles() ? COMPACT_DROP_DELETES : COMPACT_RETAIN_DELETES;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span> @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span> public InternalScanner createScanner(ScanInfo scanInfo, List<StoreFileScanner> scanners,<a name="line.139"></a>
+<span class="sourceLineNo">140</span> ScanType scanType, FileDetails fd, long smallestReadPoint) throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span> return new StoreScanner(store, scanInfo, scanners, scanType, smallestReadPoint,<a name="line.141"></a>
+<span class="sourceLineNo">142</span> fd.earliestPutTs);<a name="line.142"></a>
+<span class="sourceLineNo">143</span> }<a name="line.143"></a>
+<span class="sourceLineNo">144</span> };<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span> private final CellSinkFactory<StoreFileWriter> writerFactory =<a name="line.146"></a>
+<span class="sourceLineNo">147</span> new CellSinkFactory<StoreFileWriter>() {<a name="line.147"></a>
+<span class="sourceLineNo">148</span> @Override<a name="line.148"></a>
+<span class="sourceLineNo">149</span> public StoreFileWriter createWriter(InternalScanner scanner,<a name="line.149"></a>
+<span class="sourceLineNo">150</span> org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails fd,<a name="line.150"></a>
+<span class="sourceLineNo">151</span> boolean shouldDropBehind, boolean major) throws IOException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span> // make this writer with tags always because of possible new cells with tags.<a name="line.152"></a>
+<span class="sourceLineNo">153</span> return store.createWriterInTmp(fd.maxKeyCount,<a name="line.153"></a>
+<span class="sourceLineNo">154</span> major ? majorCompactionCompression : minorCompactionCompression,<a name="line.154"></a>
+<span class="sourceLineNo">155</span> true, true, true, shouldDropBehind);<a name="line.155"></a>
+<span class="sourceLineNo">156</span> }<a name="line.156"></a>
+<span class="sourceLineNo">157</span> };<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span> public DefaultMobStoreCompactor(Configuration conf, HStore store) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span> super(conf, store);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> // The mob cells reside in the mob-enabled column family which is held by HMobStore.<a name="line.161"></a>
+<span class="sourceLineNo">162</span> // During the compaction, the compactor reads the cells from the mob files and<a name="line.162"></a>
+<span class="sourceLineNo">163</span> // probably creates new mob files. All of these operations are included in HMobStore,<a name="line.163"></a>
+<span class="sourceLineNo">164</span> // so we need to cast the Store to HMobStore.<a name="line.164"></a>
+<span class="sourceLineNo">165</span> if (!(store instanceof HMobStore)) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span> throw new IllegalArgumentException("The store " + store + " is not a HMobStore");<a name="line.166"></a>
+<span class="sourceLineNo">167</span> }<a name="line.167"></a>
+<span class="sourceLineNo">168</span> this.mobStore = (HMobStore) store;<a name="line.168"></a>
+<span class="sourceLineNo">169</span> this.mobSizeThreshold = store.getColumnFamilyDescriptor().getMobThreshold();<a name="line.169"></a>
+<span class="sourceLineNo">170</span> this.ioOptimizedMode = conf.get(MobConstants.MOB_COMPACTION_TYPE_KEY,<a name="line.170"></a>
+<span class="sourceLineNo">171</span> MobConstants.DEFAULT_MOB_COMPACTION_TYPE).<a name="line.171"></a>
+<span class="sourceLineNo">172</span> equals(MobConstants.OPTIMIZED_MOB_COMPACTION_TYPE);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span> }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span> @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span> public List<Path> compact(CompactionRequestImpl request,<a name="line.177"></a>
+<span class="sourceLineNo">178</span> ThroughputController throughputController, User user) throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span> String tableName = store.getTableName().toString();<a name="line.179"></a>
+<span class="sourceLineNo">180</span> String regionName = store.getRegionInfo().getRegionNameAsString();<a name="line.180"></a>
+<span class="sourceLineNo">181</span> String familyName = store.getColumnFamilyName();<a name="line.181"></a>
+<span class="sourceLineNo">182</span> LOG.info("MOB compaction: major={} isAll={} priority={} throughput controller={}" +<a name="line.182"></a>
+<span class="sourceLineNo">183</span> " table={} cf={} region={}",<a name="line.183"></a>
+<span class="sourceLineNo">184</span> request.isMajor(), request.isAllFiles(), request.getPriority(),<a name="line.184"></a>
+<span class="sourceLineNo">185</span> throughputController, tableName, familyName, regionName);<a name="line.185"></a>
+<span class="sourceLineNo">186</span> if (request.getPriority() == HStore.PRIORITY_USER) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span> userRequest.set(Boolean.TRUE);<a name="line.187"></a>
+<span class="sourceLineNo">188</span> } else {<a name="line.188"></a>
+<span class="sourceLineNo">189</span> userRequest.set(Boolean.FALSE);<a name="line.189"></a>
+<span class="sourceLineNo">190</span> }<a name="line.190"></a>
+<span class="sourceLineNo">191</span> LOG.debug("MOB compaction table={} cf={} region={} files: {}", tableName, familyName,<a name="line.191"></a>
+<span class="sourceLineNo">192</span> regionName, request.getFiles());<a name="line.192"></a>
+<span class="sourceLineNo">193</span> // Check if I/O optimized MOB compaction<a name="line.193"></a>
+<span class="sourceLineNo">194</span> if (ioOptimizedMode) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span> if (request.isMajor() && request.getPriority() == HStore.PRIORITY_USER) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span> try {<a name="line.196"></a>
+<span class="sourceLineNo">197</span> final SetMultimap<TableName, String> mobRefs = request.getFiles().stream()<a name="line.197"></a>
+<span class="sourceLineNo">198</span> .map(file -> {<a name="line.198"></a>
+<span class="sourceLineNo">199</span> byte[] value = file.getMetadataValue(HStoreFile.MOB_FILE_REFS);<a name="line.199"></a>
+<span class="sourceLineNo">200</span> ImmutableSetMultimap.Builder<TableName, String> builder;<a name="line.200"></a>
+<span class="sourceLineNo">201</span> if (value == null) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span> builder = ImmutableSetMultimap.builder();<a name="line.202"></a>
+<span class="sourceLineNo">203</span> } else {<a name="line.203"></a>
+<span class="sourceLineNo">204</span> try {<a name="line.204"></a>
+<span class="sourceLineNo">205</span> builder = MobUtils.deserializeMobFileRefs(value);<a name="line.205"></a>
+<span class="sourceLineNo">206</span> } catch (RuntimeException exception) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span> throw new RuntimeException("failure getting mob references for hfile " + file,<a name="line.207"></a>
+<span class="sourceLineNo">208</span> exception);<a name="line.208"></a>
+<span class="sourceLineNo">209</span> }<a name="line.209"></a>
+<span class="sourceLineNo">210</span> }<a name="line.210"></a>
+<span class="sourceLineNo">211</span> return builder;<a name="line.211"></a>
+<span class="sourceLineNo">212</span> }).reduce((a, b) -> a.putAll(b.build())).orElseGet(ImmutableSetMultimap::builder)<a name="line.212"></a>
+<span class="sourceLineNo">213</span> .build();<a name="line.213"></a>
+<span class="sourceLineNo">214</span> //reset disableIO<a name="line.214"></a>
+<span class="sourceLineNo">215</span> disableIO.set(Boolean.FALSE);<a name="line.215"></a>
+<span class="sourceLineNo">216</span> if (!mobRefs.isEmpty()) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span> calculateMobLengthMap(mobRefs);<a name="line.217"></a>
+<span class="sourceLineNo">218</span> }<a name="line.218"></a>
+<span class="sourceLineNo">219</span> LOG.info("Table={} cf={} region={}. I/O optimized MOB compaction. "+<a name="line.219"></a>
+<span class="sourceLineNo">220</span> "Total referenced MOB files: {}", tableName, familyName, regionName, mobRefs.size());<a name="line.220"></a>
+<span class="sourceLineNo">221</span> } catch (RuntimeException exception) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span> throw new IOException("Failed to get list of referenced hfiles for request " + request,<a name="line.222"></a>
+<span class="sourceLineNo">223</span> exception);<a name="line.223"></a>
+<span class="sourceLineNo">224</span> }<a name="line.224"></a>
+<span class="sourceLineNo">225</span> }<a name="line.225"></a>
+<span class="sourceLineNo">226</span> }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span> return compact(request, scannerFactory, writerFactory, throughputController, user);<a name="line.228"></a>
+<span class="sourceLineNo">229</span> }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span> /**<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * @param mobRefs multimap of original table name -> mob hfile<a name="line.232"></a>
+<span class="sourceLineNo">233</span> */<a name="line.233"></a>
+<span class="sourceLineNo">234</span> private void calculateMobLengthMap(SetMultimap<TableName, String> mobRefs) throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span> FileSystem fs = store.getFileSystem();<a name="line.235"></a>
+<span class="sourceLineNo">236</span> HashMap<String, Long> map = mobLengthMap.get();<a name="line.236"></a>
+<span class="sourceLineNo">237</span> map.clear();<a name="line.237"></a>
+<span class="sourceLineNo">238</span> for (Entry<TableName, String> reference : mobRefs.entries()) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span> final TableName table = reference.getKey();<a name="line.239"></a>
+<span class="sourceLineNo">240</span> final String mobfile = reference.getValue();<a name="line.240"></a>
+<span class="sourceLineNo">241</span> if (MobFileName.isOldMobFileName(mobfile)) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span> disableIO.set(Boolean.TRUE);<a name="line.242"></a>
+<span class="sourceLineNo">243</span> }<a name="line.243"></a>
+<span class="sourceLineNo">244</span> List<Path> locations = mobStore.getLocations(table);<a name="line.244"></a>
+<span class="sourceLineNo">245</span> for (Path p : locations) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span> try {<a name="line.246"></a>
+<span class="sourceLineNo">247</span> FileStatus st = fs.getFileStatus(new Path(p, mobfile));<a name="line.247"></a>
+<span class="sourceLineNo">248</span> long size = st.getLen();<a name="line.248"></a>
+<span class="sourceLineNo">249</span> LOG.debug("Referenced MOB file={} size={}", mobfile, size);<a name="line.249"></a>
+<span class="sourceLineNo">250</span> map.put(mobfile, size);<a name="line.250"></a>
+<span class="sourceLineNo">251</span> break;<a name="line.251"></a>
+<span class="sourceLineNo">252</span> } catch (FileNotFoundException exception) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span> LOG.debug("Mob file {} was not in location {}. May have other locations to try.", mobfile,<a name="line.253"></a>
+<span class="sourceLineNo">254</span> p);<a name="line.254"></a>
+<span class="sourceLineNo">255</span> }<a name="line.255"></a>
+<span class="sourceLineNo">256</span> }<a name="line.256"></a>
+<span class="sourceLineNo">257</span> if (!map.containsKey(mobfile)) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> throw new FileNotFoundException("Could not find mob file " + mobfile + " in the list of " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span> "expected locations: " + locations);<a name="line.259"></a>
+<span class="sourceLineNo">260</span> }<a name="line.260"></a>
+<span class="sourceLineNo">261</span> }<a name="line.261"></a>
+<span class="sourceLineNo">262</span> }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span> /**<a name="line.264"></a>
+<span class="sourceLineNo">265</span> * Performs compaction on a column family with the mob flag enabled. This works only when MOB<a name="line.265"></a>
+<span class="sourceLineNo">266</span> * compaction is explicitly requested (by User), or by Master There are two modes of a MOB<a name="line.266"></a>
+<span class="sourceLineNo">267</span> * compaction:<br><a name="line.267"></a>
+<span class="sourceLineNo">268</span> * <p><a name="line.268"></a>
+<span class="sourceLineNo">269</span> * <ul><a name="line.269"></a>
+<span class="sourceLineNo">270</span> * <li>1. Full mode - when all MOB data for a region is compacted into a single MOB file.<a name="line.270"></a>
+<span class="sourceLineNo">271</span> * <li>2. I/O optimized mode - for use cases with no or infrequent updates/deletes of a <br><a name="line.271"></a>
+<span class="sourceLineNo">272</span> * MOB data. The main idea behind i/o optimized compaction is to limit maximum size of a MOB file<a name="line.272"></a>
+<span class="sourceLineNo">273</span> * produced during compaction and to limit I/O write/read amplification.<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * </ul><a name="line.274"></a>
+<span class="sourceLineNo">275</span> * The basic algorithm of compaction is the following: <br><a name="line.275"></a>
+<span class="sourceLineNo">276</span> * 1. If the Put cell has a mob reference tag, the cell's value is the path of the mob file.<a name="line.276"></a>
+<span class="sourceLineNo">277</span> * <ol><a name="line.277"></a>
+<span class="sourceLineNo">278</span> * <li>If the value size of a cell is larger than the threshold, this cell is regarded as a mob,<a name="line.278"></a>
+<span class="sourceLineNo">279</span> * directly copy the (with mob tag) cell into the new store file.</li><a name="line.279"></a>
+<span class="sourceLineNo">280</span> * <li>Otherwise, retrieve the mob cell from the mob file, and writes a copy of the cell into the<a name="line.280"></a>
+<span class="sourceLineNo">281</span> * new store file.</li><a name="line.281"></a>
+<span class="sourceLineNo">282</span> * </ol><a name="line.282"></a>
+<span class="sourceLineNo">283</span> * 2. If the Put cell doesn't have a reference tag.<a name="line.283"></a>
+<span class="sourceLineNo">284</span> * <ol><a name="line.284"></a>
+<span class="sourceLineNo">285</span> * <li>If the value size of a cell is larger than the threshold, this cell is regarded as a mob,<a name="line.285"></a>
+<span class="sourceLineNo">286</span> * write this cell to a mob file, and write the path of this mob file to the store file.</li><a name="line.286"></a>
+<span class="sourceLineNo">287</span> * <li>Otherwise, directly write this cell into the store file.</li><a name="line.287"></a>
+<span class="sourceLineNo">288</span> * </ol><a name="line.288"></a>
+<span class="sourceLineNo">289</span> * @param fd File details<a name="line.289"></a>
+<span class="sourceLineNo">290</span> * @param scanner Where to read from.<a name="line.290"></a>
+<span class="sourceLineNo">291</span> * @param writer Where to write to.<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * @param smallestReadPoint Smallest read point.<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * @param cleanSeqId When true, remove seqId(used to be mvcc) value which is <= smallestReadPoint<a name="line.293"></a>
+<span class="sourceLineNo">294</span> * @param throughputController The compaction throughput controller.<a name="line.294"></a>
+<span class="sourceLineNo">295</span> * @param major Is a major compaction.<a name="line.295"></a>
+<span class="sourceLineNo">296</span> * @param numofFilesToCompact the number of files to compact<a name="line.296"></a>
+<span class="sourceLineNo">297</span> * @return Whether compaction ended; false if it was interrupted for any reason.<a name="line.297"></a>
+<span class="sourceLineNo">298</span> */<a name="line.298"></a>
+<span class="sourceLineNo">299</span> @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span> protected boolean performCompaction(FileDetails fd, InternalScanner scanner, CellSink writer,<a name="line.300"></a>
+<span class="sourceLineNo">301</span> long smallestReadPoint, boolean cleanSeqId, ThroughputController throughputController,<a name="line.301"></a>
+<span class="sourceLineNo">302</span> boolean major, int numofFilesToCompact) throws IOException {<a name="line.302"></a>
+<span class="sourceLineNo">303</span> long bytesWrittenProgressForLog = 0;<a name="line.303"></a>
+<span class="sourceLineNo">304</span> long bytesWrittenProgressForShippedCall = 0;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> // Clear old mob references<a name="line.305"></a>
+<span class="sourceLineNo">306</span> mobRefSet.get().clear();<a name="line.306"></a>
+<span class="sourceLineNo">307</span> boolean isUserRequest = userRequest.get();<a name="line.307"></a>
+<span class="sourceLineNo">308</span> boolean compactMOBs = major && isUserRequest;<a name="line.308"></a>
+<span class="sourceLineNo">309</span> boolean discardMobMiss = conf.getBoolean(MobConstants.MOB_UNSAFE_DISCARD_MISS_KEY,<a name="line.309"></a>
+<span class="sourceLineNo">310</span> MobConstants.DEFAULT_MOB_DISCARD_MISS);<a name="line.310"></a>
+<span class="sourceLineNo">311</span> if (discardMobMiss) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span> LOG.warn("{}=true. This is unsafe setting recommended only when first upgrading to a version"+<a name="line.312"></a>
+<span class="sourceLineNo">313</span> " with the distributed mob compaction feature on a cluster that has experienced MOB data " +<a name="line.313"></a>
+<span class="sourceLineNo">314</span> "corruption.", MobConstants.MOB_UNSAFE_DISCARD_MISS_KEY);<a name="line.314"></a>
+<span class="sourceLineNo">315</span> }<a name="line.315"></a>
+<span class="sourceLineNo">316</span> long maxMobFileSize = conf.getLong(MobConstants.MOB_COMPACTION_MAX_FILE_SIZE_KEY,<a name="line.316"></a>
+<span class="sourceLineNo">317</span> MobConstants.DEFAULT_MOB_COMPACTION_MAX_FILE_SIZE);<a name="line.317"></a>
+<span class="sourceLineNo">318</span> boolean ioOptimizedMode = this.ioOptimizedMode && !disableIO.get();<a name="line.318"></a>
+<span class="sourceLineNo">319</span> LOG.info("Compact MOB={} optimized configured={} optimized enabled={} maximum MOB file size={}"<a name="line.319"></a>
+<span class="sourceLineNo">320</span> + " major={} store={}", compactMOBs,<a name="line.320"></a>
+<span class="sourceLineNo">321</span> this.ioOptimizedMode, ioOptimizedMode, maxMobFileSize, major, getStoreInfo());<a name="line.321"></a>
+<span class="sourceLineNo">322</span> // Since scanner.next() can return 'false' but still be delivering data,<a name="line.322"></a>
+<span class="sourceLineNo">323</span> // we have to use a do/while loop.<a name="line.323"></a>
+<span class="sourceLineNo">324</span> List<Cell> cells = new ArrayList<>();<a name="line.324"></a>
+<span class="sourceLineNo">325</span> // Limit to "hbase.hstore.compaction.kv.max" (default 10) to avoid OOME<a name="line.325"></a>
+<span class="sourceLineNo">326</span> long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.326"></a>
+<span class="sourceLineNo">327</span> long lastMillis = 0;<a name="line.327"></a>
+<span class="sourceLineNo">328</span> if (LOG.isDebugEnabled()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span> lastMillis = currentTime;<a name="line.329"></a>
+<span class="sourceLineNo">330</span> }<a name="line.330"></a>
+<span class="sourceLineNo">331</span> CloseChecker closeChecker = new CloseChecker(conf, currentTime);<a name="line.331"></a>
+<span class="sourceLineNo">332</span> String compactionName = ThroughputControlUtil.getNameForThrottling(store, "compaction");<a name="line.332"></a>
+<span class="sourceLineNo">333</span> long now = 0;<a name="line.333"></a>
+<span class="sourceLineNo">334</span> boolean hasMore;<a name="line.334"></a>
+<span class="sourceLineNo">335</span> byte[] fileName = null;<a name="line.335"></a>
+<span class="sourceLineNo">336</span> StoreFileWriter mobFileWriter = null;<a name="line.336"></a>
+<span class="sourceLineNo">337</span> /*<a name="line.337"></a>
+<span class="sourceLineNo">338</span> * mobCells are used only to decide if we need to commit or abort current MOB output file.<a name="line.338"></a>
+<span class="sourceLineNo">339</span> */<a name="line.339"></a>
+<span class="sourceLineNo">340</span> long mobCells = 0;<a name="line.340"></a>
+<span class="sourceLineNo">341</span> long cellsCountCompactedToMob = 0, cellsCountCompactedFromMob = 0;<a name="line.341"></a>
+<span class="sourceLineNo">342</span> long cellsSizeCompactedToMob = 0, cellsSizeCompactedFromMob = 0;<a name="line.342"></a>
+<span class="sourceLineNo">343</span> boolean finished = false;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span> ScannerContext scannerContext =<a name="line.345"></a>
+<span class="sourceLineNo">346</span> ScannerContext.newBuilder().setBatchLimit(compactionKVMax).build();<a name="line.346"></a>
+<span class="sourceLineNo">347</span> throughputController.start(compactionName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span> KeyValueScanner kvs = (scanner instanceof KeyValueScanner) ? (KeyValueScanner) scanner : null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span> long shippedCallSizeLimit =<a name="line.349"></a>
+<span class="sourceLineNo">350</span> (long) numofFilesToCompact * this.store.getColumnFamilyDescriptor().getBlocksize();<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span> Cell mobCell = null;<a name="line.352"></a>
+<span class="sourceLineNo">353</span> try {<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span> mobFileWriter = newMobWriter(fd, major);<a name="line.355"></a>
+<span class="sourceLineNo">356</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span> do {<a name="line.358"></a>
+<span class="sourceLineNo">359</span> hasMore = scanner.next(cells, scannerContext);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> currentTime = EnvironmentEdgeManager.currentTime();<a name="line.360"></a>
+<span class="sourceLineNo">361</span> if (LOG.isDebugEnabled()) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span> now = currentTime;<a name="line.362"></a>
+<span class="sourceLineNo">363</span> }<a name="line.363"></a>
+<span class="sourceLineNo">364</span> if (closeChecker.isTimeLimit(store, currentTime)) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span> progress.cancel();<a name="line.365"></a>
+<span class="sourceLineNo">366</span> return false;<a name="line.366"></a>
+<span class="sourceLineNo">367</span> }<a name="line.367"></a>
+<span class="sourceLineNo">368</span> for (Cell c : cells) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> if (compactMOBs) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span> if (MobUtils.isMobReferenceCell(c)) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span> String fName = MobUtils.getMobFileName(c);<a name="line.371"></a>
+<span class="sourceLineNo">372</span> // Added to support migration<a name="line.372"></a>
+<span class="sourceLineNo">373</span> try {<a name="line.373"></a>
+<span class="sourceLineNo">374</span> mobCell = mobStore.resolve(c, true, false).getCell();<a name="line.374"></a>
+<span class="sourceLineNo">375</span> } catch (DoNotRetryIOException e) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span> if (discardMobMiss && e.getCause() != null<a name="line.376"></a>
+<span class="sourceLineNo">377</span> && e.getCause() instanceof FileNotFoundException) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span> LOG.error("Missing MOB cell: file={} not found cell={}", fName, c);<a name="line.378"></a>
+<span class="sourceLineNo">379</span> continue;<a name="line.379"></a>
+<span class="sourceLineNo">380</span> } else {<a name="line.380"></a>
+<span class="sourceLineNo">381</span> throw e;<a name="line.381"></a>
+<span class="sourceLineNo">382</span> }<a name="line.382"></a>
+<span class="sourceLineNo">383</span> }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span> if (discardMobMiss && mobCell.getValueLength() == 0) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span> LOG.error("Missing MOB cell value: file={} mob cell={} cell={}", fName,<a name="line.386"></a>
+<span class="sourceLineNo">387</span> mobCell, c);<a name="line.387"></a>
+<span class="sourceLineNo">388</span> continue;<a name="line.388"></a>
+<span class="sourceLineNo">389</span> } else if (mobCell.getValueLength() == 0) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span> String errMsg = String.format("Found 0 length MOB cell in a file=%s mob cell=%s "<a name="line.390"></a>
+<span class="sourceLineNo">391</span> + " cell=%s",<a name="line.391"></a>
+<span class="sourceLineNo">392</span> fName, mobCell, c);<a name="line.392"></a>
+<span class="sourceLineNo">393</span> throw new IOException(errMsg);<a name="line.393"></a>
+<span class="sourceLineNo">394</span> }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span> if (mobCell.getValueLength() > mobSizeThreshold) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> // put the mob data back to the MOB store file<a name="line.397"></a>
+<span class="sourceLineNo">398</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.398"></a>
+<span class="sourceLineNo">399</span> if (!ioOptimizedMode) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span> mobFileWriter.append(mobCell);<a name="line.400"></a>
+<span class="sourceLineNo">401</span> mobCells++;<a name="line.401"></a>
+<span class="sourceLineNo">402</span> writer.append(<a name="line.402"></a>
+<span class="sourceLineNo">403</span> MobUtils.createMobRefCell(mobCell, fileName, this.mobStore.getRefCellTags()));<a name="line.403"></a>
+<span class="sourceLineNo">404</span> } else {<a name="line.404"></a>
+<span class="sourceLineNo">405</span> // I/O optimized mode<a name="line.405"></a>
+<span class="sourceLineNo">406</span> // Check if MOB cell origin file size is<a name="line.406"></a>
+<span class="sourceLineNo">407</span> // greater than threshold<a name="line.407"></a>
+<span class="sourceLineNo">408</span> Long size = mobLengthMap.get().get(fName);<a name="line.408"></a>
+<span class="sourceLineNo">409</span> if (size == null) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> // FATAL error (we should never get here though), abort compaction<a name="line.410"></a>
+<span class="sourceLineNo">411</span> // This error means that meta section of store file does not contain<a name="line.411"></a>
+<span class="sourceLineNo">412</span> // MOB file, which has references in at least one cell from this store file<a name="line.412"></a>
+<span class="sourceLineNo">413</span> String msg = String.format(<a name="line.413"></a>
+<span class="sourceLineNo">414</span> "Found an unexpected MOB file during compaction %s, aborting compaction %s",<a name="line.414"></a>
+<span class="sourceLineNo">415</span> fName, getStoreInfo());<a name="line.415"></a>
+<span class="sourceLineNo">416</span> throw new IOException(msg);<a name="line.416"></a>
+<span class="sourceLineNo">417</span> }<a name="line.417"></a>
+<span class="sourceLineNo">418</span> // Can not be null<a name="line.418"></a>
+<span class="sourceLineNo">419</span> if (size < maxMobFileSize) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span> // If MOB cell origin file is below threshold<a name="line.420"></a>
+<span class="sourceLineNo">421</span> // it is get compacted<a name="line.421"></a>
+<span class="sourceLineNo">422</span> mobFileWriter.append(mobCell);<a name="line.422"></a>
+<span class="sourceLineNo">423</span> // Update number of mobCells in a current mob writer<a name="line.423"></a>
+<span class="sourceLineNo">424</span> mobCells++;<a name="line.424"></a>
+<span class="sourceLineNo">425</span> writer.append(<a name="line.425"></a>
+<span class="sourceLineNo">426</span> MobUtils.createMobRefCell(mobCell, fileName, this.mobStore.getRefCellTags()));<a name="line.426"></a>
+<span class="sourceLineNo">427</span> // Update total size of the output (we do not take into account<a name="line.427"></a>
+<span class="sourceLineNo">428</span> // file compression yet)<a name="line.428"></a>
+<span class="sourceLineNo">429</span> long len = mobFileWriter.getPos();<a name="line.429"></a>
+<span class="sourceLineNo">430</span> if (len > maxMobFileSize) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span> LOG.debug("Closing output MOB File, length={} file={}, store={}", len,<a name="line.431"></a>
+<span class="sourceLineNo">432</span> mobFileWriter.getPath().getName(), getStoreInfo());<a name="line.432"></a>
+<span class="sourceLineNo">433</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.433"></a>
+<span class="sourceLineNo">434</span> mobFileWriter = newMobWriter(fd, major);<a name="line.434"></a>
+<span class="sourceLineNo">435</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.435"></a>
+<span class="sourceLineNo">436</span> mobCells = 0;<a name="line.436"></a>
+<span class="sourceLineNo">437</span> }<a name="line.437"></a>
+<span class="sourceLineNo">438</span> } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span> // We leave large MOB file as is (is not compacted),<a name="line.439"></a>
+<span class="sourceLineNo">440</span> // then we update set of MOB file references<a name="line.440"></a>
+<span class="sourceLineNo">441</span> // and append mob cell directly to the store's writer<a name="line.441"></a>
+<span class="sourceLineNo">442</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.442"></a>
+<span class="sourceLineNo">443</span> if (refTable.isPresent()) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span> mobRefSet.get().put(refTable.get(), fName);<a name="line.444"></a>
+<span class="sourceLineNo">445</span> writer.append(c);<a name="line.445"></a>
+<span class="sourceLineNo">446</span> } else {<a name="line.446"></a>
+<span class="sourceLineNo">447</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.447"></a>
+<span class="sourceLineNo">448</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.448"></a>
+<span class="sourceLineNo">449</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.449"></a>
+<span class="sourceLineNo">450</span> }<a name="line.450"></a>
+<span class="sourceLineNo">451</span> }<a name="line.451"></a>
+<span class="sourceLineNo">452</span> }<a name="line.452"></a>
+<span class="sourceLineNo">453</span> } else {<a name="line.453"></a>
+<span class="sourceLineNo">454</span> // If MOB value is less than threshold, append it directly to a store file<a name="line.454"></a>
+<span class="sourceLineNo">455</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.455"></a>
+<span class="sourceLineNo">456</span> writer.append(mobCell);<a name="line.456"></a>
+<span class="sourceLineNo">457</span> cellsCountCompactedFromMob++;<a name="line.457"></a>
+<span class="sourceLineNo">458</span> cellsSizeCompactedFromMob += mobCell.getValueLength();<a name="line.458"></a>
+<span class="sourceLineNo">459</span> }<a name="line.459"></a>
+<span class="sourceLineNo">460</span> } else {<a name="line.460"></a>
+<span class="sourceLineNo">461</span> // Not a MOB reference cell<a name="line.461"></a>
+<span class="sourceLineNo">462</span> int size = c.getValueLength();<a name="line.462"></a>
+<span class="sourceLineNo">463</span> if (size > mobSizeThreshold) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span> // This MOB cell comes from a regular store file<a name="line.464"></a>
+<span class="sourceLineNo">465</span> // therefore we store it into original mob output<a name="line.465"></a>
+<span class="sourceLineNo">466</span> mobFileWriter.append(c);<a name="line.466"></a>
+<span class="sourceLineNo">467</span> writer<a name="line.467"></a>
+<span class="sourceLineNo">468</span> .append(MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags()));<a name="line.468"></a>
+<span class="sourceLineNo">469</span> mobCells++;<a name="line.469"></a>
+<span class="sourceLineNo">470</span> cellsCountCompactedToMob++;<a name="line.470"></a>
+<span class="sourceLineNo">471</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.471"></a>
+<span class="sourceLineNo">472</span> if (ioOptimizedMode) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span> // Update total size of the output (we do not take into account<a name="line.473"></a>
+<span class="sourceLineNo">474</span> // file compression yet)<a name="line.474"></a>
+<span class="sourceLineNo">475</span> long len = mobFileWriter.getPos();<a name="line.475"></a>
+<span class="sourceLineNo">476</span> if (len > maxMobFileSize) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.477"></a>
+<span class="sourceLineNo">478</span> mobFileWriter = newMobWriter(fd, major);<a name="line.478"></a>
+<span class="sourceLineNo">479</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.479"></a>
+<span class="sourceLineNo">480</span> mobCells = 0;<a name="line.480"></a>
+<span class="sourceLineNo">481</span> }<a name="line.481"></a>
+<span class="sourceLineNo">482</span> }<a name="line.482"></a>
+<span class="sourceLineNo">483</span> } else {<a name="line.483"></a>
+<span class="sourceLineNo">484</span> // Not a MOB cell, write it directly to a store file<a name="line.484"></a>
+<span class="sourceLineNo">485</span> writer.append(c);<a name="line.485"></a>
+<span class="sourceLineNo">486</span> }<a name="line.486"></a>
+<span class="sourceLineNo">487</span> }<a name="line.487"></a>
+<span class="sourceLineNo">488</span> } else if (c.getTypeByte() != KeyValue.Type.Put.getCode()) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span> // Not a major compaction or major with MOB disabled<a name="line.489"></a>
+<span class="sourceLineNo">490</span> // If the kv type is not put, directly write the cell<a name="line.490"></a>
+<span class="sourceLineNo">491</span> // to the store file.<a name="line.491"></a>
+<span class="sourceLineNo">492</span> writer.append(c);<a name="line.492"></a>
+<span class="sourceLineNo">493</span> } else if (MobUtils.isMobReferenceCell(c)) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span> // Not a major MOB compaction, Put MOB reference<a name="line.494"></a>
+<span class="sourceLineNo">495</span> if (MobUtils.hasValidMobRefCellValue(c)) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span> // We do not check mobSizeThreshold during normal compaction,<a name="line.496"></a>
+<span class="sourceLineNo">497</span> // leaving it to a MOB compaction run<a name="line.497"></a>
+<span class="sourceLineNo">498</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.498"></a>
+<span class="sourceLineNo">499</span> if (refTable.isPresent()) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span> mobRefSet.get().put(refTable.get(), MobUtils.getMobFileName(c));<a name="line.500"></a>
+<span class="sourceLineNo">501</span> writer.append(c);<a name="line.501"></a>
+<span class="sourceLineNo">502</span> } else {<a name="line.502"></a>
+<span class="sourceLineNo">503</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.503"></a>
+<span class="sourceLineNo">504</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.504"></a>
+<span class="sourceLineNo">505</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.505"></a>
+<span class="sourceLineNo">506</span> }<a name="line.506"></a>
+<span class="sourceLineNo">507</span> } else {<a name="line.507"></a>
+<span class="sourceLineNo">508</span> String errMsg = String.format("Corrupted MOB reference: %s", c.toString());<a name="line.508"></a>
+<span class="sourceLineNo">509</span> throw new IOException(errMsg);<a name="line.509"></a>
+<span class="sourceLineNo">510</span> }<a name="line.510"></a>
+<span class="sourceLineNo">511</span> } else if (c.getValueLength() <= mobSizeThreshold) {<a name="line.511"></a>
+<span class="sourceLineNo">512</span> // If the value size of a cell is not larger than the threshold, directly write it to<a name="line.512"></a>
+<span class="sourceLineNo">513</span> // the store file.<a name="line.513"></a>
+<span class="sourceLineNo">514</span> writer.append(c);<a name="line.514"></a>
+<span class="sourceLineNo">515</span> } else {<a name="line.515"></a>
+<span class="sourceLineNo">516</span> // If the value size of a cell is larger than the threshold, it's regarded as a mob,<a name="line.516"></a>
+<span class="sourceLineNo">517</span> // write this cell to a mob file, and write the path to the store file.<a name="line.517"></a>
+<span class="sourceLineNo">518</span> mobCells++;<a name="line.518"></a>
+<span class="sourceLineNo">519</span> // append the original keyValue in the mob file.<a name="line.519"></a>
+<span class="sourceLineNo">520</span> mobFileWriter.append(c);<a name="line.520"></a>
+<span class="sourceLineNo">521</span> Cell reference = MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags());<a name="line.521"></a>
+<span class="sourceLineNo">522</span> // write the cell whose value is the path of a mob file to the store file.<a name="line.522"></a>
+<span class="sourceLineNo">523</span> writer.append(reference);<a name="line.523"></a>
+<span class="sourceLineNo">524</span> cellsCountCompactedToMob++;<a name="line.524"></a>
+<span class="sourceLineNo">525</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.525"></a>
+<span class="sourceLineNo">526</span> if (ioOptimizedMode) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span> long len = mobFileWriter.getPos();<a name="line.527"></a>
+<span class="sourceLineNo">528</span> if (len > maxMobFileSize) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.529"></a>
+<span class="sourceLineNo">530</span> mobFileWriter = newMobWriter(fd, major);<a name="line.530"></a>
+<span class="sourceLineNo">531</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.531"></a>
+<span class="sourceLineNo">532</span> mobCells = 0;<a name="line.532"></a>
+<span class="sourceLineNo">533</span> }<a name="line.533"></a>
+<span class="sourceLineNo">534</span> }<a name="line.534"></a>
+<span class="sourceLineNo">535</span> }<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span> int len = c.getSerializedSize();<a name="line.537"></a>
+<span class="sourceLineNo">538</span> ++progress.currentCompactedKVs;<a name="line.538"></a>
+<span class="sourceLineNo">539</span> progress.totalCompactedSize += len;<a name="line.539"></a>
+<span class="sourceLineNo">540</span> bytesWrittenProgressForShippedCall += len;<a name="line.540"></a>
+<span class="sourceLineNo">541</span> if (LOG.isDebugEnabled()) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span> bytesWrittenProgressForLog += len;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> }<a name="line.543"></a>
+<span class="sourceLineNo">544</span> throughputController.control(compactionName, len);<a name="line.544"></a>
+<span class="sourceLineNo">545</span> if (closeChecker.isSizeLimit(store, len)) {<a name="line.545"></a>
+<span class="sourceLineNo">546</span> progress.cancel();<a name="line.546"></a>
+<span class="sourceLineNo">547</span> return false;<a name="line.547"></a>
+<span class="sourceLineNo">548</span> }<a name="line.548"></a>
+<span class="sourceLineNo">549</span> if (kvs != null && bytesWrittenProgressForShippedCall > shippedCallSizeLimit) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span> ((ShipperListener) writer).beforeShipped();<a name="line.550"></a>
+<span class="sourceLineNo">551</span> kvs.shipped();<a name="line.551"></a>
+<span class="sourceLineNo">552</span> bytesWrittenProgressForShippedCall = 0;<a name="line.552"></a>
+<span class="sourceLineNo">553</span> }<a name="line.553"></a>
+<span class="sourceLineNo">554</span> }<a name="line.554"></a>
+<span class="sourceLineNo">555</span> // Log the progress of long running compactions every minute if<a name="line.555"></a>
+<span class="sourceLineNo">556</span> // logging at DEBUG level<a name="line.556"></a>
+<span class="sourceLineNo">557</span> if (LOG.isDebugEnabled()) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> if ((now - lastMillis) >= COMPACTION_PROGRESS_LOG_INTERVAL) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span> String rate = String.format("%.2f",<a name="line.559"></a>
+<span class="sourceLineNo">560</span> (bytesWrittenProgressForLog / 1024.0) / ((now - lastMillis) / 1000.0));<a name="line.560"></a>
+<span class="sourceLineNo">561</span> LOG.debug("Compaction progress: {} {}, rate={} KB/sec, throughputController is {}",<a name="line.561"></a>
+<span class="sourceLineNo">562</span> compactionName, progress, rate, throughputController);<a name="line.562"></a>
+<span class="sourceLineNo">563</span> lastMillis = now;<a name="line.563"></a>
+<span class="sourceLineNo">564</span> bytesWrittenProgressForLog = 0;<a name="line.564"></a>
+<span class="sourceLineNo">565</span> }<a name="line.565"></a>
+<span class="sourceLineNo">566</span> }<a name="line.566"></a>
+<span class="sourceLineNo">567</span> cells.clear();<a name="line.567"></a>
+<span class="sourceLineNo">568</span> } while (hasMore);<a name="line.568"></a>
+<span class="sourceLineNo">569</span> finished = true;<a name="line.569"></a>
+<span class="sourceLineNo">570</span> } catch (InterruptedException e) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span> progress.cancel();<a name="line.571"></a>
+<span class="sourceLineNo">572</span> throw new InterruptedIOException(<a name="line.572"></a>
+<span class="sourceLineNo">573</span> "Interrupted while control throughput of compacting " + compactionName);<a name="line.573"></a>
+<span class="sourceLineNo">574</span> } catch (IOException t) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span> String msg = "Mob compaction failed for region: " +<a name="line.575"></a>
+<span class="sourceLineNo">576</span> store.getRegionInfo().getEncodedName();<a name="line.576"></a>
+<span class="sourceLineNo">577</span> throw new IOException(msg, t);<a name="line.577"></a>
+<span class="sourceLineNo">578</span> } finally {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> // Clone last cell in the final because writer will append last cell when committing. If<a name="line.579"></a>
+<span class="sourceLineNo">580</span> // don't clone here and once the scanner get closed, then the memory of last cell will be<a name="line.580"></a>
+<span class="sourceLineNo">581</span> // released. (HBASE-22582)<a name="line.581"></a>
+<span class="sourceLineNo">582</span> ((ShipperListener) writer).beforeShipped();<a name="line.582"></a>
+<span class="sourceLineNo">583</span> throughputController.finish(compactionName);<a name="line.583"></a>
+<span class="sourceLineNo">584</span> if (!finished && mobFileWriter != null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> // Remove all MOB references because compaction failed<a name="line.585"></a>
+<span class="sourceLineNo">586</span> clearThreadLocals();<a name="line.586"></a>
+<span class="sourceLineNo">587</span> // Abort writer<a name="line.587"></a>
+<span class="sourceLineNo">588</span> LOG.debug("Aborting writer for {} because of a compaction failure, Store {}",<a name="line.588"></a>
+<span class="sourceLineNo">589</span> mobFileWriter.getPath(), getStoreInfo());<a name="line.589"></a>
+<span class="sourceLineNo">590</span> abortWriter(mobFileWriter);<a name="line.590"></a>
+<span class="sourceLineNo">591</span> }<a name="line.591"></a>
+<span class="sourceLineNo">592</span> }<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span> // Commit last MOB writer<a name="line.594"></a>
+<span class="sourceLineNo">595</span> commitOrAbortMobWriter(mobFileWriter, fd.maxSeqId, mobCells, major);<a name="line.595"></a>
+<span class="sourceLineNo">596</span> mobStore.updateCellsCountCompactedFromMob(cellsCountCompactedFromMob);<a name="line.596"></a>
+<span class="sourceLineNo">597</span> mobStore.updateCellsCountCompactedToMob(cellsCountCompactedToMob);<a name="line.597"></a>
+<span class="sourceLineNo">598</span> mobStore.updateCellsSizeCompactedFromMob(cellsSizeCompactedFromMob);<a name="line.598"></a>
+<span class="sourceLineNo">599</span> mobStore.updateCellsSizeCompactedToMob(cellsSizeCompactedToMob);<a name="line.599"></a>
+<span class="sourceLineNo">600</span> progress.complete();<a name="line.600"></a>
+<span class="sourceLineNo">601</span> return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span> }<a name="line.602"></a>
+<span class="sourceLineNo">603</span><a name="line.603"></a>
+<span class="sourceLineNo">604</span> protected String getStoreInfo() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span> return String.format("[table=%s family=%s region=%s]", store.getTableName().getNameAsString(),<a name="line.605"></a>
+<span class="sourceLineNo">606</span> store.getColumnFamilyName(), store.getRegionInfo().getEncodedName()) ;<a name="line.606"></a>
+<span class="sourceLineNo">607</span> }<a name="line.607"></a>
+<span class="sourceLineNo">608</span><a name="line.608"></a>
+<span class="sourceLineNo">609</span> private void clearThreadLocals() {<a name="line.609"></a>
+<span class="sourceLineNo">610</span> mobRefSet.get().clear();<a name="line.610"></a>
+<span class="sourceLineNo">611</span> HashMap<String, Long> map = mobLengthMap.get();<a name="line.611"></a>
+<span class="sourceLineNo">612</span> if (map != null) {<a name="line.612"></a>
+<span class="sourceLineNo">613</span> map.clear();<a name="line.613"></a>
+<span class="sourceLineNo">614</span> }<a name="line.614"></a>
+<span class="sourceLineNo">615</span> }<a name="line.615"></a>
+<span class="sourceLineNo">616</span><a name="line.616"></a>
+<span class="sourceLineNo">617</span> private StoreFileWriter newMobWriter(FileDetails fd, boolean major)<a name="line.617"></a>
+<span class="sourceLineNo">618</span> throws IOException {<a name="line.618"></a>
+<span class="sourceLineNo">619</span> try {<a name="line.619"></a>
+<span class="sourceLineNo">620</span> StoreFileWriter mobFileWriter = mobStore.createWriterInTmp(new Date(fd.latestPutTs),<a name="line.620"></a>
+<span class="sourceLineNo">621</span> fd.maxKeyCount, major ? majorCompactionCompression : minorCompactionCompression,<a name="line.621"></a>
+<span class="sourceLineNo">622</span> store.getRegionInfo().getStartKey(), true);<a name="line.622"></a>
+<span class="sourceLineNo">623</span> LOG.debug("New MOB writer created={} store={}", mobFileWriter.getPath().getName(),<a name="line.623"></a>
+<span class="sourceLineNo">624</span> getStoreInfo());<a name="line.624"></a>
+<span class="sourceLineNo">625</span> // Add reference we get for compact MOB<a name="line.625"></a>
+<span class="sourceLineNo">626</span> mobRefSet.get().put(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.626"></a>
+<span class="sourceLineNo">627</span> return mobFileWriter;<a name="line.627"></a>
+<span class="sourceLineNo">628</span> } catch (IOException e) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span> // Bailing out<a name="line.629"></a>
+<span class="sourceLineNo">630</span> throw new IOException(String.format("Failed to create mob writer, store=%s",<a name="line.630"></a>
+<span class="sourceLineNo">631</span> getStoreInfo()), e);<a name="line.631"></a>
+<span class="sourceLineNo">632</span> }<a name="line.632"></a>
+<span class="sourceLineNo">633</span> }<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span> private void commitOrAbortMobWriter(StoreFileWriter mobFileWriter, long maxSeqId, long mobCells,<a name="line.635"></a>
+<span class="sourceLineNo">636</span> boolean major) throws IOException {<a name="line.636"></a>
+<span class="sourceLineNo">637</span> // Commit or abort major mob writer<a name="line.637"></a>
+<span class="sourceLineNo">638</span> // If IOException happens during below operation, some<a name="line.638"></a>
+<span class="sourceLineNo">639</span> // MOB files can be committed partially, but corresponding<a name="line.639"></a>
+<span class="sourceLineNo">640</span> // store file won't be committed, therefore these MOB files<a name="line.640"></a>
+<span class="sourceLineNo">641</span> // become orphans and will be deleted during next MOB cleaning chore cycle<a name="line.641"></a>
+<span class="sourceLineNo">642</span><a name="line.642"></a>
+<span class="sourceLineNo">643</span> if (mobFileWriter != null) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span> LOG.debug("Commit or abort size={} mobCells={} major={} file={}, store={}",<a name="line.644"></a>
+<span class="sourceLineNo">645</span> mobFileWriter.getPos(), mobCells, major, mobFileWriter.getPath().getName(),<a name="line.645"></a>
+<span class="sourceLineNo">646</span> getStoreInfo());<a name="line.646"></a>
+<span class="sourceLineNo">647</span> Path path =<a name="line.647"></a>
+<span class="sourceLineNo">648</span> MobUtils.getMobFamilyPath(conf, store.getTableName(), store.getColumnFamilyName());<a name="line.648"></a>
+<span class="sourceLineNo">649</span> if (mobCells > 0) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span> // If the mob file is not empty, commit it.<a name="line.650"></a>
+<span class="sourceLineNo">651</span> mobFileWriter.appendMetadata(maxSeqId, major, mobCells);<a name="line.651"></a>
+<span class="sourceLineNo">652</span> mobFileWriter.close();<a name="line.652"></a>
+<span class="sourceLineNo">653</span> mobStore.commitFile(mobFileWriter.getPath(), path);<a name="line.653"></a>
+<span class="sourceLineNo">654</span> } else {<a name="line.654"></a>
+<span class="sourceLineNo">655</span> // If the mob file is empty, delete it instead of committing.<a name="line.655"></a>
+<span class="sourceLineNo">656</span> LOG.debug("Aborting writer for {} because there are no MOB cells, store={}",<a name="line.656"></a>
+<span class="sourceLineNo">657</span> mobFileWriter.getPath(), getStoreInfo());<a name="line.657"></a>
+<span class="sourceLineNo">658</span> // Remove MOB file from reference set<a name="line.658"></a>
+<span class="sourceLineNo">659</span> mobRefSet.get().remove(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.659"></a>
+<span class="sourceLineNo">660</span> abortWriter(mobFileWriter);<a name="line.660"></a>
+<span class="sourceLineNo">661</span> }<a name="line.661"></a>
+<span class="sourceLineNo">662</span> } else {<a name="line.662"></a>
+<span class="sourceLineNo">663</span> LOG.debug("Mob file writer is null, skipping commit/abort, store=",<a name="line.663"></a>
+<span class="sourceLineNo">664</span> getStoreInfo());<a name="line.664"></a>
+<span class="sourceLineNo">665</span> }<a name="line.665"></a>
+<span class="sourceLineNo">666</span> }<a name="line.666"></a>
+<span class="sourceLineNo">667</span><a name="line.667"></a>
+<span class="sourceLineNo">668</span><a name="line.668"></a>
+<span class="sourceLineNo">669</span> @Override<a name="line.669"></a>
+<span class="sourceLineNo">670</span> protected List<Path> commitWriter(StoreFileWriter writer, FileDetails fd,<a name="line.670"></a>
+<span class="sourceLineNo">671</span> CompactionRequestImpl request) throws IOException {<a name="line.671"></a>
+<span class="sourceLineNo">672</span> List<Path> newFiles = Lists.newArrayList(writer.getPath());<a name="line.672"></a>
+<span class="sourceLineNo">673</span> writer.appendMetadata(fd.maxSeqId, request.isAllFiles(), request.getFiles());<a name="line.673"></a>
+<span class="sourceLineNo">674</span> writer.appendMobMetadata(mobRefSet.get());<a name="line.674"></a>
+<span class="sourceLineNo">675</span> writer.close();<a name="line.675"></a>
+<span class="sourceLineNo">676</span> clearThreadLocals();<a name="line.676"></a>
+<span class="sourceLineNo">677</span> return newFiles;<a name="line.677"></a>
+<span class="sourceLineNo">678</span> }<a name="line.678"></a>
+<span class="sourceLineNo">679</span><a name="line.679"></a>
+<span class="sourceLineNo">680</span>}<a name="line.680"></a>
diff --git a/downloads.html b/downloads.html
index 5ae3902..c45e6fa 100644
--- a/downloads.html
+++ b/downloads.html
@@ -275,28 +275,28 @@
<tr class="a">
<td style="test-align: left">
- 1.7.0
+ 1.7.1
</td>
<td style="test-align: left">
- 2021/06/12
+ 2021/07/21
</td>
<td style="test-align: left">
- <a class="externalLink" href="https://downloads.apache.org/hbase/1.7.0/compat-check-report.html">1.6.0 vs 1.7.0</a>
+ <a class="externalLink" href="https://downloads.apache.org/hbase/1.7.1/api_compare_1.7.0_to_1.7.1-RC0.html">1.7.0 vs 1.7.1</a>
</td>
<td style="test-align: left">
- <a class="externalLink" href="https://github.com/apache/hbase/blob/rel/1.7.0/CHANGES.txt">Changes</a>
+ <a class="externalLink" href="https://github.com/apache/hbase/blob/rel/1.7.1/CHANGES.txt">Changes</a>
</td>
<td style="test-align: left">
- <a class="externalLink" href="https://issues.apache.org/jira/projects/HBASE/versions/12346510">Release Notes</a>
+ <a class="externalLink" href="https://issues.apache.org/jira/projects/HBASE/versions/12350241">Release Notes</a>
</td>
<td style="test-align: left">
- <a class="externalLink" href="https://www.apache.org/dyn/closer.lua/hbase/1.7.0/hbase-1.7.0-src.tar.gz">src</a> (<a class="externalLink" href="https://apache.org/dist/hbase/1.7.0/hbase-1.7.0-src.tar.gz.sha512">sha512</a> <a class="externalLink" href="https://apache.org/dist/hbase/1.7.0/hbase-1.7.0-src.tar.gz.asc">asc</a>) <br />
- <a class="externalLink" href="https://www.apache.org/dyn/closer.lua/hbase/1.7.0/hbase-1.7.0-bin.tar.gz">bin</a> (<a class="externalLink" href="https://apache.org/dist/hbase/1.7.0/hbase-1.7.0-bin.tar.gz.sha512">sha512</a> <a class="externalLink" href="https://apache.org/dist/hbase/1.7.0/hbase-1.7.0-bin.tar.gz.asc">asc</a>)
+ <a class="externalLink" href="https://www.apache.org/dyn/closer.lua/hbase/1.7.1/hbase-1.7.1-src.tar.gz">src</a> (<a class="externalLink" href="https://apache.org/dist/hbase/1.7.1/hbase-1.7.1-src.tar.gz.sha512">sha512</a> <a class="externalLink" href="https://apache.org/dist/hbase/1.7.1/hbase-1.7.1-src.tar.gz.asc">asc</a>) <br />
+ <a class="externalLink" href="https://www.apache.org/dyn/closer.lua/hbase/1.7.1/hbase-1.7.1-bin.tar.gz">bin</a> (<a class="externalLink" href="https://apache.org/dist/hbase/1.7.1/hbase-1.7.1-bin.tar.gz.sha512">sha512</a> <a class="externalLink" href="https://apache.org/dist/hbase/1.7.1/hbase-1.7.1-bin.tar.gz.asc">asc</a>)
</td>
<td></td>
@@ -457,7 +457,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index 9e0a27f..e50924e 100644
--- a/export_control.html
+++ b/export_control.html
@@ -186,7 +186,7 @@ for more details.</p>
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index 0920e4e..c15bf34 100644
--- a/index.html
+++ b/index.html
@@ -264,7 +264,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-tracking.html b/issue-tracking.html
index 5d5aff2..6eaec9d 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -158,7 +158,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/mail-lists.html b/mail-lists.html
index 91b733f..084b29f 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -204,7 +204,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index 07c6f34..9fb3ef8 100644
--- a/metrics.html
+++ b/metrics.html
@@ -314,7 +314,7 @@ export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index c434783..4692787 100644
--- a/old_news.html
+++ b/old_news.html
@@ -305,7 +305,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index c3d2b0c..c5d9484 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -310,7 +310,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index ba4bc56..f20c460 100644
--- a/plugins.html
+++ b/plugins.html
@@ -237,7 +237,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 5376a01..bcd3347 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -639,7 +639,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index 017f12a..78f67ab 100644
--- a/project-info.html
+++ b/project-info.html
@@ -199,7 +199,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index adddbf4..c091418 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -175,7 +175,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-summary.html b/project-summary.html
index 0eac9f5..0fcad79 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -201,7 +201,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 33dceb3..2e7289a 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -163,7 +163,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index bfe9638..ece06a3 100644
--- a/replication.html
+++ b/replication.html
@@ -158,7 +158,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index a4e373e..3cda053 100644
--- a/resources.html
+++ b/resources.html
@@ -186,7 +186,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/source-repository.html b/source-repository.html
index 5a850af..de41439 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -169,7 +169,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index deffe91..c145ab3 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -188,7 +188,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index e366a1b..a17419a 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -379,7 +379,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team-list.html b/team-list.html
index 4ac3965..3714794 100644
--- a/team-list.html
+++ b/team-list.html
@@ -732,7 +732,7 @@
<div class="row">
<p>Copyright ©2007–2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-21</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-07-22</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 7f8e7d5..a2b4556 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -57305,6 +57305,10 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testContainsRange--">testContainsRange()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionInfo</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testContainsRangeForMetaTable--">testContainsRangeForMetaTable()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.client">TestRegionInfoBuilder</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testContainsRangeForMetaTable--">testContainsRangeForMetaTable()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionInfo</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testContendedAcrossCellsIncrement--">testContendedAcrossCellsIncrement()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
<dd>
<div class="block">Have each thread update its own Cell.</div>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html
index ab528b7..2ac273c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
<li class="blockList">
<hr>
<br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.48">TestRegionInfoBuilder</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.49">TestRegionInfoBuilder</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
</li>
</ul>
@@ -193,34 +193,38 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testConvert--">testConvert</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testContainsRangeForMetaTable--">testContainsRangeForMetaTable</a></span>()</code> </td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testCreateRegionInfoName--">testCreateRegionInfoName</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testConvert--">testConvert</a></span>()</code> </td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testLastRegionCompare--">testLastRegionCompare</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testCreateRegionInfoName--">testCreateRegionInfoName</a></span>()</code> </td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testMetaTables--">testMetaTables</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testLastRegionCompare--">testLastRegionCompare</a></span>()</code> </td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testNewBuilderWithRegionInfo--">testNewBuilderWithRegionInfo</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testMetaTables--">testMetaTables</a></span>()</code> </td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testParseName--">testParseName</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testNewBuilderWithRegionInfo--">testNewBuilderWithRegionInfo</a></span>()</code> </td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testPb--">testPb</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testParseName--">testParseName</a></span>()</code> </td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testPb--">testPb</a></span>()</code> </td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#testRegionNameForRegionReplicas--">testRegionNameForRegionReplicas</a></span>()</code> </td>
</tr>
</table>
@@ -251,7 +255,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>CLASS_RULE</h4>
-<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.51">CLASS_RULE</a></pre>
+<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.52">CLASS_RULE</a></pre>
</li>
</ul>
<a name="name">
@@ -260,7 +264,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>name</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/TableNameTestRule.html" title="class in org.apache.hadoop.hbase">TableNameTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.55">name</a></pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/TableNameTestRule.html" title="class in org.apache.hadoop.hbase">TableNameTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.56">name</a></pre>
</li>
</ul>
</li>
@@ -277,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>TestRegionInfoBuilder</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.48">TestRegionInfoBuilder</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.49">TestRegionInfoBuilder</a>()</pre>
</li>
</ul>
</li>
@@ -294,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testBuilder</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.58">testBuilder</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.59">testBuilder</a>()</pre>
</li>
</ul>
<a name="testPb--">
@@ -303,7 +307,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testPb</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.85">testPb</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.86">testPb</a>()
throws org.apache.hadoop.hbase.exceptions.DeserializationException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -317,7 +321,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testCreateRegionInfoName</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.93">testCreateRegionInfoName</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.94">testCreateRegionInfoName</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -331,7 +335,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testContainsRange</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.113">testContainsRange</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.114">testContainsRange</a>()</pre>
+</li>
+</ul>
+<a name="testContainsRangeForMetaTable--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testContainsRangeForMetaTable</h4>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.142">testContainsRangeForMetaTable</a>()</pre>
</li>
</ul>
<a name="testLastRegionCompare--">
@@ -340,7 +353,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testLastRegionCompare</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.141">testLastRegionCompare</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.175">testLastRegionCompare</a>()</pre>
</li>
</ul>
<a name="testMetaTables--">
@@ -349,7 +362,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testMetaTables</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.151">testMetaTables</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.185">testMetaTables</a>()</pre>
</li>
</ul>
<a name="testComparator--">
@@ -358,7 +371,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testComparator</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.156">testComparator</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.190">testComparator</a>()</pre>
</li>
</ul>
<a name="testRegionNameForRegionReplicas--">
@@ -367,7 +380,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testRegionNameForRegionReplicas</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.170">testRegionNameForRegionReplicas</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.204">testRegionNameForRegionReplicas</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -381,7 +394,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testParseName</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.199">testParseName</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.233">testParseName</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -395,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testConvert</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.226">testConvert</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.260">testConvert</a>()</pre>
</li>
</ul>
<a name="assertRegionNameNotEquals-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -404,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>assertRegionNameNotEquals</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.259">assertRegionNameNotEquals</a>(org.apache.hadoop.hbase.client.RegionInfo expected,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.293">assertRegionNameNotEquals</a>(org.apache.hadoop.hbase.client.RegionInfo expected,
org.apache.hadoop.hbase.client.RegionInfo actual)</pre>
</li>
</ul>
@@ -414,7 +427,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>assertRegionNameEquals</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.264">assertRegionNameEquals</a>(org.apache.hadoop.hbase.client.RegionInfo expected,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.298">assertRegionNameEquals</a>(org.apache.hadoop.hbase.client.RegionInfo expected,
org.apache.hadoop.hbase.client.RegionInfo actual)</pre>
</li>
</ul>
@@ -424,7 +437,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>testNewBuilderWithRegionInfo</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.270">testNewBuilderWithRegionInfo</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html#line.304">testNewBuilderWithRegionInfo</a>()</pre>
</li>
</ul>
</li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index c57de92..3d40d57 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -167,8 +167,8 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
</ul>
</li>
</ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html b/testdevapidocs/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html
index 77af7fe..5cd243c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html
@@ -125,7 +125,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.73">FaultyMobStoreCompactor</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.74">FaultyMobStoreCompactor</a>
extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<div class="block">This class is used for testing only. The main purpose is to emulate
random failures during MOB compaction process.
@@ -313,7 +313,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.75">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.76">LOG</a></pre>
</li>
</ul>
<a name="mobCounter">
@@ -322,7 +322,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockList">
<li class="blockList">
<h4>mobCounter</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.77">mobCounter</a></pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.78">mobCounter</a></pre>
</li>
</ul>
<a name="totalFailures">
@@ -331,7 +331,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockList">
<li class="blockList">
<h4>totalFailures</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.78">totalFailures</a></pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.79">totalFailures</a></pre>
</li>
</ul>
<a name="totalCompactions">
@@ -340,7 +340,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockList">
<li class="blockList">
<h4>totalCompactions</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.79">totalCompactions</a></pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.80">totalCompactions</a></pre>
</li>
</ul>
<a name="totalMajorCompactions">
@@ -349,7 +349,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockList">
<li class="blockList">
<h4>totalMajorCompactions</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.80">totalMajorCompactions</a></pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.81">totalMajorCompactions</a></pre>
</li>
</ul>
<a name="failureProb">
@@ -358,7 +358,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockList">
<li class="blockList">
<h4>failureProb</h4>
-<pre>static double <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.82">failureProb</a></pre>
+<pre>static double <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.83">failureProb</a></pre>
</li>
</ul>
<a name="rnd">
@@ -367,7 +367,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>rnd</h4>
-<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.83">rnd</a></pre>
+<pre>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.84">rnd</a></pre>
</li>
</ul>
</li>
@@ -384,7 +384,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>FaultyMobStoreCompactor</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.85">FaultyMobStoreCompactor</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.86">FaultyMobStoreCompactor</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.regionserver.HStore store)</pre>
</li>
</ul>
@@ -402,7 +402,7 @@ extends org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>performCompaction</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.91">performCompaction</a>(org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails fd,
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html#line.92">performCompaction</a>(org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails fd,
org.apache.hadoop.hbase.regionserver.InternalScanner scanner,
org.apache.hadoop.hbase.regionserver.CellSink writer,
long smallestReadPoint,
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index 351f941..0cca046 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -658,19 +658,19 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ZNodeClusterManager.CmdType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ZNodeClusterManager.CmdType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.Signal.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.Signal</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.HealthSummary.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.HealthSummary</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ZNodeClusterManager.CmdType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ZNodeClusterManager.CmdType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
</ul>
</li>
</ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
index 4309238..3ce38a7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
@@ -81,14 +81,14 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
<ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a><V>, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure<TEnvironment> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>)
<ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
</ul>
</li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure<TEnvironment> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>)
+<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a><V>, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
<ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
</ul>
</li>
<li type="circle">org.apache.hadoop.hbase.procedure.ProcedureManager
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 221f972..b3d77cd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -241,10 +241,10 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
</ul>
</li>
</ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html
index 5b00c8c..31d9556 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
<li class="blockList">
<hr>
<br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.60">TestRegionInfo</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.61">TestRegionInfo</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
</li>
</ul>
@@ -194,59 +194,63 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testConvert--">testConvert</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testContainsRangeForMetaTable--">testContainsRangeForMetaTable</a></span>()</code> </td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testCreateHRegionInfoName--">testCreateHRegionInfoName</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testConvert--">testConvert</a></span>()</code> </td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsEnd--">testIsEnd</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testCreateHRegionInfoName--">testCreateHRegionInfoName</a></span>()</code> </td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsNext--">testIsNext</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsEnd--">testIsEnd</a></span>()</code> </td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsOverlap--">testIsOverlap</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsNext--">testIsNext</a></span>()</code> </td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsOverlap--">testIsOverlap</a></span>()</code> </td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsOverlaps--">testIsOverlaps</a></span>()</code>
<div class="block">Tests <code>RegionInfo.isOverlap(RegionInfo)</code></div>
</td>
</tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testIsStart--">testIsStart</a></span>()</code> </td>
</tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testLastRegionCompare--">testLastRegionCompare</a></span>()</code> </td>
</tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testMetaTables--">testMetaTables</a></span>()</code> </td>
</tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testParseName--">testParseName</a></span>()</code> </td>
</tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testPb--">testPb</a></span>()</code> </td>
</tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testReadAndWriteHRegionInfoFile--">testReadAndWriteHRegionInfoFile</a></span>()</code> </td>
</tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testRegionDetailsForDisplay--">testRegionDetailsForDisplay</a></span>()</code> </td>
</tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#testRegionNameForRegionReplicas--">testRegionNameForRegionReplicas</a></span>()</code> </td>
</tr>
@@ -278,7 +282,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>CLASS_RULE</h4>
-<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.63">CLASS_RULE</a></pre>
+<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.64">CLASS_RULE</a></pre>
</li>
</ul>
<a name="name">
@@ -287,7 +291,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>name</h4>
-<pre>public org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.67">name</a></pre>
+<pre>public org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.68">name</a></pre>
</li>
</ul>
</li>
@@ -304,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>TestRegionInfo</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.60">TestRegionInfo</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.61">TestRegionInfo</a>()</pre>
</li>
</ul>
</li>
@@ -321,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testIsStart</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.70">testIsStart</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.71">testIsStart</a>()</pre>
</li>
</ul>
<a name="testIsEnd--">
@@ -330,7 +334,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testIsEnd</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.79">testIsEnd</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.80">testIsEnd</a>()</pre>
</li>
</ul>
<a name="testIsNext--">
@@ -339,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testIsNext</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.88">testIsNext</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.89">testIsNext</a>()</pre>
</li>
</ul>
<a name="testIsOverlap--">
@@ -348,7 +352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testIsOverlap</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.101">testIsOverlap</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.102">testIsOverlap</a>()</pre>
</li>
</ul>
<a name="testIsOverlaps--">
@@ -357,7 +361,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testIsOverlaps</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.141">testIsOverlaps</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.142">testIsOverlaps</a>()</pre>
<div class="block">Tests <code>RegionInfo.isOverlap(RegionInfo)</code></div>
</li>
</ul>
@@ -367,7 +371,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testPb</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.170">testPb</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.171">testPb</a>()
throws org.apache.hadoop.hbase.exceptions.DeserializationException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -381,7 +385,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testReadAndWriteHRegionInfoFile</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.178">testReadAndWriteHRegionInfoFile</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.179">testReadAndWriteHRegionInfoFile</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<dl>
@@ -397,7 +401,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getModTime</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.205">getModTime</a>(org.apache.hadoop.hbase.regionserver.HRegion r)
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.206">getModTime</a>(org.apache.hadoop.hbase.regionserver.HRegion r)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -411,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testCreateHRegionInfoName</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.213">testCreateHRegionInfoName</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.214">testCreateHRegionInfoName</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -425,7 +429,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testContainsRange</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.237">testContainsRange</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.238">testContainsRange</a>()</pre>
+</li>
+</ul>
+<a name="testContainsRangeForMetaTable--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testContainsRangeForMetaTable</h4>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.267">testContainsRangeForMetaTable</a>()</pre>
</li>
</ul>
<a name="testLastRegionCompare--">
@@ -434,7 +447,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testLastRegionCompare</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.266">testLastRegionCompare</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.300">testLastRegionCompare</a>()</pre>
</li>
</ul>
<a name="testMetaTables--">
@@ -443,7 +456,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testMetaTables</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.277">testMetaTables</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.311">testMetaTables</a>()</pre>
</li>
</ul>
<a name="testComparator--">
@@ -452,7 +465,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testComparator</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.283">testComparator</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.317">testComparator</a>()</pre>
</li>
</ul>
<a name="testRegionNameForRegionReplicas--">
@@ -461,7 +474,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testRegionNameForRegionReplicas</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.322">testRegionNameForRegionReplicas</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.356">testRegionNameForRegionReplicas</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -475,7 +488,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testParseName</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.350">testParseName</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.384">testParseName</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -489,7 +502,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testConvert</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.378">testConvert</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.412">testConvert</a>()</pre>
</li>
</ul>
<a name="testRegionDetailsForDisplay--">
@@ -498,7 +511,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>testRegionDetailsForDisplay</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.411">testRegionDetailsForDisplay</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.445">testRegionDetailsForDisplay</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -512,7 +525,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>checkDescriptiveNameEquality</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.440">checkDescriptiveNameEquality</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> descriptiveNameForDisplay,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.474">checkDescriptiveNameEquality</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> descriptiveNameForDisplay,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> origDesc,
byte[] startKey)</pre>
</li>
@@ -523,7 +536,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>checkEquality</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.455">checkEquality</a>(org.apache.hadoop.hbase.client.RegionInfo h,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionInfo.html#line.489">checkEquality</a>(org.apache.hadoop.hbase.client.RegionInfo h,
org.apache.hadoop.conf.Configuration conf)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index d91127c..5725176 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -730,11 +730,11 @@
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionState.StateSource.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCompactionState.StateSource</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
</ul>
</li>
</ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index e93b5a6..0df6bab 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -260,11 +260,11 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadCommonCrawl.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadCommonCrawl.Counts</span></a></li>
<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadCommonCrawl.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadCommonCrawl.Counts</span></a></li>
</ul>
</li>
</ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 1ccfe6b..474e520 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -201,9 +201,9 @@
<ul>
<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
<ul>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
</ul>
</li>
</ul>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html
index 88246db..c5227e9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestRegionInfoBuilder.html
@@ -34,265 +34,299 @@
<span class="sourceLineNo">026</span><a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.io.IOException;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.TableName;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableNameTestRule;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.MD5Hash;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.junit.ClassRule;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.junit.Rule;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.junit.Test;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.junit.experimental.categories.Category;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>@Category({ ClientTests.class, SmallTests.class })<a name="line.47"></a>
-<span class="sourceLineNo">048</span>public class TestRegionInfoBuilder {<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span> @ClassRule<a name="line.50"></a>
-<span class="sourceLineNo">051</span> public static final HBaseClassTestRule CLASS_RULE =<a name="line.51"></a>
-<span class="sourceLineNo">052</span> HBaseClassTestRule.forClass(TestRegionInfoBuilder.class);<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span> @Rule<a name="line.54"></a>
-<span class="sourceLineNo">055</span> public TableNameTestRule name = new TableNameTestRule();<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span> @Test<a name="line.57"></a>
-<span class="sourceLineNo">058</span> public void testBuilder() {<a name="line.58"></a>
-<span class="sourceLineNo">059</span> TableName tn = TableName.valueOf("test");<a name="line.59"></a>
-<span class="sourceLineNo">060</span> RegionInfoBuilder builder = RegionInfoBuilder.newBuilder(tn);<a name="line.60"></a>
-<span class="sourceLineNo">061</span> byte[] startKey = Bytes.toBytes("a");<a name="line.61"></a>
-<span class="sourceLineNo">062</span> builder.setStartKey(startKey);<a name="line.62"></a>
-<span class="sourceLineNo">063</span> byte[] endKey = Bytes.toBytes("z");<a name="line.63"></a>
-<span class="sourceLineNo">064</span> builder.setEndKey(endKey);<a name="line.64"></a>
-<span class="sourceLineNo">065</span> int regionId = 1;<a name="line.65"></a>
-<span class="sourceLineNo">066</span> builder.setRegionId(1);<a name="line.66"></a>
-<span class="sourceLineNo">067</span> int replicaId = 2;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> builder.setReplicaId(replicaId);<a name="line.68"></a>
-<span class="sourceLineNo">069</span> boolean offline = true;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> builder.setOffline(offline);<a name="line.70"></a>
-<span class="sourceLineNo">071</span> boolean isSplit = true;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> builder.setSplit(isSplit);<a name="line.72"></a>
-<span class="sourceLineNo">073</span> RegionInfo ri = builder.build();<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span> assertEquals(tn, ri.getTable());<a name="line.75"></a>
-<span class="sourceLineNo">076</span> assertArrayEquals(startKey, ri.getStartKey());<a name="line.76"></a>
-<span class="sourceLineNo">077</span> assertArrayEquals(endKey, ri.getEndKey());<a name="line.77"></a>
-<span class="sourceLineNo">078</span> assertEquals(regionId, ri.getRegionId());<a name="line.78"></a>
-<span class="sourceLineNo">079</span> assertEquals(replicaId, ri.getReplicaId());<a name="line.79"></a>
-<span class="sourceLineNo">080</span> assertEquals(offline, ri.isOffline());<a name="line.80"></a>
-<span class="sourceLineNo">081</span> assertEquals(isSplit, ri.isSplit());<a name="line.81"></a>
-<span class="sourceLineNo">082</span> }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span> @Test<a name="line.84"></a>
-<span class="sourceLineNo">085</span> public void testPb() throws DeserializationException {<a name="line.85"></a>
-<span class="sourceLineNo">086</span> RegionInfo ri = RegionInfoBuilder.FIRST_META_REGIONINFO;<a name="line.86"></a>
-<span class="sourceLineNo">087</span> byte[] bytes = RegionInfo.toByteArray(ri);<a name="line.87"></a>
-<span class="sourceLineNo">088</span> RegionInfo pbri = RegionInfo.parseFrom(bytes);<a name="line.88"></a>
-<span class="sourceLineNo">089</span> assertTrue(RegionInfo.COMPARATOR.compare(ri, pbri) == 0);<a name="line.89"></a>
-<span class="sourceLineNo">090</span> }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span> @Test<a name="line.92"></a>
-<span class="sourceLineNo">093</span> public void testCreateRegionInfoName() throws Exception {<a name="line.93"></a>
-<span class="sourceLineNo">094</span> final TableName tn = name.getTableName();<a name="line.94"></a>
-<span class="sourceLineNo">095</span> String startKey = "startkey";<a name="line.95"></a>
-<span class="sourceLineNo">096</span> final byte[] sk = Bytes.toBytes(startKey);<a name="line.96"></a>
-<span class="sourceLineNo">097</span> String id = "id";<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span> // old format region name<a name="line.99"></a>
-<span class="sourceLineNo">100</span> byte[] name = RegionInfo.createRegionName(tn, sk, id, false);<a name="line.100"></a>
-<span class="sourceLineNo">101</span> String nameStr = Bytes.toString(name);<a name="line.101"></a>
-<span class="sourceLineNo">102</span> assertEquals(tn + "," + startKey + "," + id, nameStr);<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> // new format region name.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> String md5HashInHex = MD5Hash.getMD5AsHex(name);<a name="line.105"></a>
-<span class="sourceLineNo">106</span> assertEquals(RegionInfo.MD5_HEX_LENGTH, md5HashInHex.length());<a name="line.106"></a>
-<span class="sourceLineNo">107</span> name = RegionInfo.createRegionName(tn, sk, id, true);<a name="line.107"></a>
-<span class="sourceLineNo">108</span> nameStr = Bytes.toString(name);<a name="line.108"></a>
-<span class="sourceLineNo">109</span> assertEquals(tn + "," + startKey + "," + id + "." + md5HashInHex + ".", nameStr);<a name="line.109"></a>
-<span class="sourceLineNo">110</span> }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span> @Test<a name="line.112"></a>
-<span class="sourceLineNo">113</span> public void testContainsRange() {<a name="line.113"></a>
-<span class="sourceLineNo">114</span> TableDescriptor tableDesc = TableDescriptorBuilder.newBuilder(name.getTableName()).build();<a name="line.114"></a>
-<span class="sourceLineNo">115</span> RegionInfo ri = RegionInfoBuilder.newBuilder(tableDesc.getTableName())<a name="line.115"></a>
-<span class="sourceLineNo">116</span> .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("g")).build();<a name="line.116"></a>
-<span class="sourceLineNo">117</span> // Single row range at start of region<a name="line.117"></a>
-<span class="sourceLineNo">118</span> assertTrue(ri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("a")));<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // Fully contained range<a name="line.119"></a>
-<span class="sourceLineNo">120</span> assertTrue(ri.containsRange(Bytes.toBytes("b"), Bytes.toBytes("c")));<a name="line.120"></a>
-<span class="sourceLineNo">121</span> // Range overlapping start of region<a name="line.121"></a>
-<span class="sourceLineNo">122</span> assertTrue(ri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("c")));<a name="line.122"></a>
-<span class="sourceLineNo">123</span> // Fully contained single-row range<a name="line.123"></a>
-<span class="sourceLineNo">124</span> assertTrue(ri.containsRange(Bytes.toBytes("c"), Bytes.toBytes("c")));<a name="line.124"></a>
-<span class="sourceLineNo">125</span> // Range that overlaps end key and hence doesn't fit<a name="line.125"></a>
-<span class="sourceLineNo">126</span> assertFalse(ri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("g")));<a name="line.126"></a>
-<span class="sourceLineNo">127</span> // Single row range on end key<a name="line.127"></a>
-<span class="sourceLineNo">128</span> assertFalse(ri.containsRange(Bytes.toBytes("g"), Bytes.toBytes("g")));<a name="line.128"></a>
-<span class="sourceLineNo">129</span> // Single row range entirely outside<a name="line.129"></a>
-<span class="sourceLineNo">130</span> assertFalse(ri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("z")));<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span> // Degenerate range<a name="line.132"></a>
-<span class="sourceLineNo">133</span> try {<a name="line.133"></a>
-<span class="sourceLineNo">134</span> ri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("a"));<a name="line.134"></a>
-<span class="sourceLineNo">135</span> fail("Invalid range did not throw IAE");<a name="line.135"></a>
-<span class="sourceLineNo">136</span> } catch (IllegalArgumentException iae) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span> }<a name="line.137"></a>
-<span class="sourceLineNo">138</span> }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span> @Test<a name="line.140"></a>
-<span class="sourceLineNo">141</span> public void testLastRegionCompare() {<a name="line.141"></a>
-<span class="sourceLineNo">142</span> TableDescriptor tableDesc = TableDescriptorBuilder.newBuilder(name.getTableName()).build();<a name="line.142"></a>
-<span class="sourceLineNo">143</span> RegionInfo rip = RegionInfoBuilder.newBuilder(tableDesc.getTableName())<a name="line.143"></a>
-<span class="sourceLineNo">144</span> .setStartKey(Bytes.toBytes("a")).setEndKey(new byte[0]).build();<a name="line.144"></a>
-<span class="sourceLineNo">145</span> RegionInfo ric = RegionInfoBuilder.newBuilder(tableDesc.getTableName())<a name="line.145"></a>
-<span class="sourceLineNo">146</span> .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("b")).build();<a name="line.146"></a>
-<span class="sourceLineNo">147</span> assertTrue(RegionInfo.COMPARATOR.compare(rip, ric) > 0);<a name="line.147"></a>
-<span class="sourceLineNo">148</span> }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span> @Test<a name="line.150"></a>
-<span class="sourceLineNo">151</span> public void testMetaTables() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span> assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isMetaRegion());<a name="line.152"></a>
-<span class="sourceLineNo">153</span> }<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span> @Test<a name="line.155"></a>
-<span class="sourceLineNo">156</span> public void testComparator() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> final TableName tableName = name.getTableName();<a name="line.157"></a>
-<span class="sourceLineNo">158</span> byte[] empty = new byte[0];<a name="line.158"></a>
-<span class="sourceLineNo">159</span> RegionInfo older = RegionInfoBuilder.newBuilder(tableName).setStartKey(empty).setEndKey(empty)<a name="line.159"></a>
-<span class="sourceLineNo">160</span> .setSplit(false).setRegionId(0L).build();<a name="line.160"></a>
-<span class="sourceLineNo">161</span> RegionInfo newer = RegionInfoBuilder.newBuilder(tableName).setStartKey(empty).setEndKey(empty)<a name="line.161"></a>
-<span class="sourceLineNo">162</span> .setSplit(false).setRegionId(1L).build();<a name="line.162"></a>
-<span class="sourceLineNo">163</span> assertTrue(RegionInfo.COMPARATOR.compare(older, newer) < 0);<a name="line.163"></a>
-<span class="sourceLineNo">164</span> assertTrue(RegionInfo.COMPARATOR.compare(newer, older) > 0);<a name="line.164"></a>
-<span class="sourceLineNo">165</span> assertTrue(RegionInfo.COMPARATOR.compare(older, older) == 0);<a name="line.165"></a>
-<span class="sourceLineNo">166</span> assertTrue(RegionInfo.COMPARATOR.compare(newer, newer) == 0);<a name="line.166"></a>
-<span class="sourceLineNo">167</span> }<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span> @Test<a name="line.169"></a>
-<span class="sourceLineNo">170</span> public void testRegionNameForRegionReplicas() throws Exception {<a name="line.170"></a>
-<span class="sourceLineNo">171</span> final TableName tn = name.getTableName();<a name="line.171"></a>
-<span class="sourceLineNo">172</span> String startKey = "startkey";<a name="line.172"></a>
-<span class="sourceLineNo">173</span> final byte[] sk = Bytes.toBytes(startKey);<a name="line.173"></a>
-<span class="sourceLineNo">174</span> String id = "id";<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span> // assert with only the region name without encoding<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span> // primary, replicaId = 0<a name="line.178"></a>
-<span class="sourceLineNo">179</span> byte[] name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0, false);<a name="line.179"></a>
-<span class="sourceLineNo">180</span> String nameStr = Bytes.toString(name);<a name="line.180"></a>
-<span class="sourceLineNo">181</span> assertEquals(tn + "," + startKey + "," + id, nameStr);<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span> // replicaId = 1<a name="line.183"></a>
-<span class="sourceLineNo">184</span> name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 1, false);<a name="line.184"></a>
-<span class="sourceLineNo">185</span> nameStr = Bytes.toString(name);<a name="line.185"></a>
-<span class="sourceLineNo">186</span> assertEquals(<a name="line.186"></a>
-<span class="sourceLineNo">187</span> tn + "," + startKey + "," + id + "_" + String.format(RegionInfo.REPLICA_ID_FORMAT, 1),<a name="line.187"></a>
-<span class="sourceLineNo">188</span> nameStr);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span> // replicaId = max<a name="line.190"></a>
-<span class="sourceLineNo">191</span> name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0xFFFF, false);<a name="line.191"></a>
-<span class="sourceLineNo">192</span> nameStr = Bytes.toString(name);<a name="line.192"></a>
-<span class="sourceLineNo">193</span> assertEquals(<a name="line.193"></a>
-<span class="sourceLineNo">194</span> tn + "," + startKey + "," + id + "_" + String.format(RegionInfo.REPLICA_ID_FORMAT, 0xFFFF),<a name="line.194"></a>
-<span class="sourceLineNo">195</span> nameStr);<a name="line.195"></a>
-<span class="sourceLineNo">196</span> }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span> @Test<a name="line.198"></a>
-<span class="sourceLineNo">199</span> public void testParseName() throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span> final TableName tableName = name.getTableName();<a name="line.200"></a>
-<span class="sourceLineNo">201</span> byte[] startKey = Bytes.toBytes("startKey");<a name="line.201"></a>
-<span class="sourceLineNo">202</span> long regionId = EnvironmentEdgeManager.currentTime();<a name="line.202"></a>
-<span class="sourceLineNo">203</span> int replicaId = 42;<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span> // test without replicaId<a name="line.205"></a>
-<span class="sourceLineNo">206</span> byte[] regionName = RegionInfo.createRegionName(tableName, startKey, regionId, false);<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span> byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.208"></a>
-<span class="sourceLineNo">209</span> assertArrayEquals(Bytes.toString(fields[0]), tableName.getName(), fields[0]);<a name="line.209"></a>
-<span class="sourceLineNo">210</span> assertArrayEquals(Bytes.toString(fields[1]), startKey, fields[1]);<a name="line.210"></a>
-<span class="sourceLineNo">211</span> assertArrayEquals(Bytes.toString(fields[2]), Bytes.toBytes(Long.toString(regionId)), fields[2]);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> assertEquals(3, fields.length);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span> // test with replicaId<a name="line.214"></a>
-<span class="sourceLineNo">215</span> regionName = RegionInfo.createRegionName(tableName, startKey, regionId, replicaId, false);<a name="line.215"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HConstants;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableName;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableNameTestRule;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.MD5Hash;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.ClassRule;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Rule;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.Test;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.experimental.categories.Category;<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>@Category({ ClientTests.class, SmallTests.class })<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class TestRegionInfoBuilder {<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span> @ClassRule<a name="line.51"></a>
+<span class="sourceLineNo">052</span> public static final HBaseClassTestRule CLASS_RULE =<a name="line.52"></a>
+<span class="sourceLineNo">053</span> HBaseClassTestRule.forClass(TestRegionInfoBuilder.class);<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span> @Rule<a name="line.55"></a>
+<span class="sourceLineNo">056</span> public TableNameTestRule name = new TableNameTestRule();<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span> @Test<a name="line.58"></a>
+<span class="sourceLineNo">059</span> public void testBuilder() {<a name="line.59"></a>
+<span class="sourceLineNo">060</span> TableName tn = TableName.valueOf("test");<a name="line.60"></a>
+<span class="sourceLineNo">061</span> RegionInfoBuilder builder = RegionInfoBuilder.newBuilder(tn);<a name="line.61"></a>
+<span class="sourceLineNo">062</span> byte[] startKey = Bytes.toBytes("a");<a name="line.62"></a>
+<span class="sourceLineNo">063</span> builder.setStartKey(startKey);<a name="line.63"></a>
+<span class="sourceLineNo">064</span> byte[] endKey = Bytes.toBytes("z");<a name="line.64"></a>
+<span class="sourceLineNo">065</span> builder.setEndKey(endKey);<a name="line.65"></a>
+<span class="sourceLineNo">066</span> int regionId = 1;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> builder.setRegionId(1);<a name="line.67"></a>
+<span class="sourceLineNo">068</span> int replicaId = 2;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> builder.setReplicaId(replicaId);<a name="line.69"></a>
+<span class="sourceLineNo">070</span> boolean offline = true;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> builder.setOffline(offline);<a name="line.71"></a>
+<span class="sourceLineNo">072</span> boolean isSplit = true;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> builder.setSplit(isSplit);<a name="line.73"></a>
+<span class="sourceLineNo">074</span> RegionInfo ri = builder.build();<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span> assertEquals(tn, ri.getTable());<a name="line.76"></a>
+<span class="sourceLineNo">077</span> assertArrayEquals(startKey, ri.getStartKey());<a name="line.77"></a>
+<span class="sourceLineNo">078</span> assertArrayEquals(endKey, ri.getEndKey());<a name="line.78"></a>
+<span class="sourceLineNo">079</span> assertEquals(regionId, ri.getRegionId());<a name="line.79"></a>
+<span class="sourceLineNo">080</span> assertEquals(replicaId, ri.getReplicaId());<a name="line.80"></a>
+<span class="sourceLineNo">081</span> assertEquals(offline, ri.isOffline());<a name="line.81"></a>
+<span class="sourceLineNo">082</span> assertEquals(isSplit, ri.isSplit());<a name="line.82"></a>
+<span class="sourceLineNo">083</span> }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span> @Test<a name="line.85"></a>
+<span class="sourceLineNo">086</span> public void testPb() throws DeserializationException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span> RegionInfo ri = RegionInfoBuilder.FIRST_META_REGIONINFO;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> byte[] bytes = RegionInfo.toByteArray(ri);<a name="line.88"></a>
+<span class="sourceLineNo">089</span> RegionInfo pbri = RegionInfo.parseFrom(bytes);<a name="line.89"></a>
+<span class="sourceLineNo">090</span> assertTrue(RegionInfo.COMPARATOR.compare(ri, pbri) == 0);<a name="line.90"></a>
+<span class="sourceLineNo">091</span> }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span> @Test<a name="line.93"></a>
+<span class="sourceLineNo">094</span> public void testCreateRegionInfoName() throws Exception {<a name="line.94"></a>
+<span class="sourceLineNo">095</span> final TableName tn = name.getTableName();<a name="line.95"></a>
+<span class="sourceLineNo">096</span> String startKey = "startkey";<a name="line.96"></a>
+<span class="sourceLineNo">097</span> final byte[] sk = Bytes.toBytes(startKey);<a name="line.97"></a>
+<span class="sourceLineNo">098</span> String id = "id";<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span> // old format region name<a name="line.100"></a>
+<span class="sourceLineNo">101</span> byte[] name = RegionInfo.createRegionName(tn, sk, id, false);<a name="line.101"></a>
+<span class="sourceLineNo">102</span> String nameStr = Bytes.toString(name);<a name="line.102"></a>
+<span class="sourceLineNo">103</span> assertEquals(tn + "," + startKey + "," + id, nameStr);<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span> // new format region name.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> String md5HashInHex = MD5Hash.getMD5AsHex(name);<a name="line.106"></a>
+<span class="sourceLineNo">107</span> assertEquals(RegionInfo.MD5_HEX_LENGTH, md5HashInHex.length());<a name="line.107"></a>
+<span class="sourceLineNo">108</span> name = RegionInfo.createRegionName(tn, sk, id, true);<a name="line.108"></a>
+<span class="sourceLineNo">109</span> nameStr = Bytes.toString(name);<a name="line.109"></a>
+<span class="sourceLineNo">110</span> assertEquals(tn + "," + startKey + "," + id + "." + md5HashInHex + ".", nameStr);<a name="line.110"></a>
+<span class="sourceLineNo">111</span> }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span> @Test<a name="line.113"></a>
+<span class="sourceLineNo">114</span> public void testContainsRange() {<a name="line.114"></a>
+<span class="sourceLineNo">115</span> TableDescriptor tableDesc = TableDescriptorBuilder.newBuilder(name.getTableName()).build();<a name="line.115"></a>
+<span class="sourceLineNo">116</span> RegionInfo ri = RegionInfoBuilder.newBuilder(tableDesc.getTableName())<a name="line.116"></a>
+<span class="sourceLineNo">117</span> .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("g")).build();<a name="line.117"></a>
+<span class="sourceLineNo">118</span> // Single row range at start of region<a name="line.118"></a>
+<span class="sourceLineNo">119</span> assertTrue(ri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("a")));<a name="line.119"></a>
+<span class="sourceLineNo">120</span> // Fully contained range<a name="line.120"></a>
+<span class="sourceLineNo">121</span> assertTrue(ri.containsRange(Bytes.toBytes("b"), Bytes.toBytes("c")));<a name="line.121"></a>
+<span class="sourceLineNo">122</span> // Range overlapping start of region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> assertTrue(ri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("c")));<a name="line.123"></a>
+<span class="sourceLineNo">124</span> // Fully contained single-row range<a name="line.124"></a>
+<span class="sourceLineNo">125</span> assertTrue(ri.containsRange(Bytes.toBytes("c"), Bytes.toBytes("c")));<a name="line.125"></a>
+<span class="sourceLineNo">126</span> // Range that overlaps end key and hence doesn't fit<a name="line.126"></a>
+<span class="sourceLineNo">127</span> assertFalse(ri.containsRange(Bytes.toBytes("a"), Bytes.toBytes("g")));<a name="line.127"></a>
+<span class="sourceLineNo">128</span> // Single row range on end key<a name="line.128"></a>
+<span class="sourceLineNo">129</span> assertFalse(ri.containsRange(Bytes.toBytes("g"), Bytes.toBytes("g")));<a name="line.129"></a>
+<span class="sourceLineNo">130</span> // Single row range entirely outside<a name="line.130"></a>
+<span class="sourceLineNo">131</span> assertFalse(ri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("z")));<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span> // Degenerate range<a name="line.133"></a>
+<span class="sourceLineNo">134</span> try {<a name="line.134"></a>
+<span class="sourceLineNo">135</span> ri.containsRange(Bytes.toBytes("z"), Bytes.toBytes("a"));<a name="line.135"></a>
+<span class="sourceLineNo">136</span> fail("Invalid range did not throw IAE");<a name="line.136"></a>
+<span class="sourceLineNo">137</span> } catch (IllegalArgumentException iae) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span> }<a name="line.138"></a>
+<span class="sourceLineNo">139</span> }<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span> @Test<a name="line.141"></a>
+<span class="sourceLineNo">142</span> public void testContainsRangeForMetaTable() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span> TableDescriptor tableDesc =<a name="line.143"></a>
+<span class="sourceLineNo">144</span> TableDescriptorBuilder.newBuilder(TableName.META_TABLE_NAME).build();<a name="line.144"></a>
+<span class="sourceLineNo">145</span> RegionInfo hri = RegionInfoBuilder.newBuilder(tableDesc.getTableName()).build();<a name="line.145"></a>
+<span class="sourceLineNo">146</span> byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.146"></a>
+<span class="sourceLineNo">147</span> byte[] row1 = Bytes.toBytes("a,a,0");<a name="line.147"></a>
+<span class="sourceLineNo">148</span> byte[] row2 = Bytes.toBytes("aaaaa,,1");<a name="line.148"></a>
+<span class="sourceLineNo">149</span> byte[] row3 = Bytes.toBytes("aaaaa,\u0000\u0000,2");<a name="line.149"></a>
+<span class="sourceLineNo">150</span> byte[] row4 = Bytes.toBytes("aaaaa,\u0001,3");<a name="line.150"></a>
+<span class="sourceLineNo">151</span> byte[] row5 = Bytes.toBytes("aaaaa,a,4");<a name="line.151"></a>
+<span class="sourceLineNo">152</span> byte[] row6 = Bytes.toBytes("aaaaa,\u1000,5");<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span> // Single row range at start of region<a name="line.154"></a>
+<span class="sourceLineNo">155</span> assertTrue(hri.containsRange(startRow, startRow));<a name="line.155"></a>
+<span class="sourceLineNo">156</span> // Fully contained range<a name="line.156"></a>
+<span class="sourceLineNo">157</span> assertTrue(hri.containsRange(row1, row2));<a name="line.157"></a>
+<span class="sourceLineNo">158</span> assertTrue(hri.containsRange(row2, row3));<a name="line.158"></a>
+<span class="sourceLineNo">159</span> assertTrue(hri.containsRange(row3, row4));<a name="line.159"></a>
+<span class="sourceLineNo">160</span> assertTrue(hri.containsRange(row4, row5));<a name="line.160"></a>
+<span class="sourceLineNo">161</span> assertTrue(hri.containsRange(row5, row6));<a name="line.161"></a>
+<span class="sourceLineNo">162</span> // Range overlapping start of region<a name="line.162"></a>
+<span class="sourceLineNo">163</span> assertTrue(hri.containsRange(startRow, row2));<a name="line.163"></a>
+<span class="sourceLineNo">164</span> // Fully contained single-row range<a name="line.164"></a>
+<span class="sourceLineNo">165</span> assertTrue(hri.containsRange(row1, row1));<a name="line.165"></a>
+<span class="sourceLineNo">166</span> // Degenerate range<a name="line.166"></a>
+<span class="sourceLineNo">167</span> try {<a name="line.167"></a>
+<span class="sourceLineNo">168</span> hri.containsRange(row3, row2);<a name="line.168"></a>
+<span class="sourceLineNo">169</span> fail("Invalid range did not throw IAE");<a name="line.169"></a>
+<span class="sourceLineNo">170</span> } catch (IllegalArgumentException iae) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span> }<a name="line.171"></a>
+<span class="sourceLineNo">172</span> }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span> @Test<a name="line.174"></a>
+<span class="sourceLineNo">175</span> public void testLastRegionCompare() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span> TableDescriptor tableDesc = TableDescriptorBuilder.newBuilder(name.getTableName()).build();<a name="line.176"></a>
+<span class="sourceLineNo">177</span> RegionInfo rip = RegionInfoBuilder.newBuilder(tableDesc.getTableName())<a name="line.177"></a>
+<span class="sourceLineNo">178</span> .setStartKey(Bytes.toBytes("a")).setEndKey(new byte[0]).build();<a name="line.178"></a>
+<span class="sourceLineNo">179</span> RegionInfo ric = RegionInfoBuilder.newBuilder(tableDesc.getTableName())<a name="line.179"></a>
+<span class="sourceLineNo">180</span> .setStartKey(Bytes.toBytes("a")).setEndKey(Bytes.toBytes("b")).build();<a name="line.180"></a>
+<span class="sourceLineNo">181</span> assertTrue(RegionInfo.COMPARATOR.compare(rip, ric) > 0);<a name="line.181"></a>
+<span class="sourceLineNo">182</span> }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span> @Test<a name="line.184"></a>
+<span class="sourceLineNo">185</span> public void testMetaTables() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span> assertTrue(RegionInfoBuilder.FIRST_META_REGIONINFO.isMetaRegion());<a name="line.186"></a>
+<span class="sourceLineNo">187</span> }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span> @Test<a name="line.189"></a>
+<span class="sourceLineNo">190</span> public void testComparator() {<a name="line.190"></a>
+<span class="sourceLineNo">191</span> final TableName tableName = name.getTableName();<a name="line.191"></a>
+<span class="sourceLineNo">192</span> byte[] empty = new byte[0];<a name="line.192"></a>
+<span class="sourceLineNo">193</span> RegionInfo older = RegionInfoBuilder.newBuilder(tableName).setStartKey(empty).setEndKey(empty)<a name="line.193"></a>
+<span class="sourceLineNo">194</span> .setSplit(false).setRegionId(0L).build();<a name="line.194"></a>
+<span class="sourceLineNo">195</span> RegionInfo newer = RegionInfoBuilder.newBuilder(tableName).setStartKey(empty).setEndKey(empty)<a name="line.195"></a>
+<span class="sourceLineNo">196</span> .setSplit(false).setRegionId(1L).build();<a name="line.196"></a>
+<span class="sourceLineNo">197</span> assertTrue(RegionInfo.COMPARATOR.compare(older, newer) < 0);<a name="line.197"></a>
+<span class="sourceLineNo">198</span> assertTrue(RegionInfo.COMPARATOR.compare(newer, older) > 0);<a name="line.198"></a>
+<span class="sourceLineNo">199</span> assertTrue(RegionInfo.COMPARATOR.compare(older, older) == 0);<a name="line.199"></a>
+<span class="sourceLineNo">200</span> assertTrue(RegionInfo.COMPARATOR.compare(newer, newer) == 0);<a name="line.200"></a>
+<span class="sourceLineNo">201</span> }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span> @Test<a name="line.203"></a>
+<span class="sourceLineNo">204</span> public void testRegionNameForRegionReplicas() throws Exception {<a name="line.204"></a>
+<span class="sourceLineNo">205</span> final TableName tn = name.getTableName();<a name="line.205"></a>
+<span class="sourceLineNo">206</span> String startKey = "startkey";<a name="line.206"></a>
+<span class="sourceLineNo">207</span> final byte[] sk = Bytes.toBytes(startKey);<a name="line.207"></a>
+<span class="sourceLineNo">208</span> String id = "id";<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span> // assert with only the region name without encoding<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span> // primary, replicaId = 0<a name="line.212"></a>
+<span class="sourceLineNo">213</span> byte[] name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0, false);<a name="line.213"></a>
+<span class="sourceLineNo">214</span> String nameStr = Bytes.toString(name);<a name="line.214"></a>
+<span class="sourceLineNo">215</span> assertEquals(tn + "," + startKey + "," + id, nameStr);<a name="line.215"></a>
<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span> fields = RegionInfo.parseRegionName(regionName);<a name="line.217"></a>
-<span class="sourceLineNo">218</span> assertArrayEquals(Bytes.toString(fields[0]), tableName.getName(), fields[0]);<a name="line.218"></a>
-<span class="sourceLineNo">219</span> assertArrayEquals(Bytes.toString(fields[1]), startKey, fields[1]);<a name="line.219"></a>
-<span class="sourceLineNo">220</span> assertArrayEquals(Bytes.toString(fields[2]), Bytes.toBytes(Long.toString(regionId)), fields[2]);<a name="line.220"></a>
-<span class="sourceLineNo">221</span> assertArrayEquals(Bytes.toString(fields[3]),<a name="line.221"></a>
-<span class="sourceLineNo">222</span> Bytes.toBytes(String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId)), fields[3]);<a name="line.222"></a>
-<span class="sourceLineNo">223</span> }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span> @Test<a name="line.225"></a>
-<span class="sourceLineNo">226</span> public void testConvert() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span> final TableName tableName =<a name="line.227"></a>
-<span class="sourceLineNo">228</span> TableName.valueOf("ns1:" + name.getTableName().getQualifierAsString());<a name="line.228"></a>
-<span class="sourceLineNo">229</span> byte[] startKey = Bytes.toBytes("startKey");<a name="line.229"></a>
-<span class="sourceLineNo">230</span> byte[] endKey = Bytes.toBytes("endKey");<a name="line.230"></a>
-<span class="sourceLineNo">231</span> boolean split = false;<a name="line.231"></a>
-<span class="sourceLineNo">232</span> long regionId = EnvironmentEdgeManager.currentTime();<a name="line.232"></a>
-<span class="sourceLineNo">233</span> int replicaId = 42;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span> RegionInfo ri = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).setEndKey(endKey)<a name="line.235"></a>
-<span class="sourceLineNo">236</span> .setSplit(split).setRegionId(regionId).setReplicaId(replicaId).build();<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span> // convert two times, compare<a name="line.238"></a>
-<span class="sourceLineNo">239</span> RegionInfo convertedRi = ProtobufUtil.toRegionInfo(ProtobufUtil.toRegionInfo(ri));<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span> assertEquals(ri, convertedRi);<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span> // test convert RegionInfo without replicaId<a name="line.243"></a>
-<span class="sourceLineNo">244</span> HBaseProtos.RegionInfo info = HBaseProtos.RegionInfo.newBuilder()<a name="line.244"></a>
-<span class="sourceLineNo">245</span> .setTableName(HBaseProtos.TableName.newBuilder()<a name="line.245"></a>
-<span class="sourceLineNo">246</span> .setQualifier(UnsafeByteOperations.unsafeWrap(tableName.getQualifier()))<a name="line.246"></a>
-<span class="sourceLineNo">247</span> .setNamespace(UnsafeByteOperations.unsafeWrap(tableName.getNamespace())).build())<a name="line.247"></a>
-<span class="sourceLineNo">248</span> .setStartKey(UnsafeByteOperations.unsafeWrap(startKey))<a name="line.248"></a>
-<span class="sourceLineNo">249</span> .setEndKey(UnsafeByteOperations.unsafeWrap(endKey)).setSplit(split).setRegionId(regionId)<a name="line.249"></a>
-<span class="sourceLineNo">250</span> .build();<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span> convertedRi = ProtobufUtil.toRegionInfo(info);<a name="line.252"></a>
-<span class="sourceLineNo">253</span> RegionInfo expectedRi = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey)<a name="line.253"></a>
-<span class="sourceLineNo">254</span> .setEndKey(endKey).setSplit(split).setRegionId(regionId).setReplicaId(0).build();<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span> assertEquals(expectedRi, convertedRi);<a name="line.256"></a>
+<span class="sourceLineNo">217</span> // replicaId = 1<a name="line.217"></a>
+<span class="sourceLineNo">218</span> name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 1, false);<a name="line.218"></a>
+<span class="sourceLineNo">219</span> nameStr = Bytes.toString(name);<a name="line.219"></a>
+<span class="sourceLineNo">220</span> assertEquals(<a name="line.220"></a>
+<span class="sourceLineNo">221</span> tn + "," + startKey + "," + id + "_" + String.format(RegionInfo.REPLICA_ID_FORMAT, 1),<a name="line.221"></a>
+<span class="sourceLineNo">222</span> nameStr);<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span> // replicaId = max<a name="line.224"></a>
+<span class="sourceLineNo">225</span> name = RegionInfo.createRegionName(tn, sk, Bytes.toBytes(id), 0xFFFF, false);<a name="line.225"></a>
+<span class="sourceLineNo">226</span> nameStr = Bytes.toString(name);<a name="line.226"></a>
+<span class="sourceLineNo">227</span> assertEquals(<a name="line.227"></a>
+<span class="sourceLineNo">228</span> tn + "," + startKey + "," + id + "_" + String.format(RegionInfo.REPLICA_ID_FORMAT, 0xFFFF),<a name="line.228"></a>
+<span class="sourceLineNo">229</span> nameStr);<a name="line.229"></a>
+<span class="sourceLineNo">230</span> }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span> @Test<a name="line.232"></a>
+<span class="sourceLineNo">233</span> public void testParseName() throws IOException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span> final TableName tableName = name.getTableName();<a name="line.234"></a>
+<span class="sourceLineNo">235</span> byte[] startKey = Bytes.toBytes("startKey");<a name="line.235"></a>
+<span class="sourceLineNo">236</span> long regionId = EnvironmentEdgeManager.currentTime();<a name="line.236"></a>
+<span class="sourceLineNo">237</span> int replicaId = 42;<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span> // test without replicaId<a name="line.239"></a>
+<span class="sourceLineNo">240</span> byte[] regionName = RegionInfo.createRegionName(tableName, startKey, regionId, false);<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span> byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.242"></a>
+<span class="sourceLineNo">243</span> assertArrayEquals(Bytes.toString(fields[0]), tableName.getName(), fields[0]);<a name="line.243"></a>
+<span class="sourceLineNo">244</span> assertArrayEquals(Bytes.toString(fields[1]), startKey, fields[1]);<a name="line.244"></a>
+<span class="sourceLineNo">245</span> assertArrayEquals(Bytes.toString(fields[2]), Bytes.toBytes(Long.toString(regionId)), fields[2]);<a name="line.245"></a>
+<span class="sourceLineNo">246</span> assertEquals(3, fields.length);<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span> // test with replicaId<a name="line.248"></a>
+<span class="sourceLineNo">249</span> regionName = RegionInfo.createRegionName(tableName, startKey, regionId, replicaId, false);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span> fields = RegionInfo.parseRegionName(regionName);<a name="line.251"></a>
+<span class="sourceLineNo">252</span> assertArrayEquals(Bytes.toString(fields[0]), tableName.getName(), fields[0]);<a name="line.252"></a>
+<span class="sourceLineNo">253</span> assertArrayEquals(Bytes.toString(fields[1]), startKey, fields[1]);<a name="line.253"></a>
+<span class="sourceLineNo">254</span> assertArrayEquals(Bytes.toString(fields[2]), Bytes.toBytes(Long.toString(regionId)), fields[2]);<a name="line.254"></a>
+<span class="sourceLineNo">255</span> assertArrayEquals(Bytes.toString(fields[3]),<a name="line.255"></a>
+<span class="sourceLineNo">256</span> Bytes.toBytes(String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId)), fields[3]);<a name="line.256"></a>
<span class="sourceLineNo">257</span> }<a name="line.257"></a>
<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span> private void assertRegionNameNotEquals(RegionInfo expected, RegionInfo actual) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span> assertNotEquals(expected.getRegionNameAsString(), actual.getRegionNameAsString());<a name="line.260"></a>
-<span class="sourceLineNo">261</span> assertNotEquals(expected.getEncodedName(), actual.getEncodedName());<a name="line.261"></a>
-<span class="sourceLineNo">262</span> }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span> private void assertRegionNameEquals(RegionInfo expected, RegionInfo actual) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span> assertEquals(expected.getRegionNameAsString(), actual.getRegionNameAsString());<a name="line.265"></a>
-<span class="sourceLineNo">266</span> assertEquals(expected.getEncodedName(), actual.getEncodedName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span> }<a name="line.267"></a>
+<span class="sourceLineNo">259</span> @Test<a name="line.259"></a>
+<span class="sourceLineNo">260</span> public void testConvert() {<a name="line.260"></a>
+<span class="sourceLineNo">261</span> final TableName tableName =<a name="line.261"></a>
+<span class="sourceLineNo">262</span> TableName.valueOf("ns1:" + name.getTableName().getQualifierAsString());<a name="line.262"></a>
+<span class="sourceLineNo">263</span> byte[] startKey = Bytes.toBytes("startKey");<a name="line.263"></a>
+<span class="sourceLineNo">264</span> byte[] endKey = Bytes.toBytes("endKey");<a name="line.264"></a>
+<span class="sourceLineNo">265</span> boolean split = false;<a name="line.265"></a>
+<span class="sourceLineNo">266</span> long regionId = EnvironmentEdgeManager.currentTime();<a name="line.266"></a>
+<span class="sourceLineNo">267</span> int replicaId = 42;<a name="line.267"></a>
<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span> @Test<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public void testNewBuilderWithRegionInfo() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> RegionInfo ri = RegionInfoBuilder.newBuilder(name.getTableName()).build();<a name="line.271"></a>
-<span class="sourceLineNo">272</span> assertEquals(ri, RegionInfoBuilder.newBuilder(ri).build());<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span> // make sure that the region name and encoded name are changed, see HBASE-24500 for more<a name="line.274"></a>
-<span class="sourceLineNo">275</span> // details.<a name="line.275"></a>
-<span class="sourceLineNo">276</span> assertRegionNameNotEquals(ri,<a name="line.276"></a>
-<span class="sourceLineNo">277</span> RegionInfoBuilder.newBuilder(ri).setStartKey(new byte[1]).build());<a name="line.277"></a>
-<span class="sourceLineNo">278</span> assertRegionNameNotEquals(ri,<a name="line.278"></a>
-<span class="sourceLineNo">279</span> RegionInfoBuilder.newBuilder(ri).setRegionId(ri.getRegionId() + 1).build());<a name="line.279"></a>
-<span class="sourceLineNo">280</span> assertRegionNameNotEquals(ri, RegionInfoBuilder.newBuilder(ri).setReplicaId(1).build());<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span> // these fields are not in region name<a name="line.282"></a>
-<span class="sourceLineNo">283</span> assertRegionNameEquals(ri, RegionInfoBuilder.newBuilder(ri).setEndKey(new byte[1]).build());<a name="line.283"></a>
-<span class="sourceLineNo">284</span> assertRegionNameEquals(ri, RegionInfoBuilder.newBuilder(ri).setSplit(true).build());<a name="line.284"></a>
-<span class="sourceLineNo">285</span> assertRegionNameEquals(ri, RegionInfoBuilder.newBuilder(ri).setOffline(true).build());<a name="line.285"></a>
-<span class="sourceLineNo">286</span> }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>}<a name="line.287"></a>
+<span class="sourceLineNo">269</span> RegionInfo ri = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).setEndKey(endKey)<a name="line.269"></a>
+<span class="sourceLineNo">270</span> .setSplit(split).setRegionId(regionId).setReplicaId(replicaId).build();<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> // convert two times, compare<a name="line.272"></a>
+<span class="sourceLineNo">273</span> RegionInfo convertedRi = ProtobufUtil.toRegionInfo(ProtobufUtil.toRegionInfo(ri));<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span> assertEquals(ri, convertedRi);<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span> // test convert RegionInfo without replicaId<a name="line.277"></a>
+<span class="sourceLineNo">278</span> HBaseProtos.RegionInfo info = HBaseProtos.RegionInfo.newBuilder()<a name="line.278"></a>
+<span class="sourceLineNo">279</span> .setTableName(HBaseProtos.TableName.newBuilder()<a name="line.279"></a>
+<span class="sourceLineNo">280</span> .setQualifier(UnsafeByteOperations.unsafeWrap(tableName.getQualifier()))<a name="line.280"></a>
+<span class="sourceLineNo">281</span> .setNamespace(UnsafeByteOperations.unsafeWrap(tableName.getNamespace())).build())<a name="line.281"></a>
+<span class="sourceLineNo">282</span> .setStartKey(UnsafeByteOperations.unsafeWrap(startKey))<a name="line.282"></a>
+<span class="sourceLineNo">283</span> .setEndKey(UnsafeByteOperations.unsafeWrap(endKey)).setSplit(split).setRegionId(regionId)<a name="line.283"></a>
+<span class="sourceLineNo">284</span> .build();<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span> convertedRi = ProtobufUtil.toRegionInfo(info);<a name="line.286"></a>
+<span class="sourceLineNo">287</span> RegionInfo expectedRi = RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey)<a name="line.287"></a>
+<span class="sourceLineNo">288</span> .setEndKey(endKey).setSplit(split).setRegionId(regionId).setReplicaId(0).build();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span> assertEquals(expectedRi, convertedRi);<a name="line.290"></a>
+<span class="sourceLineNo">291</span> }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span> private void assertRegionNameNotEquals(RegionInfo expected, RegionInfo actual) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span> assertNotEquals(expected.getRegionNameAsString(), actual.getRegionNameAsString());<a name="line.294"></a>
+<span class="sourceLineNo">295</span> assertNotEquals(expected.getEncodedName(), actual.getEncodedName());<a name="line.295"></a>
+<span class="sourceLineNo">296</span> }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span> private void assertRegionNameEquals(RegionInfo expected, RegionInfo actual) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span> assertEquals(expected.getRegionNameAsString(), actual.getRegionNameAsString());<a name="line.299"></a>
+<span class="sourceLineNo">300</span> assertEquals(expected.getEncodedName(), actual.getEncodedName());<a name="line.300"></a>
+<span class="sourceLineNo">301</span> }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span> @Test<a name="line.303"></a>
+<span class="sourceLineNo">304</span> public void testNewBuilderWithRegionInfo() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span> RegionInfo ri = RegionInfoBuilder.newBuilder(name.getTableName()).build();<a name="line.305"></a>
+<span class="sourceLineNo">306</span> assertEquals(ri, RegionInfoBuilder.newBuilder(ri).build());<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span> // make sure that the region name and encoded name are changed, see HBASE-24500 for more<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // details.<a name="line.309"></a>
+<span class="sourceLineNo">310</span> assertRegionNameNotEquals(ri,<a name="line.310"></a>
+<span class="sourceLineNo">311</span> RegionInfoBuilder.newBuilder(ri).setStartKey(new byte[1]).build());<a name="line.311"></a>
+<span class="sourceLineNo">312</span> assertRegionNameNotEquals(ri,<a name="line.312"></a>
+<span class="sourceLineNo">313</span> RegionInfoBuilder.newBuilder(ri).setRegionId(ri.getRegionId() + 1).build());<a name="line.313"></a>
+<span class="sourceLineNo">314</span> assertRegionNameNotEquals(ri, RegionInfoBuilder.newBuilder(ri).setReplicaId(1).build());<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span> // these fields are not in region name<a name="line.316"></a>
+<span class="sourceLineNo">317</span> assertRegionNameEquals(ri, RegionInfoBuilder.newBuilder(ri).setEndKey(new byte[1]).build());<a name="line.317"></a>
+<span class="sourceLineNo">318</span> assertRegionNameEquals(ri, RegionInfoBuilder.newBuilder(ri).setSplit(true).build());<a name="line.318"></a>
+<span class="sourceLineNo">319</span> assertRegionNameEquals(ri, RegionInfoBuilder.newBuilder(ri).setOffline(true).build());<a name="line.319"></a>
+<span class="sourceLineNo">320</span> }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>}<a name="line.321"></a>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html
index 570a66a..feb2b31 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mob/FaultyMobStoreCompactor.html
@@ -40,356 +40,358 @@
<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<a name="line.32"></a>
<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.Path;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.Cell;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.TableName;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.hfile.CorruptHFileException;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.regionserver.CellSink;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.KeyValueScanner;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.ShipperListener;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.compactions.CloseChecker;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputControlUtil;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>/**<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * This class is used for testing only. The main purpose is to emulate<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * random failures during MOB compaction process.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * Example of usage:<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <pre>{@code<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * public class SomeTest {<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * public void initConfiguration(Configuration conf){<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * conf.set(MobStoreEngine.DEFAULT_MOB_COMPACTOR_CLASS_KEY,<a name="line.62"></a>
-<span class="sourceLineNo">063</span> FaultyMobStoreCompactor.class.getName());<a name="line.63"></a>
-<span class="sourceLineNo">064</span> conf.setDouble("hbase.mob.compaction.fault.probability", 0.1);<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * }<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * }<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * }</pre><a name="line.67"></a>
-<span class="sourceLineNo">068</span> * @see org.apache.hadoop.hbase.mob.MobStressToolRunner on how to use and configure<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * this class.<a name="line.69"></a>
-<span class="sourceLineNo">070</span> *<a name="line.70"></a>
-<span class="sourceLineNo">071</span> */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>@InterfaceAudience.Private<a name="line.72"></a>
-<span class="sourceLineNo">073</span>public class FaultyMobStoreCompactor extends DefaultMobStoreCompactor {<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span> private static final Logger LOG = LoggerFactory.getLogger(FaultyMobStoreCompactor.class);<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span> public static AtomicLong mobCounter = new AtomicLong();<a name="line.77"></a>
-<span class="sourceLineNo">078</span> public static AtomicLong totalFailures = new AtomicLong();<a name="line.78"></a>
-<span class="sourceLineNo">079</span> public static AtomicLong totalCompactions = new AtomicLong();<a name="line.79"></a>
-<span class="sourceLineNo">080</span> public static AtomicLong totalMajorCompactions = new AtomicLong();<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span> static double failureProb = 0.1d;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> static Random rnd = new Random();<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span> public FaultyMobStoreCompactor(Configuration conf, HStore store) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span> super(conf, store);<a name="line.86"></a>
-<span class="sourceLineNo">087</span> failureProb = conf.getDouble("hbase.mob.compaction.fault.probability", 0.1);<a name="line.87"></a>
-<span class="sourceLineNo">088</span> }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span> @Override<a name="line.90"></a>
-<span class="sourceLineNo">091</span> protected boolean performCompaction(FileDetails fd, InternalScanner scanner, CellSink writer,<a name="line.91"></a>
-<span class="sourceLineNo">092</span> long smallestReadPoint, boolean cleanSeqId, ThroughputController throughputController,<a name="line.92"></a>
-<span class="sourceLineNo">093</span> boolean major, int numofFilesToCompact) throws IOException {<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span> totalCompactions.incrementAndGet();<a name="line.95"></a>
-<span class="sourceLineNo">096</span> if (major) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span> totalMajorCompactions.incrementAndGet();<a name="line.97"></a>
-<span class="sourceLineNo">098</span> }<a name="line.98"></a>
-<span class="sourceLineNo">099</span> long bytesWrittenProgressForLog = 0;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> long bytesWrittenProgressForShippedCall = 0;<a name="line.100"></a>
-<span class="sourceLineNo">101</span> // Clear old mob references<a name="line.101"></a>
-<span class="sourceLineNo">102</span> mobRefSet.get().clear();<a name="line.102"></a>
-<span class="sourceLineNo">103</span> boolean isUserRequest = userRequest.get();<a name="line.103"></a>
-<span class="sourceLineNo">104</span> boolean compactMOBs = major && isUserRequest;<a name="line.104"></a>
-<span class="sourceLineNo">105</span> boolean discardMobMiss = conf.getBoolean(MobConstants.MOB_UNSAFE_DISCARD_MISS_KEY,<a name="line.105"></a>
-<span class="sourceLineNo">106</span> MobConstants.DEFAULT_MOB_DISCARD_MISS);<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span> boolean mustFail = false;<a name="line.108"></a>
-<span class="sourceLineNo">109</span> if (compactMOBs) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span> mobCounter.incrementAndGet();<a name="line.110"></a>
-<span class="sourceLineNo">111</span> double dv = rnd.nextDouble();<a name="line.111"></a>
-<span class="sourceLineNo">112</span> if (dv < failureProb) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span> mustFail = true;<a name="line.113"></a>
-<span class="sourceLineNo">114</span> totalFailures.incrementAndGet();<a name="line.114"></a>
-<span class="sourceLineNo">115</span> }<a name="line.115"></a>
-<span class="sourceLineNo">116</span> }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span> FileSystem fs = store.getFileSystem();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span> // Since scanner.next() can return 'false' but still be delivering data,<a name="line.120"></a>
-<span class="sourceLineNo">121</span> // we have to use a do/while loop.<a name="line.121"></a>
-<span class="sourceLineNo">122</span> List<Cell> cells = new ArrayList<>();<a name="line.122"></a>
-<span class="sourceLineNo">123</span> // Limit to "hbase.hstore.compaction.kv.max" (default 10) to avoid OOME<a name="line.123"></a>
-<span class="sourceLineNo">124</span> long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.124"></a>
-<span class="sourceLineNo">125</span> long lastMillis = 0;<a name="line.125"></a>
-<span class="sourceLineNo">126</span> if (LOG.isDebugEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span> lastMillis = currentTime;<a name="line.127"></a>
-<span class="sourceLineNo">128</span> }<a name="line.128"></a>
-<span class="sourceLineNo">129</span> CloseChecker closeChecker = new CloseChecker(conf, currentTime);<a name="line.129"></a>
-<span class="sourceLineNo">130</span> String compactionName = ThroughputControlUtil.getNameForThrottling(store, "compaction");<a name="line.130"></a>
-<span class="sourceLineNo">131</span> long now = 0;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> boolean hasMore;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> Path path = MobUtils.getMobFamilyPath(conf, store.getTableName(), store.getColumnFamilyName());<a name="line.133"></a>
-<span class="sourceLineNo">134</span> byte[] fileName = null;<a name="line.134"></a>
-<span class="sourceLineNo">135</span> StoreFileWriter mobFileWriter = null;<a name="line.135"></a>
-<span class="sourceLineNo">136</span> long mobCells = 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> long cellsCountCompactedToMob = 0, cellsCountCompactedFromMob = 0;<a name="line.137"></a>
-<span class="sourceLineNo">138</span> long cellsSizeCompactedToMob = 0, cellsSizeCompactedFromMob = 0;<a name="line.138"></a>
-<span class="sourceLineNo">139</span> boolean finished = false;<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span> ScannerContext scannerContext =<a name="line.141"></a>
-<span class="sourceLineNo">142</span> ScannerContext.newBuilder().setBatchLimit(compactionKVMax).build();<a name="line.142"></a>
-<span class="sourceLineNo">143</span> throughputController.start(compactionName);<a name="line.143"></a>
-<span class="sourceLineNo">144</span> KeyValueScanner kvs = (scanner instanceof KeyValueScanner) ? (KeyValueScanner) scanner : null;<a name="line.144"></a>
-<span class="sourceLineNo">145</span> long shippedCallSizeLimit =<a name="line.145"></a>
-<span class="sourceLineNo">146</span> (long) numofFilesToCompact * this.store.getColumnFamilyDescriptor().getBlocksize();<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span> Cell mobCell = null;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span> long counter = 0;<a name="line.150"></a>
-<span class="sourceLineNo">151</span> long countFailAt = -1;<a name="line.151"></a>
-<span class="sourceLineNo">152</span> if (mustFail) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span> countFailAt = rnd.nextInt(100); // randomly fail fast<a name="line.153"></a>
-<span class="sourceLineNo">154</span> }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span> try {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> try {<a name="line.157"></a>
-<span class="sourceLineNo">158</span> mobFileWriter = mobStore.createWriterInTmp(new Date(fd.latestPutTs), fd.maxKeyCount,<a name="line.158"></a>
-<span class="sourceLineNo">159</span> major ? majorCompactionCompression : minorCompactionCompression,<a name="line.159"></a>
-<span class="sourceLineNo">160</span> store.getRegionInfo().getStartKey(), true);<a name="line.160"></a>
-<span class="sourceLineNo">161</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.161"></a>
-<span class="sourceLineNo">162</span> } catch (IOException e) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span> // Bailing out<a name="line.163"></a>
-<span class="sourceLineNo">164</span> LOG.error("Failed to create mob writer, ", e);<a name="line.164"></a>
-<span class="sourceLineNo">165</span> throw e;<a name="line.165"></a>
-<span class="sourceLineNo">166</span> }<a name="line.166"></a>
-<span class="sourceLineNo">167</span> if (compactMOBs) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span> // Add the only reference we get for compact MOB case<a name="line.168"></a>
-<span class="sourceLineNo">169</span> // because new store file will have only one MOB reference<a name="line.169"></a>
-<span class="sourceLineNo">170</span> // in this case - of newly compacted MOB file<a name="line.170"></a>
-<span class="sourceLineNo">171</span> mobRefSet.get().put(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.171"></a>
-<span class="sourceLineNo">172</span> }<a name="line.172"></a>
-<span class="sourceLineNo">173</span> do {<a name="line.173"></a>
-<span class="sourceLineNo">174</span> hasMore = scanner.next(cells, scannerContext);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> currentTime = EnvironmentEdgeManager.currentTime();<a name="line.175"></a>
-<span class="sourceLineNo">176</span> if (LOG.isDebugEnabled()) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span> now = currentTime;<a name="line.177"></a>
-<span class="sourceLineNo">178</span> }<a name="line.178"></a>
-<span class="sourceLineNo">179</span> if (closeChecker.isTimeLimit(store, currentTime)) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span> progress.cancel();<a name="line.180"></a>
-<span class="sourceLineNo">181</span> return false;<a name="line.181"></a>
-<span class="sourceLineNo">182</span> }<a name="line.182"></a>
-<span class="sourceLineNo">183</span> for (Cell c : cells) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span> counter++;<a name="line.184"></a>
-<span class="sourceLineNo">185</span> if (compactMOBs) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span> if (MobUtils.isMobReferenceCell(c)) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span> if (counter == countFailAt) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span> LOG.warn("INJECTED FAULT mobCounter={}", mobCounter.get());<a name="line.188"></a>
-<span class="sourceLineNo">189</span> throw new CorruptHFileException("injected fault");<a name="line.189"></a>
-<span class="sourceLineNo">190</span> }<a name="line.190"></a>
-<span class="sourceLineNo">191</span> String fName = MobUtils.getMobFileName(c);<a name="line.191"></a>
-<span class="sourceLineNo">192</span> // Added to support migration<a name="line.192"></a>
-<span class="sourceLineNo">193</span> try {<a name="line.193"></a>
-<span class="sourceLineNo">194</span> mobCell = mobStore.resolve(c, true, false).getCell();<a name="line.194"></a>
-<span class="sourceLineNo">195</span> } catch (FileNotFoundException fnfe) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span> if (discardMobMiss) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span> LOG.error("Missing MOB cell: file={} not found", fName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span> continue;<a name="line.198"></a>
-<span class="sourceLineNo">199</span> } else {<a name="line.199"></a>
-<span class="sourceLineNo">200</span> throw fnfe;<a name="line.200"></a>
-<span class="sourceLineNo">201</span> }<a name="line.201"></a>
-<span class="sourceLineNo">202</span> }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span> if (discardMobMiss && mobCell.getValueLength() == 0) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span> LOG.error("Missing MOB cell value: file={} cell={}", fName, mobCell);<a name="line.205"></a>
-<span class="sourceLineNo">206</span> continue;<a name="line.206"></a>
-<span class="sourceLineNo">207</span> }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span> if (mobCell.getValueLength() > mobSizeThreshold) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span> // put the mob data back to the store file<a name="line.210"></a>
-<span class="sourceLineNo">211</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.211"></a>
-<span class="sourceLineNo">212</span> mobFileWriter.append(mobCell);<a name="line.212"></a>
-<span class="sourceLineNo">213</span> writer.append(<a name="line.213"></a>
-<span class="sourceLineNo">214</span> MobUtils.createMobRefCell(mobCell, fileName, this.mobStore.getRefCellTags()));<a name="line.214"></a>
-<span class="sourceLineNo">215</span> mobCells++;<a name="line.215"></a>
-<span class="sourceLineNo">216</span> } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span> // If MOB value is less than threshold, append it directly to a store file<a name="line.217"></a>
-<span class="sourceLineNo">218</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.218"></a>
-<span class="sourceLineNo">219</span> writer.append(mobCell);<a name="line.219"></a>
-<span class="sourceLineNo">220</span> cellsCountCompactedFromMob++;<a name="line.220"></a>
-<span class="sourceLineNo">221</span> cellsSizeCompactedFromMob += mobCell.getValueLength();<a name="line.221"></a>
-<span class="sourceLineNo">222</span> }<a name="line.222"></a>
-<span class="sourceLineNo">223</span> } else {<a name="line.223"></a>
-<span class="sourceLineNo">224</span> // Not a MOB reference cell<a name="line.224"></a>
-<span class="sourceLineNo">225</span> int size = c.getValueLength();<a name="line.225"></a>
-<span class="sourceLineNo">226</span> if (size > mobSizeThreshold) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span> mobFileWriter.append(c);<a name="line.227"></a>
-<span class="sourceLineNo">228</span> writer<a name="line.228"></a>
-<span class="sourceLineNo">229</span> .append(MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags()));<a name="line.229"></a>
-<span class="sourceLineNo">230</span> mobCells++;<a name="line.230"></a>
-<span class="sourceLineNo">231</span> cellsCountCompactedToMob++;<a name="line.231"></a>
-<span class="sourceLineNo">232</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.232"></a>
-<span class="sourceLineNo">233</span> } else {<a name="line.233"></a>
-<span class="sourceLineNo">234</span> writer.append(c);<a name="line.234"></a>
-<span class="sourceLineNo">235</span> }<a name="line.235"></a>
-<span class="sourceLineNo">236</span> }<a name="line.236"></a>
-<span class="sourceLineNo">237</span> } else if (c.getTypeByte() != KeyValue.Type.Put.getCode()) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> // Not a major compaction or major with MOB disabled<a name="line.238"></a>
-<span class="sourceLineNo">239</span> // If the kv type is not put, directly write the cell<a name="line.239"></a>
-<span class="sourceLineNo">240</span> // to the store file.<a name="line.240"></a>
-<span class="sourceLineNo">241</span> writer.append(c);<a name="line.241"></a>
-<span class="sourceLineNo">242</span> } else if (MobUtils.isMobReferenceCell(c)) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span> // Not a major MOB compaction, Put MOB reference<a name="line.243"></a>
-<span class="sourceLineNo">244</span> if (MobUtils.hasValidMobRefCellValue(c)) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> int size = MobUtils.getMobValueLength(c);<a name="line.245"></a>
-<span class="sourceLineNo">246</span> if (size > mobSizeThreshold) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span> // If the value size is larger than the threshold, it's regarded as a mob. Since<a name="line.247"></a>
-<span class="sourceLineNo">248</span> // its value is already in the mob file, directly write this cell to the store file<a name="line.248"></a>
-<span class="sourceLineNo">249</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.249"></a>
-<span class="sourceLineNo">250</span> if (refTable.isPresent()) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span> mobRefSet.get().put(refTable.get(), MobUtils.getMobFileName(c));<a name="line.251"></a>
-<span class="sourceLineNo">252</span> writer.append(c);<a name="line.252"></a>
-<span class="sourceLineNo">253</span> } else {<a name="line.253"></a>
-<span class="sourceLineNo">254</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.254"></a>
-<span class="sourceLineNo">255</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.255"></a>
-<span class="sourceLineNo">256</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.256"></a>
-<span class="sourceLineNo">257</span> }<a name="line.257"></a>
-<span class="sourceLineNo">258</span> } else {<a name="line.258"></a>
-<span class="sourceLineNo">259</span> // If the value is not larger than the threshold, it's not regarded a mob. Retrieve<a name="line.259"></a>
-<span class="sourceLineNo">260</span> // the mob cell from the mob file, and write it back to the store file.<a name="line.260"></a>
-<span class="sourceLineNo">261</span> mobCell = mobStore.resolve(c, true, false).getCell();<a name="line.261"></a>
-<span class="sourceLineNo">262</span> if (mobCell.getValueLength() != 0) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span> // put the mob data back to the store file<a name="line.263"></a>
-<span class="sourceLineNo">264</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.264"></a>
-<span class="sourceLineNo">265</span> writer.append(mobCell);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> cellsCountCompactedFromMob++;<a name="line.266"></a>
-<span class="sourceLineNo">267</span> cellsSizeCompactedFromMob += mobCell.getValueLength();<a name="line.267"></a>
-<span class="sourceLineNo">268</span> } else {<a name="line.268"></a>
-<span class="sourceLineNo">269</span> // If the value of a file is empty, there might be issues when retrieving,<a name="line.269"></a>
-<span class="sourceLineNo">270</span> // directly write the cell to the store file, and leave it to be handled by the<a name="line.270"></a>
-<span class="sourceLineNo">271</span> // next compaction.<a name="line.271"></a>
-<span class="sourceLineNo">272</span> LOG.error("Empty value for: " + c);<a name="line.272"></a>
-<span class="sourceLineNo">273</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.273"></a>
-<span class="sourceLineNo">274</span> if (refTable.isPresent()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span> mobRefSet.get().put(refTable.get(), MobUtils.getMobFileName(c));<a name="line.275"></a>
-<span class="sourceLineNo">276</span> writer.append(c);<a name="line.276"></a>
-<span class="sourceLineNo">277</span> } else {<a name="line.277"></a>
-<span class="sourceLineNo">278</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.278"></a>
-<span class="sourceLineNo">279</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.279"></a>
-<span class="sourceLineNo">280</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.280"></a>
-<span class="sourceLineNo">281</span> }<a name="line.281"></a>
-<span class="sourceLineNo">282</span> }<a name="line.282"></a>
-<span class="sourceLineNo">283</span> }<a name="line.283"></a>
-<span class="sourceLineNo">284</span> } else {<a name="line.284"></a>
-<span class="sourceLineNo">285</span> LOG.error("Corrupted MOB reference: {}", c);<a name="line.285"></a>
-<span class="sourceLineNo">286</span> writer.append(c);<a name="line.286"></a>
-<span class="sourceLineNo">287</span> }<a name="line.287"></a>
-<span class="sourceLineNo">288</span> } else if (c.getValueLength() <= mobSizeThreshold) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span> // If the value size of a cell is not larger than the threshold, directly write it to<a name="line.289"></a>
-<span class="sourceLineNo">290</span> // the store file.<a name="line.290"></a>
-<span class="sourceLineNo">291</span> writer.append(c);<a name="line.291"></a>
-<span class="sourceLineNo">292</span> } else {<a name="line.292"></a>
-<span class="sourceLineNo">293</span> // If the value size of a cell is larger than the threshold, it's regarded as a mob,<a name="line.293"></a>
-<span class="sourceLineNo">294</span> // write this cell to a mob file, and write the path to the store file.<a name="line.294"></a>
-<span class="sourceLineNo">295</span> mobCells++;<a name="line.295"></a>
-<span class="sourceLineNo">296</span> // append the original keyValue in the mob file.<a name="line.296"></a>
-<span class="sourceLineNo">297</span> mobFileWriter.append(c);<a name="line.297"></a>
-<span class="sourceLineNo">298</span> Cell reference = MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags());<a name="line.298"></a>
-<span class="sourceLineNo">299</span> // write the cell whose value is the path of a mob file to the store file.<a name="line.299"></a>
-<span class="sourceLineNo">300</span> writer.append(reference);<a name="line.300"></a>
-<span class="sourceLineNo">301</span> cellsCountCompactedToMob++;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.302"></a>
-<span class="sourceLineNo">303</span> // Add ref we get for compact MOB case<a name="line.303"></a>
-<span class="sourceLineNo">304</span> mobRefSet.get().put(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.304"></a>
-<span class="sourceLineNo">305</span> }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span> int len = c.getSerializedSize();<a name="line.307"></a>
-<span class="sourceLineNo">308</span> ++progress.currentCompactedKVs;<a name="line.308"></a>
-<span class="sourceLineNo">309</span> progress.totalCompactedSize += len;<a name="line.309"></a>
-<span class="sourceLineNo">310</span> bytesWrittenProgressForShippedCall += len;<a name="line.310"></a>
-<span class="sourceLineNo">311</span> if (LOG.isDebugEnabled()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> bytesWrittenProgressForLog += len;<a name="line.312"></a>
-<span class="sourceLineNo">313</span> }<a name="line.313"></a>
-<span class="sourceLineNo">314</span> throughputController.control(compactionName, len);<a name="line.314"></a>
-<span class="sourceLineNo">315</span> if (closeChecker.isSizeLimit(store, len)) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span> progress.cancel();<a name="line.316"></a>
-<span class="sourceLineNo">317</span> return false;<a name="line.317"></a>
-<span class="sourceLineNo">318</span> }<a name="line.318"></a>
-<span class="sourceLineNo">319</span> if (kvs != null && bytesWrittenProgressForShippedCall > shippedCallSizeLimit) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span> ((ShipperListener) writer).beforeShipped();<a name="line.320"></a>
-<span class="sourceLineNo">321</span> kvs.shipped();<a name="line.321"></a>
-<span class="sourceLineNo">322</span> bytesWrittenProgressForShippedCall = 0;<a name="line.322"></a>
-<span class="sourceLineNo">323</span> }<a name="line.323"></a>
-<span class="sourceLineNo">324</span> }<a name="line.324"></a>
-<span class="sourceLineNo">325</span> // Log the progress of long running compactions every minute if<a name="line.325"></a>
-<span class="sourceLineNo">326</span> // logging at DEBUG level<a name="line.326"></a>
-<span class="sourceLineNo">327</span> if (LOG.isDebugEnabled()) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> if ((now - lastMillis) >= COMPACTION_PROGRESS_LOG_INTERVAL) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span> String rate = String.format("%.2f",<a name="line.329"></a>
-<span class="sourceLineNo">330</span> (bytesWrittenProgressForLog / 1024.0) / ((now - lastMillis) / 1000.0));<a name="line.330"></a>
-<span class="sourceLineNo">331</span> LOG.debug("Compaction progress: {} {}, rate={} KB/sec, throughputController is {}",<a name="line.331"></a>
-<span class="sourceLineNo">332</span> compactionName, progress, rate, throughputController);<a name="line.332"></a>
-<span class="sourceLineNo">333</span> lastMillis = now;<a name="line.333"></a>
-<span class="sourceLineNo">334</span> bytesWrittenProgressForLog = 0;<a name="line.334"></a>
-<span class="sourceLineNo">335</span> }<a name="line.335"></a>
-<span class="sourceLineNo">336</span> }<a name="line.336"></a>
-<span class="sourceLineNo">337</span> cells.clear();<a name="line.337"></a>
-<span class="sourceLineNo">338</span> } while (hasMore);<a name="line.338"></a>
-<span class="sourceLineNo">339</span> finished = true;<a name="line.339"></a>
-<span class="sourceLineNo">340</span> } catch (InterruptedException e) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span> progress.cancel();<a name="line.341"></a>
-<span class="sourceLineNo">342</span> throw new InterruptedIOException(<a name="line.342"></a>
-<span class="sourceLineNo">343</span> "Interrupted while control throughput of compacting " + compactionName);<a name="line.343"></a>
-<span class="sourceLineNo">344</span> } catch (FileNotFoundException e) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span> LOG.error("MOB Stress Test FAILED, region: " + store.getRegionInfo().getEncodedName(), e);<a name="line.345"></a>
-<span class="sourceLineNo">346</span> System.exit(-1);<a name="line.346"></a>
-<span class="sourceLineNo">347</span> } catch (IOException t) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span> LOG.error("Mob compaction failed for region: " + store.getRegionInfo().getEncodedName());<a name="line.348"></a>
-<span class="sourceLineNo">349</span> throw t;<a name="line.349"></a>
-<span class="sourceLineNo">350</span> } finally {<a name="line.350"></a>
-<span class="sourceLineNo">351</span> // Clone last cell in the final because writer will append last cell when committing. If<a name="line.351"></a>
-<span class="sourceLineNo">352</span> // don't clone here and once the scanner get closed, then the memory of last cell will be<a name="line.352"></a>
-<span class="sourceLineNo">353</span> // released. (HBASE-22582)<a name="line.353"></a>
-<span class="sourceLineNo">354</span> ((ShipperListener) writer).beforeShipped();<a name="line.354"></a>
-<span class="sourceLineNo">355</span> throughputController.finish(compactionName);<a name="line.355"></a>
-<span class="sourceLineNo">356</span> if (!finished && mobFileWriter != null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span> // Remove all MOB references because compaction failed<a name="line.357"></a>
-<span class="sourceLineNo">358</span> mobRefSet.get().clear();<a name="line.358"></a>
-<span class="sourceLineNo">359</span> // Abort writer<a name="line.359"></a>
-<span class="sourceLineNo">360</span> abortWriter(mobFileWriter);<a name="line.360"></a>
-<span class="sourceLineNo">361</span> }<a name="line.361"></a>
-<span class="sourceLineNo">362</span> }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span> if (mobFileWriter != null) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> if (mobCells > 0) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> // If the mob file is not empty, commit it.<a name="line.366"></a>
-<span class="sourceLineNo">367</span> mobFileWriter.appendMetadata(fd.maxSeqId, major, mobCells);<a name="line.367"></a>
-<span class="sourceLineNo">368</span> mobFileWriter.close();<a name="line.368"></a>
-<span class="sourceLineNo">369</span> mobStore.commitFile(mobFileWriter.getPath(), path);<a name="line.369"></a>
-<span class="sourceLineNo">370</span> } else {<a name="line.370"></a>
-<span class="sourceLineNo">371</span> // If the mob file is empty, delete it instead of committing.<a name="line.371"></a>
-<span class="sourceLineNo">372</span> abortWriter(mobFileWriter);<a name="line.372"></a>
-<span class="sourceLineNo">373</span> }<a name="line.373"></a>
-<span class="sourceLineNo">374</span> }<a name="line.374"></a>
-<span class="sourceLineNo">375</span> mobStore.updateCellsCountCompactedFromMob(cellsCountCompactedFromMob);<a name="line.375"></a>
-<span class="sourceLineNo">376</span> mobStore.updateCellsCountCompactedToMob(cellsCountCompactedToMob);<a name="line.376"></a>
-<span class="sourceLineNo">377</span> mobStore.updateCellsSizeCompactedFromMob(cellsSizeCompactedFromMob);<a name="line.377"></a>
-<span class="sourceLineNo">378</span> mobStore.updateCellsSizeCompactedToMob(cellsSizeCompactedToMob);<a name="line.378"></a>
-<span class="sourceLineNo">379</span> progress.complete();<a name="line.379"></a>
-<span class="sourceLineNo">380</span> return true;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span> }<a name="line.382"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.TableName;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.io.hfile.CorruptHFileException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.regionserver.CellSink;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.KeyValueScanner;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.ShipperListener;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.regionserver.compactions.CloseChecker;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputControlUtil;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.slf4j.Logger;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.slf4j.LoggerFactory;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * This class is used for testing only. The main purpose is to emulate<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * random failures during MOB compaction process.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * Example of usage:<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * <pre>{@code<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * public class SomeTest {<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * public void initConfiguration(Configuration conf){<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * conf.set(MobStoreEngine.DEFAULT_MOB_COMPACTOR_CLASS_KEY,<a name="line.63"></a>
+<span class="sourceLineNo">064</span> FaultyMobStoreCompactor.class.getName());<a name="line.64"></a>
+<span class="sourceLineNo">065</span> conf.setDouble("hbase.mob.compaction.fault.probability", 0.1);<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * }<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * }<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * }</pre><a name="line.68"></a>
+<span class="sourceLineNo">069</span> * @see org.apache.hadoop.hbase.mob.MobStressToolRunner on how to use and configure<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * this class.<a name="line.70"></a>
+<span class="sourceLineNo">071</span> *<a name="line.71"></a>
+<span class="sourceLineNo">072</span> */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>@InterfaceAudience.Private<a name="line.73"></a>
+<span class="sourceLineNo">074</span>public class FaultyMobStoreCompactor extends DefaultMobStoreCompactor {<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span> private static final Logger LOG = LoggerFactory.getLogger(FaultyMobStoreCompactor.class);<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span> public static AtomicLong mobCounter = new AtomicLong();<a name="line.78"></a>
+<span class="sourceLineNo">079</span> public static AtomicLong totalFailures = new AtomicLong();<a name="line.79"></a>
+<span class="sourceLineNo">080</span> public static AtomicLong totalCompactions = new AtomicLong();<a name="line.80"></a>
+<span class="sourceLineNo">081</span> public static AtomicLong totalMajorCompactions = new AtomicLong();<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span> static double failureProb = 0.1d;<a name="line.83"></a>
+<span class="sourceLineNo">084</span> static Random rnd = new Random();<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span> public FaultyMobStoreCompactor(Configuration conf, HStore store) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span> super(conf, store);<a name="line.87"></a>
+<span class="sourceLineNo">088</span> failureProb = conf.getDouble("hbase.mob.compaction.fault.probability", 0.1);<a name="line.88"></a>
+<span class="sourceLineNo">089</span> }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span> @Override<a name="line.91"></a>
+<span class="sourceLineNo">092</span> protected boolean performCompaction(FileDetails fd, InternalScanner scanner, CellSink writer,<a name="line.92"></a>
+<span class="sourceLineNo">093</span> long smallestReadPoint, boolean cleanSeqId, ThroughputController throughputController,<a name="line.93"></a>
+<span class="sourceLineNo">094</span> boolean major, int numofFilesToCompact) throws IOException {<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span> totalCompactions.incrementAndGet();<a name="line.96"></a>
+<span class="sourceLineNo">097</span> if (major) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span> totalMajorCompactions.incrementAndGet();<a name="line.98"></a>
+<span class="sourceLineNo">099</span> }<a name="line.99"></a>
+<span class="sourceLineNo">100</span> long bytesWrittenProgressForLog = 0;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> long bytesWrittenProgressForShippedCall = 0;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> // Clear old mob references<a name="line.102"></a>
+<span class="sourceLineNo">103</span> mobRefSet.get().clear();<a name="line.103"></a>
+<span class="sourceLineNo">104</span> boolean isUserRequest = userRequest.get();<a name="line.104"></a>
+<span class="sourceLineNo">105</span> boolean compactMOBs = major && isUserRequest;<a name="line.105"></a>
+<span class="sourceLineNo">106</span> boolean discardMobMiss = conf.getBoolean(MobConstants.MOB_UNSAFE_DISCARD_MISS_KEY,<a name="line.106"></a>
+<span class="sourceLineNo">107</span> MobConstants.DEFAULT_MOB_DISCARD_MISS);<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span> boolean mustFail = false;<a name="line.109"></a>
+<span class="sourceLineNo">110</span> if (compactMOBs) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span> mobCounter.incrementAndGet();<a name="line.111"></a>
+<span class="sourceLineNo">112</span> double dv = rnd.nextDouble();<a name="line.112"></a>
+<span class="sourceLineNo">113</span> if (dv < failureProb) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span> mustFail = true;<a name="line.114"></a>
+<span class="sourceLineNo">115</span> totalFailures.incrementAndGet();<a name="line.115"></a>
+<span class="sourceLineNo">116</span> }<a name="line.116"></a>
+<span class="sourceLineNo">117</span> }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span> FileSystem fs = store.getFileSystem();<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span> // Since scanner.next() can return 'false' but still be delivering data,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> // we have to use a do/while loop.<a name="line.122"></a>
+<span class="sourceLineNo">123</span> List<Cell> cells = new ArrayList<>();<a name="line.123"></a>
+<span class="sourceLineNo">124</span> // Limit to "hbase.hstore.compaction.kv.max" (default 10) to avoid OOME<a name="line.124"></a>
+<span class="sourceLineNo">125</span> long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.125"></a>
+<span class="sourceLineNo">126</span> long lastMillis = 0;<a name="line.126"></a>
+<span class="sourceLineNo">127</span> if (LOG.isDebugEnabled()) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span> lastMillis = currentTime;<a name="line.128"></a>
+<span class="sourceLineNo">129</span> }<a name="line.129"></a>
+<span class="sourceLineNo">130</span> CloseChecker closeChecker = new CloseChecker(conf, currentTime);<a name="line.130"></a>
+<span class="sourceLineNo">131</span> String compactionName = ThroughputControlUtil.getNameForThrottling(store, "compaction");<a name="line.131"></a>
+<span class="sourceLineNo">132</span> long now = 0;<a name="line.132"></a>
+<span class="sourceLineNo">133</span> boolean hasMore;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> Path path = MobUtils.getMobFamilyPath(conf, store.getTableName(), store.getColumnFamilyName());<a name="line.134"></a>
+<span class="sourceLineNo">135</span> byte[] fileName = null;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> StoreFileWriter mobFileWriter = null;<a name="line.136"></a>
+<span class="sourceLineNo">137</span> long mobCells = 0;<a name="line.137"></a>
+<span class="sourceLineNo">138</span> long cellsCountCompactedToMob = 0, cellsCountCompactedFromMob = 0;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> long cellsSizeCompactedToMob = 0, cellsSizeCompactedFromMob = 0;<a name="line.139"></a>
+<span class="sourceLineNo">140</span> boolean finished = false;<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span> ScannerContext scannerContext =<a name="line.142"></a>
+<span class="sourceLineNo">143</span> ScannerContext.newBuilder().setBatchLimit(compactionKVMax).build();<a name="line.143"></a>
+<span class="sourceLineNo">144</span> throughputController.start(compactionName);<a name="line.144"></a>
+<span class="sourceLineNo">145</span> KeyValueScanner kvs = (scanner instanceof KeyValueScanner) ? (KeyValueScanner) scanner : null;<a name="line.145"></a>
+<span class="sourceLineNo">146</span> long shippedCallSizeLimit =<a name="line.146"></a>
+<span class="sourceLineNo">147</span> (long) numofFilesToCompact * this.store.getColumnFamilyDescriptor().getBlocksize();<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span> Cell mobCell = null;<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span> long counter = 0;<a name="line.151"></a>
+<span class="sourceLineNo">152</span> long countFailAt = -1;<a name="line.152"></a>
+<span class="sourceLineNo">153</span> if (mustFail) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span> countFailAt = rnd.nextInt(100); // randomly fail fast<a name="line.154"></a>
+<span class="sourceLineNo">155</span> }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span> try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span> try {<a name="line.158"></a>
+<span class="sourceLineNo">159</span> mobFileWriter = mobStore.createWriterInTmp(new Date(fd.latestPutTs), fd.maxKeyCount,<a name="line.159"></a>
+<span class="sourceLineNo">160</span> major ? majorCompactionCompression : minorCompactionCompression,<a name="line.160"></a>
+<span class="sourceLineNo">161</span> store.getRegionInfo().getStartKey(), true);<a name="line.161"></a>
+<span class="sourceLineNo">162</span> fileName = Bytes.toBytes(mobFileWriter.getPath().getName());<a name="line.162"></a>
+<span class="sourceLineNo">163</span> } catch (IOException e) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span> // Bailing out<a name="line.164"></a>
+<span class="sourceLineNo">165</span> LOG.error("Failed to create mob writer, ", e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span> throw e;<a name="line.166"></a>
+<span class="sourceLineNo">167</span> }<a name="line.167"></a>
+<span class="sourceLineNo">168</span> if (compactMOBs) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span> // Add the only reference we get for compact MOB case<a name="line.169"></a>
+<span class="sourceLineNo">170</span> // because new store file will have only one MOB reference<a name="line.170"></a>
+<span class="sourceLineNo">171</span> // in this case - of newly compacted MOB file<a name="line.171"></a>
+<span class="sourceLineNo">172</span> mobRefSet.get().put(store.getTableName(), mobFileWriter.getPath().getName());<a name="line.172"></a>
+<span class="sourceLineNo">173</span> }<a name="line.173"></a>
+<span class="sourceLineNo">174</span> do {<a name="line.174"></a>
+<span class="sourceLineNo">175</span> hasMore = scanner.next(cells, scannerContext);<a name="line.175"></a>
+<span class="sourceLineNo">176</span> currentTime = EnvironmentEdgeManager.currentTime();<a name="line.176"></a>
+<span class="sourceLineNo">177</span> if (LOG.isDebugEnabled()) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> now = currentTime;<a name="line.178"></a>
+<span class="sourceLineNo">179</span> }<a name="line.179"></a>
+<span class="sourceLineNo">180</span> if (closeChecker.isTimeLimit(store, currentTime)) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span> progress.cancel();<a name="line.181"></a>
+<span class="sourceLineNo">182</span> return false;<a name="line.182"></a>
+<span class="sourceLineNo">183</span> }<a name="line.183"></a>
+<span class="sourceLineNo">184</span> for (Cell c : cells) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span> counter++;<a name="line.185"></a>
+<span class="sourceLineNo">186</span> if (compactMOBs) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span> if (MobUtils.isMobReferenceCell(c)) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span> if (counter == countFailAt) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span> LOG.warn("INJECTED FAULT mobCounter={}", mobCounter.get());<a name="line.189"></a>
+<span class="sourceLineNo">190</span> throw new CorruptHFileException("injected fault");<a name="line.190"></a>
+<span class="sourceLineNo">191</span> }<a name="line.191"></a>
+<span class="sourceLineNo">192</span> String fName = MobUtils.getMobFileName(c);<a name="line.192"></a>
+<span class="sourceLineNo">193</span> // Added to support migration<a name="line.193"></a>
+<span class="sourceLineNo">194</span> try {<a name="line.194"></a>
+<span class="sourceLineNo">195</span> mobCell = mobStore.resolve(c, true, false).getCell();<a name="line.195"></a>
+<span class="sourceLineNo">196</span> } catch (DoNotRetryIOException e) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span> if (discardMobMiss && e.getCause() != null<a name="line.197"></a>
+<span class="sourceLineNo">198</span> && e.getCause() instanceof FileNotFoundException) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span> LOG.error("Missing MOB cell: file={} not found cell={}", fName, c);<a name="line.199"></a>
+<span class="sourceLineNo">200</span> continue;<a name="line.200"></a>
+<span class="sourceLineNo">201</span> } else {<a name="line.201"></a>
+<span class="sourceLineNo">202</span> throw e;<a name="line.202"></a>
+<span class="sourceLineNo">203</span> }<a name="line.203"></a>
+<span class="sourceLineNo">204</span> }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span> if (discardMobMiss && mobCell.getValueLength() == 0) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span> LOG.error("Missing MOB cell value: file={} cell={}", fName, mobCell);<a name="line.207"></a>
+<span class="sourceLineNo">208</span> continue;<a name="line.208"></a>
+<span class="sourceLineNo">209</span> }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span> if (mobCell.getValueLength() > mobSizeThreshold) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span> // put the mob data back to the store file<a name="line.212"></a>
+<span class="sourceLineNo">213</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.213"></a>
+<span class="sourceLineNo">214</span> mobFileWriter.append(mobCell);<a name="line.214"></a>
+<span class="sourceLineNo">215</span> writer.append(<a name="line.215"></a>
+<span class="sourceLineNo">216</span> MobUtils.createMobRefCell(mobCell, fileName, this.mobStore.getRefCellTags()));<a name="line.216"></a>
+<span class="sourceLineNo">217</span> mobCells++;<a name="line.217"></a>
+<span class="sourceLineNo">218</span> } else {<a name="line.218"></a>
+<span class="sourceLineNo">219</span> // If MOB value is less than threshold, append it directly to a store file<a name="line.219"></a>
+<span class="sourceLineNo">220</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.220"></a>
+<span class="sourceLineNo">221</span> writer.append(mobCell);<a name="line.221"></a>
+<span class="sourceLineNo">222</span> cellsCountCompactedFromMob++;<a name="line.222"></a>
+<span class="sourceLineNo">223</span> cellsSizeCompactedFromMob += mobCell.getValueLength();<a name="line.223"></a>
+<span class="sourceLineNo">224</span> }<a name="line.224"></a>
+<span class="sourceLineNo">225</span> } else {<a name="line.225"></a>
+<span class="sourceLineNo">226</span> // Not a MOB reference cell<a name="line.226"></a>
+<span class="sourceLineNo">227</span> int size = c.getValueLength();<a name="line.227"></a>
+<span class="sourceLineNo">228</span> if (size > mobSizeThreshold) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span> mobFileWriter.append(c);<a name="line.229"></a>
+<span class="sourceLineNo">230</span> writer<a name="line.230"></a>
+<span class="sourceLineNo">231</span> .append(MobUtils.createMobRefCell(c, fileName, this.mobStore.getRefCellTags()));<a name="line.231"></a>
+<span class="sourceLineNo">232</span> mobCells++;<a name="line.232"></a>
+<span class="sourceLineNo">233</span> cellsCountCompactedToMob++;<a name="line.233"></a>
+<span class="sourceLineNo">234</span> cellsSizeCompactedToMob += c.getValueLength();<a name="line.234"></a>
+<span class="sourceLineNo">235</span> } else {<a name="line.235"></a>
+<span class="sourceLineNo">236</span> writer.append(c);<a name="line.236"></a>
+<span class="sourceLineNo">237</span> }<a name="line.237"></a>
+<span class="sourceLineNo">238</span> }<a name="line.238"></a>
+<span class="sourceLineNo">239</span> } else if (c.getTypeByte() != KeyValue.Type.Put.getCode()) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span> // Not a major compaction or major with MOB disabled<a name="line.240"></a>
+<span class="sourceLineNo">241</span> // If the kv type is not put, directly write the cell<a name="line.241"></a>
+<span class="sourceLineNo">242</span> // to the store file.<a name="line.242"></a>
+<span class="sourceLineNo">243</span> writer.append(c);<a name="line.243"></a>
+<span class="sourceLineNo">244</span> } else if (MobUtils.isMobReferenceCell(c)) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span> // Not a major MOB compaction, Put MOB reference<a name="line.245"></a>
+<span class="sourceLineNo">246</span> if (MobUtils.hasValidMobRefCellValue(c)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span> int size = MobUtils.getMobValueLength(c);<a name="line.247"></a>
+<span class="sourceLineNo">248</span> if (size > mobSizeThreshold) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span> // If the value size is larger than the threshold, it's regarded as a mob. Since<a name="line.249"></a>
+<span class="sourceLineNo">250</span> // its value is already in the mob file, directly write this cell to the store file<a name="line.250"></a>
+<span class="sourceLineNo">251</span> Optional<TableName> refTable = MobUtils.getTableName(c);<a name="line.251"></a>
+<span class="sourceLineNo">252</span> if (refTable.isPresent()) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span> mobRefSet.get().put(refTable.get(), MobUtils.getMobFileName(c));<a name="line.253"></a>
+<span class="sourceLineNo">254</span> writer.append(c);<a name="line.254"></a>
+<span class="sourceLineNo">255</span> } else {<a name="line.255"></a>
+<span class="sourceLineNo">256</span> throw new IOException(String.format("MOB cell did not contain a tablename " +<a name="line.256"></a>
+<span class="sourceLineNo">257</span> "tag. should not be possible. see ref guide on mob troubleshooting. " +<a name="line.257"></a>
+<span class="sourceLineNo">258</span> "store=%s cell=%s", getStoreInfo(), c));<a name="line.258"></a>
+<span class="sourceLineNo">259</span> }<a name="line.259"></a>
+<span class="sourceLineNo">260</span> } else {<a name="line.260"></a>
+<span class="sourceLineNo">261</span> // If the value is not larger than the threshold, it's not regarded a mob. Retrieve<a name="line.261"></a>
+<span class="sourceLineNo">262</span> // the mob cell from the mob file, and write it back to the store file.<a name="line.262"></a>
+<span class="sourceLineNo">263</span> mobCell = mobStore.resolve(c, true, false).getCell();<a name="line.263"></a>
+<span class="sourceLineNo">264</span> if (mobCell.getValueLength() != 0) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> // put the mob data back to the store file<a name="line.265"></a>
+<span class="sourceLineNo">266</span> PrivateCellUtil.setSequenceId(mobCell, c.getSequenceId());<a name="line.266"></a>
+<span class="sourceLineNo">267</span> writer.append(mobCell);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> cellsCountCompactedFromMob++;<a name="line.268"></a>
+<span class="sourceLineNo">269</span> cellsSizeCompactedFromMob += mobCell.getValueLength();<a name="line.269"></a>
+<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
+<span class="sourceLineNo">271</span> // If the value of a file is empty, there might be issues when retrieving,<a name="line.271"></a>
+<span class="sourceLineNo">272</span> // directly write the cell to the store file, and leave it to be handled by the<a name="line.272"></a>
... 1045 lines suppressed ...