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/11/18 20:18:21 UTC
[hbase-site] branch asf-site updated: Published site at b2571df7ae04307c0dbe28caed59aa383d7eec45.
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 c407d5f Published site at b2571df7ae04307c0dbe28caed59aa383d7eec45.
c407d5f is described below
commit c407d5f757092cc08691d908745d03e1505fb7f6
Author: jenkins <bu...@apache.org>
AuthorDate: Thu Nov 18 20:18:06 2021 +0000
Published site at b2571df7ae04307c0dbe28caed59aa383d7eec45.
---
acid-semantics.html | 2 +-
apache_hbase_reference_guide.pdf | 4 +-
book.html | 2 +-
bulk-loads.html | 2 +-
checkstyle-aggregate.html | 188 +-
checkstyle.rss | 4 +-
coc.html | 2 +-
dependencies.html | 2 +-
dependency-convergence.html | 2 +-
dependency-info.html | 2 +-
dependency-management.html | 2 +-
devapidocs/allclasses-frame.html | 1 +
devapidocs/allclasses-noframe.html | 1 +
devapidocs/index-all.html | 22 +-
.../apache/hadoop/hbase/backup/package-tree.html | 4 +-
.../apache/hadoop/hbase/chaos/package-tree.html | 2 +-
.../apache/hadoop/hbase/class-use/TableName.html | 21 +-
.../apache/hadoop/hbase/client/package-tree.html | 26 +-
.../hadoop/hbase/coprocessor/package-tree.html | 2 +-
.../apache/hadoop/hbase/filter/package-tree.html | 8 +-
.../hadoop/hbase/hbtop/field/package-tree.html | 2 +-
.../org/apache/hadoop/hbase/http/package-tree.html | 2 +-
.../org/apache/hadoop/hbase/io/HFileLink.html | 160 +-
.../apache/hadoop/hbase/io/hfile/package-tree.html | 8 +-
.../org/apache/hadoop/hbase/ipc/package-tree.html | 2 +-
.../hadoop/hbase/mapreduce/package-tree.html | 6 +-
...plitTableRegionProcedure.StoreFileSplitter.html | 12 +-
.../assignment/SplitTableRegionProcedure.html | 116 +-
.../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 | 2 +-
.../org/apache/hadoop/hbase/package-tree.html | 18 +-
.../hadoop/hbase/procedure2/package-tree.html | 6 +-
.../apache/hadoop/hbase/quotas/package-tree.html | 8 +-
.../hbase/regionserver/HRegionFileSystem.html | 148 +-
.../hbase/regionserver/RegionSplitPolicy.html | 22 +-
.../hadoop/hbase/regionserver/package-tree.html | 18 +-
.../regionserver/querymatcher/package-tree.html | 2 +-
.../hbase/regionserver/wal/package-tree.html | 4 +-
.../hadoop/hbase/rest/model/package-tree.html | 2 +-
.../hadoop/hbase/security/access/package-tree.html | 4 +-
.../apache/hadoop/hbase/security/package-tree.html | 2 +-
.../apache/hadoop/hbase/thrift/package-tree.html | 2 +-
.../hadoop/hbase/util/FSUtils.HFileFilter.html | 8 +-
.../hadoop/hbase/util/FSUtils.HFileLinkFilter.html | 6 +-
.../hbase/util/FSUtils.ProgressReporter.html | 8 +-
...tml => FSUtils.ReferenceAndLinkFileFilter.html} | 88 +-
.../hbase/util/FSUtils.ReferenceFileFilter.html | 12 +-
.../org/apache/hadoop/hbase/util/FSUtils.html | 183 +-
.../FSUtils.ReferenceAndLinkFileFilter.html | 125 ++
.../apache/hadoop/hbase/util/package-frame.html | 1 +
.../apache/hadoop/hbase/util/package-summary.html | 250 +--
.../org/apache/hadoop/hbase/util/package-tree.html | 11 +-
.../org/apache/hadoop/hbase/wal/package-tree.html | 2 +-
devapidocs/overview-tree.html | 1 +
.../org/apache/hadoop/hbase/io/HFileLink.html | 916 ++++----
...plitTableRegionProcedure.StoreFileSplitter.html | 1780 +++++++--------
.../assignment/SplitTableRegionProcedure.html | 1780 +++++++--------
.../HRegion.BatchOperation.Visitor.html | 4 +-
.../hbase/regionserver/HRegion.BatchOperation.html | 4 +-
.../regionserver/HRegion.BulkLoadListener.html | 4 +-
.../regionserver/HRegion.FlushResult.Result.html | 4 +-
.../hbase/regionserver/HRegion.FlushResult.html | 4 +-
.../regionserver/HRegion.FlushResultImpl.html | 4 +-
.../HRegion.MutationBatchOperation.html | 4 +-
.../HRegion.ObservedExceptionsInBatch.html | 4 +-
.../regionserver/HRegion.PrepareFlushResult.html | 4 +-
.../regionserver/HRegion.ReplayBatchOperation.html | 4 +-
.../hbase/regionserver/HRegion.RowLockContext.html | 4 +-
.../hbase/regionserver/HRegion.RowLockImpl.html | 4 +-
.../hbase/regionserver/HRegion.WriteState.html | 4 +-
.../apache/hadoop/hbase/regionserver/HRegion.html | 4 +-
.../hbase/regionserver/HRegionFileSystem.html | 2267 ++++++++++----------
.../hbase/regionserver/RegionSplitPolicy.html | 273 ++-
.../hbase/util/FSUtils.BlackListDirFilter.html | 1623 +++++++-------
.../hadoop/hbase/util/FSUtils.DirFilter.html | 1623 +++++++-------
.../hadoop/hbase/util/FSUtils.FamilyDirFilter.html | 1623 +++++++-------
.../hadoop/hbase/util/FSUtils.FileFilter.html | 1623 +++++++-------
.../hadoop/hbase/util/FSUtils.HFileFilter.html | 1623 +++++++-------
.../hadoop/hbase/util/FSUtils.HFileLinkFilter.html | 1623 +++++++-------
.../hbase/util/FSUtils.ProgressReporter.html | 1623 +++++++-------
...tml => FSUtils.ReferenceAndLinkFileFilter.html} | 1623 +++++++-------
.../hbase/util/FSUtils.ReferenceFileFilter.html | 1623 +++++++-------
.../hadoop/hbase/util/FSUtils.RegionDirFilter.html | 1623 +++++++-------
.../hbase/util/FSUtils.UserTableDirFilter.html | 1623 +++++++-------
.../org/apache/hadoop/hbase/util/FSUtils.html | 1623 +++++++-------
downloads.html | 2 +-
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 | 10 +-
.../apache/hadoop/hbase/backup/package-tree.html | 2 +-
.../hadoop/hbase/chaos/actions/package-tree.html | 2 +-
.../apache/hadoop/hbase/io/hfile/package-tree.html | 2 +-
.../org/apache/hadoop/hbase/package-tree.html | 16 +-
.../hadoop/hbase/procedure2/package-tree.html | 4 +-
.../hadoop/hbase/regionserver/TestHStoreFile.html | 66 +-
...plitTransactionOnCluster.CustomSplitPolicy.html | 8 +-
...actionOnCluster.FailingSplitMasterObserver.html | 12 +-
.../TestSplitTransactionOnCluster.MyMaster.html | 6 +-
...itTransactionOnCluster.MyMasterRpcServices.html | 10 +-
.../TestSplitTransactionOnCluster.html | 176 +-
.../hadoop/hbase/regionserver/package-tree.html | 4 +-
.../org/apache/hadoop/hbase/test/package-tree.html | 2 +-
.../org/apache/hadoop/hbase/wal/package-tree.html | 2 +-
.../hadoop/hbase/regionserver/TestHStoreFile.html | 1951 ++++++++---------
...plitTransactionOnCluster.CustomSplitPolicy.html | 2228 ++++++++++---------
...actionOnCluster.FailingSplitMasterObserver.html | 2228 ++++++++++---------
.../TestSplitTransactionOnCluster.MyMaster.html | 2228 ++++++++++---------
...itTransactionOnCluster.MyMasterRpcServices.html | 2228 ++++++++++---------
.../TestSplitTransactionOnCluster.html | 2228 ++++++++++---------
128 files changed, 21508 insertions(+), 20043 deletions(-)
diff --git a/acid-semantics.html b/acid-semantics.html
index 4192284..a2db8b9 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -455,7 +455,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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 9160a53..e7955c0 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:20211117200545+00'00')
-/CreationDate (D:20211117201556+00'00')
+/ModDate (D:20211118200551+00'00')
+/CreationDate (D:20211118201602+00'00')
>>
endobj
2 0 obj
diff --git a/book.html b/book.html
index c79516c..15cc8d4 100644
--- a/book.html
+++ b/book.html
@@ -46171,7 +46171,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-11-17 20:05:45 UTC
+Last updated 2021-11-18 20:05:51 UTC
</div>
</div>
<link rel="stylesheet" href="./coderay-asciidoctor.css">
diff --git a/bulk-loads.html b/bulk-loads.html
index 18c9176..1e7ffe5 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -160,7 +160,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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 5d59729..8ca5017 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -157,7 +157,7 @@
<td>4538</td>
<td>0</td>
<td>0</td>
-<td>8670</td></tr></table></div>
+<td>8668</td></tr></table></div>
<div class="section">
<h2><a name="Files"></a>Files</h2>
<table border="0" class="table table-striped">
@@ -6740,7 +6740,7 @@
<td><a href="#org.apache.hadoop.hbase.util.FSUtils.java">org/apache/hadoop/hbase/util/FSUtils.java</a></td>
<td>0</td>
<td>0</td>
-<td>53</td></tr>
+<td>51</td></tr>
<tr class="a">
<td><a href="#org.apache.hadoop.hbase.util.FSVisitor.java">org/apache/hadoop/hbase/util/FSVisitor.java</a></td>
<td>0</td>
@@ -7362,7 +7362,7 @@
<tr class="b">
<td>annotation</td>
<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
-<td>8</td>
+<td>6</td>
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td></tr>
<tr class="a">
<td>blocks</td>
@@ -7461,7 +7461,7 @@
<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
<ul>
<li>offset: <tt>"2"</tt></li></ul></td>
-<td>514</td>
+<td>516</td>
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td></tr>
<tr class="a">
<td></td>
@@ -7484,7 +7484,7 @@
<ul>
<li>max: <tt>"100"</tt></li>
<li>ignorePattern: <tt>"^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated"</tt></li></ul></td>
-<td>847</td>
+<td>845</td>
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td></tr>
<tr class="a">
<td></td>
@@ -34873,8 +34873,8 @@
<th>Line</th></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
-<td>annotation</td>
-<td>MissingDeprecated</td>
+<td>javadoc</td>
+<td>JavadocTagContinuationIndentation</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">
@@ -46996,235 +46996,235 @@
<td>indentation</td>
<td>Indentation</td>
<td>'ctor def rcurly' has incorrect indentation level 1, expected level should be 2.</td>
-<td>115</td></tr>
+<td>118</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>198</td></tr>
+<td>201</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>211</td></tr>
+<td>214</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>212</td></tr>
+<td>215</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>347</td></tr>
+<td>350</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>370</td></tr>
+<td>373</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>383</td></tr>
+<td>386</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>388</td></tr>
+<td>391</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>409</td></tr>
+<td>412</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>422</td></tr>
+<td>425</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>462</td></tr>
+<td>465</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>477</td></tr>
+<td>480</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>482</td></tr>
+<td>485</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>547</td></tr>
+<td>550</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>583</td></tr>
+<td>586</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>597</td></tr>
+<td>600</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>648</td></tr>
+<td>651</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>714</td></tr>
+<td>755</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>759</td></tr>
+<td>800</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>776</td></tr>
+<td>817</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>778</td></tr>
+<td>819</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 101).</td>
-<td>852</td></tr>
+<td>893</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>935</td></tr>
+<td>976</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1013</td></tr>
+<td>1054</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1016</td></tr>
+<td>1057</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1026</td></tr>
+<td>1067</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1039</td></tr>
+<td>1080</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1040</td></tr>
+<td>1081</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1042</td></tr>
+<td>1083</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1052</td></tr>
+<td>1093</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1067</td></tr>
+<td>1108</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1069</td></tr>
+<td>1110</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1079</td></tr>
+<td>1120</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1102</td></tr>
+<td>1143</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1103</td></tr>
+<td>1144</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1104</td></tr>
+<td>1145</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1107</td></tr>
+<td>1148</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1122</td></tr>
+<td>1163</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 101).</td>
-<td>1124</td></tr></table></div>
+<td>1165</td></tr></table></div>
<div class="section">
<h3 id="org.apache.hadoop.hbase.regionserver.HRegionServer.java">org/apache/hadoop/hbase/regionserver/HRegionServer.java</h3>
<table border="0" class="table table-striped">
@@ -49336,31 +49336,31 @@
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>83</td></tr>
+<td>82</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>84</td></tr>
+<td>83</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>106</td></tr>
+<td>105</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>107</td></tr>
+<td>106</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>109</td></tr></table></div>
+<td>108</td></tr></table></div>
<div class="section">
<h3 id="org.apache.hadoop.hbase.regionserver.ReplicationSinkService.java">org/apache/hadoop/hbase/regionserver/ReplicationSinkService.java</h3>
<table border="0" class="table table-striped">
@@ -49534,8 +49534,8 @@
<th>Line</th></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
-<td>annotation</td>
-<td>MissingDeprecated</td>
+<td>javadoc</td>
+<td>JavadocTagContinuationIndentation</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="a">
@@ -52726,103 +52726,103 @@
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>449</td></tr>
+<td>563</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'for' construct must use '{}'s.</td>
-<td>663</td></tr>
+<td>777</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'for' construct must use '{}'s.</td>
-<td>689</td></tr>
+<td>803</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>912</td></tr>
+<td>1026</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>913</td></tr>
+<td>1027</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>914</td></tr>
+<td>1028</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>915</td></tr>
+<td>1029</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>919</td></tr>
+<td>1033</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'ZooKeeperConnectionException' has incorrect indentation level 2, expected level should be 4.</td>
-<td>920</td></tr>
+<td>1034</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>943</td></tr>
+<td>1057</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>961</td></tr>
+<td>1075</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>962</td></tr>
+<td>1076</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>964</td></tr>
+<td>1078</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>970</td></tr>
+<td>1084</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>971</td></tr>
+<td>1085</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1013</td></tr>
+<td>1127</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>EmptyBlock</td>
<td>Must have at least one statement.</td>
-<td>1057</td></tr></table></div>
+<td>1171</td></tr></table></div>
<div class="section">
<h3 id="org.apache.hadoop.hbase.regionserver.TestTags.java">org/apache/hadoop/hbase/regionserver/TestTags.java</h3>
<table border="0" class="table table-striped">
@@ -67351,118 +67351,106 @@
<td>1057</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
-<td>sizes</td>
-<td>LineLength</td>
-<td>Line is longer than 100 characters (found 104).</td>
-<td>1059</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
-<td>sizes</td>
-<td>LineLength</td>
-<td>Line is longer than 100 characters (found 112).</td>
-<td>1070</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1171</td></tr>
+<td>1208</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'final' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1174</td></tr>
+<td>1211</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1175</td></tr>
+<td>1212</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 101).</td>
-<td>1191</td></tr>
+<td>1228</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 110).</td>
-<td>1258</td></tr>
+<td>1295</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 101).</td>
-<td>1280</td></tr>
+<td>1317</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>whitespace</td>
<td>ParenPad</td>
<td>'(' is followed by whitespace.</td>
-<td>1306</td></tr>
+<td>1343</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1384</td></tr>
+<td>1421</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1438</td></tr>
+<td>1475</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1443</td></tr>
+<td>1480</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1466</td></tr>
+<td>1503</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1479</td></tr>
+<td>1516</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1690</td></tr>
+<td>1727</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1708</td></tr>
+<td>1745</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1717</td></tr>
+<td>1754</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1724</td></tr>
+<td>1761</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1726</td></tr></table></div>
+<td>1763</td></tr></table></div>
<div class="section">
<h3 id="org.apache.hadoop.hbase.util.FSVisitor.java">org/apache/hadoop/hbase/util/FSVisitor.java</h3>
<table border="0" class="table table-striped">
@@ -72469,7 +72457,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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.rss b/checkstyle.rss
index 0919679..ac1e56a 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
<copyright>©2007 - 2021 The Apache Software Foundation</copyright>
<item>
<title>File: 4538,
- Errors: 8670,
+ Errors: 8668,
Warnings: 0,
Infos: 0
</title>
@@ -36357,7 +36357,7 @@ under the License.
0
</td>
<td>
- 53
+ 51
</td>
</tr>
<tr>
diff --git a/coc.html b/coc.html
index ea6c653..42239bc 100644
--- a/coc.html
+++ b/coc.html
@@ -229,7 +229,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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 cd15285..235fd8a 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -301,7 +301,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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 eecd0c1..6ee4b19 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -971,7 +971,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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 98f8a86..7ed84a8 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -182,7 +182,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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 e09cac5..a5bce98 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1259,7 +1259,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-11-17</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2021-11-18</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/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 861a7a7..75732e3 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -1052,6 +1052,7 @@
<li><a href="org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.HFileFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.HFileLinkFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util" target="classFrame"><span class="interfaceName">FSUtils.ProgressReporter</span></a></li>
+<li><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.ReferenceAndLinkFileFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.ReferenceFileFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.RegionDirFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.UserTableDirFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.UserTableDirFilter</a></li>
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index d251111..98ac9df 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -1052,6 +1052,7 @@
<li><a href="org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.HFileFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.HFileLinkFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="interfaceName">FSUtils.ProgressReporter</span></a></li>
+<li><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceAndLinkFileFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.RegionDirFilter</a></li>
<li><a href="org/apache/hadoop/hbase/util/FSUtils.UserTableDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.UserTableDirFilter</a></li>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index f4184f5..9d4ab03 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -649,6 +649,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#accept-org.apache.hadoop.fs.Path-">accept(Path)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.HFileLinkFilter</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#accept-org.apache.hadoop.fs.Path-">accept(Path)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceAndLinkFileFilter</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#accept-org.apache.hadoop.fs.Path-java.lang.Boolean-">accept(Path, Boolean)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html#accept-org.apache.hadoop.fs.Path-java.lang.Boolean-">accept(Path, Boolean)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.RegionDirFilter</a></dt>
@@ -4140,8 +4142,6 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/IdLock.html#assertMapEmpty--">assertMapEmpty()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#assertReferenceFileCount-org.apache.hadoop.fs.FileSystem-int-org.apache.hadoop.fs.Path-">assertReferenceFileCount(FileSystem, int, Path)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnlyOnServer(RegionInfo, ServerName, long)</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>
@@ -4160,6 +4160,8 @@
<dd>
<div class="block">Check to make sure that the description of the snapshot requested is valid</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#assertSplitResultFilesCount-org.apache.hadoop.fs.FileSystem-int-org.apache.hadoop.fs.Path-">assertSplitResultFilesCount(FileSystem, int, Path)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProce [...]
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html#assertValidSeek--">assertValidSeek()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.EncodedScanner</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#assign-byte:A-">assign(byte[])</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>
@@ -20388,6 +20390,10 @@
<dd>
<div class="block">Create a new HFileLink</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-java.lang.String-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-boolean-">create(Configuration, FileSystem, Path, String, String, String, TableName, String, String, boolean)</a></span> - Static method in class org.apache.hadoop.hbase.io.<a href="org/a [...]
+<dd>
+<div class="block">Create a new HFileLink</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactory.html#create-java.lang.String-org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper-">create(String, MetricsHBaseServerWrapper)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactory.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSourceFactory</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.html#create-java.lang.String-org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper-">create(String, MetricsHBaseServerWrapper)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSourceFactoryImpl</a></dt>
@@ -36778,6 +36784,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#fs">fs</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.HFileFilter</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#fs">fs</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceAndLinkFileFilter</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#fs">fs</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html#fs">fs</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.RegionDirFilter</a></dt>
@@ -36992,6 +37000,8 @@
<div class="block">Called every so-often by storefile map builder getTableStoreFilePathMap to
report progress.</div>
</dd>
+<dt><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.ReferenceAndLinkFileFilter</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
+<dd> </dd>
<dt><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.ReferenceFileFilter</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
<dd> </dd>
<dt><a href="org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.RegionDirFilter</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
@@ -43683,6 +43693,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/BulkLoadHFiles.LoadQueueItem.html#getFilePath--">getFilePath()</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/BulkLoadHFiles.LoadQueueItem.html" title="class in org.apache.hadoop.hbase.tool">BulkLoadHFiles.LoadQueueItem</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.html#getFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.PathFilter-">getFilePaths(FileSystem, Path, PathFilter)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CommonFSUtils.html#getFilePermissions-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.conf.Configuration-java.lang.String-">getFilePermissions(FileSystem, Configuration, String)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CommonFSUtils.html" title="class in org.apache.hadoop.hbase.util">CommonFSUtils</a></dt>
<dd>
<div class="block">Get the file permissions specified in the configuration, if they are
@@ -51409,6 +51421,8 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#getReference--">getReference()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.html#getReferenceAndLinkFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getReferenceAndLinkFilePaths(FileSystem, Path)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/CachedMobFile.html#getReferenceCount--">getReferenceCount()</a></span> - Method in class org.apache.hadoop.hbase.mob.<a href="org/apache/hadoop/hbase/mob/CachedMobFile.html" title="class in org.apache.hadoop.hbase.mob">CachedMobFile</a></dt>
<dd>
<div class="block">Gets the reference of the current mob file.</div>
@@ -52132,6 +52146,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/BalancerDecision.html#getRegionPlans--">getRegionPlans()</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/util/FSUtils.html#getRegionReferenceAndLinkFileCount-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getRegionReferenceAndLinkFileCount(FileSystem, Path)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.html#getRegionReferenceFileCount-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getRegionReferenceFileCount(FileSystem, Path)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html#getRegionReplicaStoreFileRefreshMultiplier-org.apache.hadoop.conf.Configuration-">getRegionReplicaStoreFileRefreshMultiplier(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.util">ServerRegionReplicaUtil</a></dt>
@@ -98845,6 +98861,8 @@ service.</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/nio/ByteBuff.html#REFERENCE_COUNT_NAME">REFERENCE_COUNT_NAME</a></span> - Static variable in class org.apache.hadoop.hbase.nio.<a href="org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#ReferenceAndLinkFileFilter-org.apache.hadoop.fs.FileSystem-">ReferenceAndLinkFileFilter(FileSystem)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceAndLinkFileFilter</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ObjectPool.html#referenceCache">referenceCache</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ObjectPool.html" title="class in org.apache.hadoop.hbase.util">ObjectPool</a></dt>
<dd>
<div class="block">Does not permit null keys.</div>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 644adb5..0387e8e 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/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/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/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.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>
+<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>
</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/class-use/TableName.html b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
index cbfb1e9..85ccbac 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
@@ -5644,6 +5644,21 @@ service.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">HFileLink.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-java.lang.String-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-boolean-">create</a></span>(org.apache.hadoop.conf.Configuration conf,
+ org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path dstFamilyPath,
+ <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> familyName,
+ <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> dstTableName,
+ <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> dstRegionName,
+ <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> linkedTable,
+ <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> linkedRegion,
+ <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> hfileName,
+ boolean createBackRef)</code>
+<div class="block">Create a new HFileLink</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><span class="typeNameLabel">HFileLink.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-">create</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
@@ -5653,7 +5668,7 @@ service.</div>
<div class="block">Create a new HFileLink</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><span class="typeNameLabel">HFileLink.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-boolean-">create</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
@@ -5665,7 +5680,7 @@ service.</div>
<div class="block">Create a new HFileLink</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>static <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"><span class="typeNameLabel">HFileLink.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#createHFileLinkName-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-">createHFileLinkName</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<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> regionName,
@@ -5673,7 +5688,7 @@ service.</div>
<div class="block">Create a new HFileLink name</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><span class="typeNameLabel">HFileLink.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#createPath-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-java.lang.String-">createPath</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<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> region,
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index a64f8c6..36879c7 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -466,25 +466,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/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/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/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/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/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/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/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.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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index ce4e541..b424234 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -176,8 +176,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.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</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 ccc1990..e259212 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.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/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/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/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/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/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/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/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/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/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/http/package-tree.html b/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
index f4fcd97..e4b4109 100644
--- a/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
@@ -141,8 +141,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.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Output.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Output</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/HttpConfig.Policy.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">HttpConfig.Policy</span></a></li>
<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Event.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Event</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/HttpConfig.Policy.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">HttpConfig.Policy</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/io/HFileLink.html b/devapidocs/org/apache/hadoop/hbase/io/HFileLink.html
index 07cd980..09d46a2 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/HFileLink.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/HFileLink.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":10,"i14":9,"i15":9,"i16":9,"i17":10,"i18":10,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":10,"i15":9,"i16":9,"i17":9,"i18":10,"i19":10,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -153,7 +153,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#archivePath">archivePath</a></span></code> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#LINK_NAME_PATTERN">LINK_NAME_PATTERN</a></span></code>
<div class="block">Define the HFile Link name parser in the form of: table=region-hfile</div>
</td>
@@ -275,6 +275,21 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-java.lang.String-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-boolean-">create</a></span>(org.apache.hadoop.conf.Configuration conf,
+ org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path dstFamilyPath,
+ <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> familyName,
+ <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> dstTableName,
+ <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> dstRegionName,
+ <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> linkedTable,
+ <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> linkedRegion,
+ <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> hfileName,
+ boolean createBackRef)</code>
+<div class="block">Create a new HFileLink</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-">create</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
@@ -284,7 +299,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<div class="block">Create a new HFileLink</div>
</td>
</tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-boolean-">create</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
@@ -296,14 +311,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<div class="block">Create a new HFileLink</div>
</td>
</tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
<td class="colFirst"><code>(package private) static <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/io/HFileLink.html#createBackReferenceName-java.lang.String-java.lang.String-">createBackReferenceName</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> tableNameStr,
<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> regionName)</code>
<div class="block">Create the back reference name</div>
</td>
</tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#createFromHFileLink-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-">createFromHFileLink</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
@@ -312,7 +327,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<div class="block">Create a new HFileLink starting from a hfileLink name</div>
</td>
</tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#createFromHFileLink-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-boolean-">createFromHFileLink</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
@@ -322,14 +337,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<div class="block">Create a new HFileLink starting from a hfileLink name</div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <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/io/HFileLink.html#createHFileLinkName-org.apache.hadoop.hbase.client.RegionInfo-java.lang.String-">createHFileLinkName</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hfileRegionInfo,
<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> hfileName)</code>
<div class="block">Create a new HFileLink name</div>
</td>
</tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
<td class="colFirst"><code>static <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/io/HFileLink.html#createHFileLinkName-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-">createHFileLinkName</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<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> regionName,
@@ -337,7 +352,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<div class="block">Create a new HFileLink name</div>
</td>
</tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#createPath-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-java.lang.String-">createPath</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<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> region,
@@ -346,65 +361,65 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<div class="block">Create an HFileLink relative path for the table/region/family/hfile location</div>
</td>
</tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getArchivePath--">getArchivePath</a></span>()</code> </td>
</tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getHFileFromBackReference-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-">getHFileFromBackReference</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path linkRefPath)</code>
<div class="block">Get the full path of the HFile referenced by the back reference</div>
</td>
</tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getHFileFromBackReference-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">getHFileFromBackReference</a></span>(org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.fs.Path linkRefPath)</code>
<div class="block">Get the full path of the HFile referenced by the back reference</div>
</td>
</tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
<td class="colFirst"><code>private static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getHFileLinkPatternRelativePath-org.apache.hadoop.fs.Path-">getHFileLinkPatternRelativePath</a></span>(org.apache.hadoop.fs.Path path)</code>
<div class="block">Convert a HFileLink path to a table relative path.</div>
</td>
</tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getMobPath--">getMobPath</a></span>()</code> </td>
</tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getOriginPath--">getOriginPath</a></span>()</code> </td>
</tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
<td class="colFirst"><code>static <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/io/HFileLink.html#getReferencedHFileName-java.lang.String-">getReferencedHFileName</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> fileName)</code>
<div class="block">Get the HFile name of the referenced link</div>
</td>
</tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
<td class="colFirst"><code>static <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/io/HFileLink.html#getReferencedRegionName-java.lang.String-">getReferencedRegionName</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> fileName)</code>
<div class="block">Get the Region name of the referenced link</div>
</td>
</tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#getReferencedTableName-java.lang.String-">getReferencedTableName</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> fileName)</code>
<div class="block">Get the Table name of the referenced link</div>
</td>
</tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#isHFileLink-org.apache.hadoop.fs.Path-">isHFileLink</a></span>(org.apache.hadoop.fs.Path path)</code> </td>
</tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#isHFileLink-java.lang.String-">isHFileLink</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> fileName)</code> </td>
</tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html#parseBackReferenceName-java.lang.String-">parseBackReferenceName</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)</code> </td>
</tr>
@@ -473,7 +488,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>LINK_NAME_PATTERN</h4>
-<pre>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.83">LINK_NAME_PATTERN</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.82">LINK_NAME_PATTERN</a></pre>
<div class="block">Define the HFile Link name parser in the form of: table=region-hfile</div>
</li>
</ul>
@@ -483,7 +498,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>REF_OR_HFILE_LINK_PATTERN</h4>
-<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.92">REF_OR_HFILE_LINK_PATTERN</a></pre>
+<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.91">REF_OR_HFILE_LINK_PATTERN</a></pre>
<div class="block">The pattern should be used for hfile and reference links
that can be found in /hbase/table/region/family/</div>
</li>
@@ -494,7 +509,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>archivePath</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.97">archivePath</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.96">archivePath</a></pre>
</li>
</ul>
<a name="originPath">
@@ -503,7 +518,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>originPath</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.98">originPath</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.97">originPath</a></pre>
</li>
</ul>
<a name="mobPath">
@@ -512,7 +527,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>mobPath</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.99">mobPath</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.98">mobPath</a></pre>
</li>
</ul>
<a name="tempPath">
@@ -521,7 +536,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockListLast">
<li class="blockList">
<h4>tempPath</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.100">tempPath</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.99">tempPath</a></pre>
</li>
</ul>
</li>
@@ -538,7 +553,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockListLast">
<li class="blockList">
<h4>HFileLink</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.105">HFileLink</a>(org.apache.hadoop.fs.Path originPath,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.104">HFileLink</a>(org.apache.hadoop.fs.Path originPath,
org.apache.hadoop.fs.Path tempPath,
org.apache.hadoop.fs.Path mobPath,
org.apache.hadoop.fs.Path archivePath)</pre>
@@ -559,7 +574,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>buildFromHFileLinkPattern</h4>
-<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.120">buildFromHFileLinkPattern</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.119">buildFromHFileLinkPattern</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path hFileLinkPattern)
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>
@@ -577,7 +592,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>buildFromHFileLinkPattern</h4>
-<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.133">buildFromHFileLinkPattern</a>(org.apache.hadoop.fs.Path rootDir,
+<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.132">buildFromHFileLinkPattern</a>(org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.fs.Path archiveDir,
org.apache.hadoop.fs.Path hFileLinkPattern)</pre>
<dl>
@@ -594,7 +609,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>createPath</h4>
-<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.152">createPath</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
+<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.151">createPath</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<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> region,
<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> family,
<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> hfile)</pre>
@@ -616,7 +631,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>build</h4>
-<pre>public static <a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.170">build</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static <a href="../../../../../org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.169">build</a>(org.apache.hadoop.conf.Configuration conf,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<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> region,
<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> family,
@@ -643,7 +658,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getOriginPath</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.179">getOriginPath</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.178">getOriginPath</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the origin path of the hfile.</dd>
@@ -656,7 +671,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getArchivePath</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.186">getArchivePath</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.185">getArchivePath</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the path of the archived hfile.</dd>
@@ -669,7 +684,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getMobPath</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.193">getMobPath</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.192">getMobPath</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the path of the mob hfiles.</dd>
@@ -682,7 +697,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>isHFileLink</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.201">isHFileLink</a>(org.apache.hadoop.fs.Path path)</pre>
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.200">isHFileLink</a>(org.apache.hadoop.fs.Path path)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - Path to check.</dd>
@@ -697,7 +712,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>isHFileLink</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.210">isHFileLink</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> fileName)</pre>
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.209">isHFileLink</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> fileName)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>fileName</code> - File name to check.</dd>
@@ -712,7 +727,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getHFileLinkPatternRelativePath</h4>
-<pre>private static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.227">getHFileLinkPatternRelativePath</a>(org.apache.hadoop.fs.Path path)</pre>
+<pre>private static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.226">getHFileLinkPatternRelativePath</a>(org.apache.hadoop.fs.Path path)</pre>
<div class="block">Convert a HFileLink path to a table relative path.
e.g. the link: /hbase/test/0123/cf/testtb=4567-abcd
becomes: /hbase/testtb/4567/cf/abcd</div>
@@ -732,7 +747,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getReferencedHFileName</h4>
-<pre>public static <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/io/HFileLink.html#line.250">getReferencedHFileName</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> fileName)</pre>
+<pre>public static <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/io/HFileLink.html#line.249">getReferencedHFileName</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> fileName)</pre>
<div class="block">Get the HFile name of the referenced link</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -748,7 +763,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getReferencedRegionName</h4>
-<pre>public static <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/io/HFileLink.html#line.264">getReferencedRegionName</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> fileName)</pre>
+<pre>public static <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/io/HFileLink.html#line.263">getReferencedRegionName</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> fileName)</pre>
<div class="block">Get the Region name of the referenced link</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -764,7 +779,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getReferencedTableName</h4>
-<pre>public 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/io/HFileLink.html#line.278">getReferencedTableName</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> fileName)</pre>
+<pre>public 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/io/HFileLink.html#line.277">getReferencedTableName</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> fileName)</pre>
<div class="block">Get the Table name of the referenced link</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -780,7 +795,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>createHFileLinkName</h4>
-<pre>public static <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/io/HFileLink.html#line.293">createHFileLinkName</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hfileRegionInfo,
+<pre>public static <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/io/HFileLink.html#line.292">createHFileLinkName</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hfileRegionInfo,
<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> hfileName)</pre>
<div class="block">Create a new HFileLink name</div>
<dl>
@@ -798,7 +813,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>createHFileLinkName</h4>
-<pre>public static <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/io/HFileLink.html#line.307">createHFileLinkName</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
+<pre>public static <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/io/HFileLink.html#line.306">createHFileLinkName</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<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> regionName,
<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> hfileName)</pre>
<div class="block">Create a new HFileLink name</div>
@@ -818,7 +833,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.329">create</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.328">create</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hfileRegionInfo,
@@ -848,7 +863,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.350">create</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.349">create</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hfileRegionInfo,
@@ -880,7 +895,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.373">create</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.372">create</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> linkedTable,
@@ -912,9 +927,46 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.395">create</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.394">create</a>(org.apache.hadoop.conf.Configuration conf,
+ org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path dstFamilyPath,
+ <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> linkedTable,
+ <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> linkedRegion,
+ <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> hfileName,
+ boolean createBackRef)
+ 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">Create a new HFileLink
+
+ <p>It also adds a back-reference to the hfile back-reference directory
+ to simplify the reference-count and the cleaning process.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conf</code> - <code>Configuration</code> to read for the archive directory name</dd>
+<dd><code>fs</code> - <code>FileSystem</code> on which to write the HFileLink</dd>
+<dd><code>dstFamilyPath</code> - - Destination path (table/region/cf/)</dd>
+<dd><code>linkedTable</code> - - Linked Table Name</dd>
+<dd><code>linkedRegion</code> - - Linked Region Name</dd>
+<dd><code>hfileName</code> - - Linked HFile name</dd>
+<dd><code>createBackRef</code> - - Whether back reference should be created. Defaults to true.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the file is created, otherwise the file exists.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code> - on file or parent directory creation failure</dd>
+</dl>
+</li>
+</ul>
+<a name="create-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-java.lang.String-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-boolean-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>create</h4>
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.423">create</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
+ <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> familyName,
+ <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> dstTableName,
+ <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> dstRegionName,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> linkedTable,
<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> linkedRegion,
<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> hfileName,
@@ -929,6 +981,8 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<dd><code>conf</code> - <code>Configuration</code> to read for the archive directory name</dd>
<dd><code>fs</code> - <code>FileSystem</code> on which to write the HFileLink</dd>
<dd><code>dstFamilyPath</code> - - Destination path (table/region/cf/)</dd>
+<dd><code>dstTableName</code> - - Destination table name</dd>
+<dd><code>dstRegionName</code> - - Destination region name</dd>
<dd><code>linkedTable</code> - - Linked Table Name</dd>
<dd><code>linkedRegion</code> - - Linked Region Name</dd>
<dd><code>hfileName</code> - - Linked HFile name</dd>
@@ -946,7 +1000,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>createFromHFileLink</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.447">createFromHFileLink</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.471">createFromHFileLink</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
<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> hfileLinkName)
@@ -974,7 +1028,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>createFromHFileLink</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.467">createFromHFileLink</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.491">createFromHFileLink</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dstFamilyPath,
<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> hfileLinkName,
@@ -1004,7 +1058,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>createBackReferenceName</h4>
-<pre>static <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/io/HFileLink.html#line.482">createBackReferenceName</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> tableNameStr,
+<pre>static <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/io/HFileLink.html#line.506">createBackReferenceName</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> tableNameStr,
<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> regionName)</pre>
<div class="block">Create the back reference name</div>
</li>
@@ -1015,7 +1069,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>getHFileFromBackReference</h4>
-<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.495">getHFileFromBackReference</a>(org.apache.hadoop.fs.Path rootDir,
+<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.519">getHFileFromBackReference</a>(org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.fs.Path linkRefPath)</pre>
<div class="block">Get the full path of the HFile referenced by the back reference</div>
<dl>
@@ -1033,7 +1087,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockList">
<li class="blockList">
<h4>parseBackReferenceName</h4>
-<pre>public static <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#l [...]
+<pre>public static <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#l [...]
</li>
</ul>
<a name="getHFileFromBackReference-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-">
@@ -1042,7 +1096,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/io/FileLink.html" title=
<ul class="blockListLast">
<li class="blockList">
<h4>getHFileFromBackReference</h4>
-<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.529">getHFileFromBackReference</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/io/HFileLink.html#line.553">getHFileFromBackReference</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path linkRefPath)
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">Get the full path of the HFile referenced by the back reference</div>
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 4016c56..f1f4831 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -309,12 +309,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/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/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.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/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 3ce9ea6..6216e85 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -363,9 +363,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/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/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/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/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</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 77fdcc5..a4d759c 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/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/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/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/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/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
index d4c9130..ad3e625 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.808">SplitTableRegionProcedure.StoreFileSplitter</a>
+<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.814">SplitTableRegionProcedure.StoreFileSplitter</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/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a><<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path>></pre>
<div class="block">Utility class used to do the file splitting / reference writing
@@ -220,7 +220,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
<ul class="blockList">
<li class="blockList">
<h4>regionFs</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.809">regionFs</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.815">regionFs</a></pre>
</li>
</ul>
<a name="family">
@@ -229,7 +229,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
<ul class="blockList">
<li class="blockList">
<h4>family</h4>
-<pre>private final byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.810">family</a></pre>
+<pre>private final byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.816">family</a></pre>
</li>
</ul>
<a name="sf">
@@ -238,7 +238,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
<ul class="blockListLast">
<li class="blockList">
<h4>sf</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.811">sf</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.817">sf</a></pre>
</li>
</ul>
</li>
@@ -255,7 +255,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
<ul class="blockListLast">
<li class="blockList">
<h4>StoreFileSplitter</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.819">StoreFileSplitter</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> regionFs,
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.825">StoreFileSplitter</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> regionFs,
byte[] family,
<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> sf)</pre>
<div class="block">Constructor that takes what it needs to split</div>
@@ -281,7 +281,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
<ul class="blockListLast">
<li class="blockList">
<h4>call</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.826">call</a>()
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.832">call</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="overrideSpecifyLabel">Specified by:</span></dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
index 711e5ae..7830570 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
@@ -134,7 +134,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.95">SplitTableRegionProcedure</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.96">SplitTableRegionProcedure</a>
extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState></pre>
<div class="block">The procedure to split a region in a table.
Takes lock on the parent region.
@@ -299,9 +299,9 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#assertReferenceFileCount-org.apache.hadoop.fs.FileSystem-int-org.apache.hadoop.fs.Path-">assertReferenceFileCount</a></span>(org.apache.hadoop.fs.FileSystem fs,
- int expectedReferenceFileCount,
- org.apache.hadoop.fs.Path dir)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#assertSplitResultFilesCount-org.apache.hadoop.fs.FileSystem-int-org.apache.hadoop.fs.Path-">assertSplitResultFilesCount</a></span>(org.apache.hadoop.fs.FileSystem fs,
+ int expectedSplitResultFileCount,
+ org.apache.hadoop.fs.Path dir)</code> </td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>private void</code></td>
@@ -572,7 +572,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.97">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.98">LOG</a></pre>
</li>
</ul>
<a name="daughterOneRI">
@@ -581,7 +581,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>daughterOneRI</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.98">daughterOneRI</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.99">daughterOneRI</a></pre>
</li>
</ul>
<a name="daughterTwoRI">
@@ -590,7 +590,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>daughterTwoRI</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.99">daughterTwoRI</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.100">daughterTwoRI</a></pre>
</li>
</ul>
<a name="bestSplitRow">
@@ -599,7 +599,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>bestSplitRow</h4>
-<pre>private byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.100">bestSplitRow</a></pre>
+<pre>private byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.101">bestSplitRow</a></pre>
</li>
</ul>
<a name="splitPolicy">
@@ -608,7 +608,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>splitPolicy</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.101">splitPolicy</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.102">splitPolicy</a></pre>
</li>
</ul>
<a name="EXPECTED_SPLIT_STATES">
@@ -617,7 +617,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockListLast">
<li class="blockList">
<h4>EXPECTED_SPLIT_STATES</h4>
-<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.495">EXPECTED_SPLIT_STATES</a></pre>
+<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.497">EXPECTED_SPLIT_STATES</a></pre>
</li>
</ul>
</li>
@@ -634,7 +634,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>SplitTableRegionProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.103">SplitTableRegionProcedure</a>()</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.104">SplitTableRegionProcedure</a>()</pre>
</li>
</ul>
<a name="SplitTableRegionProcedure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">
@@ -643,7 +643,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockListLast">
<li class="blockList">
<h4>SplitTableRegionProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.107">SplitTableRegionProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.108">SplitTableRegionProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionToSplit,
byte[] splitRow)
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>
@@ -667,7 +667,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>acquireLock</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.157">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv [...]
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.159">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv [...]
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method if they need a lock on an Entity. A lock can be anything,
and it is up to the implementor. The Procedure Framework will call this method just before it
@@ -704,7 +704,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>releaseLock</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.171">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.173">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method, and release lock if necessary.</div>
<dl>
@@ -719,7 +719,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getDaughterOneRI</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.176">getDaughterOneRI</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.178">getDaughterOneRI</a>()</pre>
</li>
</ul>
<a name="getDaughterTwoRI--">
@@ -728,7 +728,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getDaughterTwoRI</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.180">getDaughterTwoRI</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.182">getDaughterTwoRI</a>()</pre>
</li>
</ul>
<a name="hasBestSplitRow--">
@@ -737,7 +737,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>hasBestSplitRow</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.184">hasBestSplitRow</a>()</pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.186">hasBestSplitRow</a>()</pre>
</li>
</ul>
<a name="checkSplittable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -746,7 +746,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>checkSplittable</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.193">checkSplittable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.195">checkSplittable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionToSplit)
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">Check whether the region is splittable</div>
@@ -765,7 +765,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getDaughterRegionIdTimestamp</h4>
-<pre>private static long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.259">getDaughterRegionIdTimestamp</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
+<pre>private static long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.261">getDaughterRegionIdTimestamp</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
<div class="block">Calculate daughter regionid to use.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -781,7 +781,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>removeNonDefaultReplicas</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.271">removeNonDefaultReplicas</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.273">removeNonDefaultReplicas</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
@@ -795,7 +795,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>checkClosedRegions</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.276">checkClosedRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.278">checkClosedRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
@@ -809,7 +809,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>executeFromState</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.283">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure" [...]
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.285">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure" [...]
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState state)
throws <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>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
@@ -832,7 +832,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>rollbackState</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.360">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.362">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState state)
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>
@@ -856,7 +856,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>isRollbackSupported</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.407">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState state)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.409">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState state)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">StateMachineProcedure</a></code></span></div>
<div class="block">Used by the default implementation of abort() to know if the current state can be aborted
and rollback can be triggered.</div>
@@ -872,7 +872,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getState</h4>
-<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.422">getState</a>(int stateId)</pre>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.424">getState</a>(int stateId)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
<dl>
@@ -891,7 +891,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getStateId</h4>
-<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.427">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState state)</pre>
+<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.429">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState state)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
<dl>
@@ -910,7 +910,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getInitialState</h4>
-<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.432">getInitialState</a>()</pre>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.434">getInitialState</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
<dl>
@@ -927,7 +927,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>serializeStateData</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.437">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.439">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">The user-level code of the procedure may have some state to
@@ -949,7 +949,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>deserializeStateData</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.451">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.453">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">Called on store load to allow the user to decode the previously serialized
@@ -970,7 +970,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>toStringClassDetails</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.465">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.467">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
<div class="block">Extend the toString() information with the procedure details
e.g. className and parameters</div>
@@ -988,7 +988,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getParentRegion</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.477">getParentRegion</a>()</pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.479">getParentRegion</a>()</pre>
</li>
</ul>
<a name="getTableOperationType--">
@@ -997,7 +997,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getTableOperationType</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.482">getTableOperationType</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.484">getTableOperationType</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
<div class="block">Given an operation type we can take decisions about what to do with pending operations.
e.g. if we get a delete and we have some table operation pending (e.g. add column)
@@ -1018,7 +1018,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getProcedureMetrics</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.487">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProce [...]
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.489">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProce [...]
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">Procedure</a></code></span></div>
<div class="block">Override this method to provide procedure specific counters for submitted count, failed
count and time histogram.</div>
@@ -1038,7 +1038,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getSplitRow</h4>
-<pre>private byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.491">getSplitRow</a>()</pre>
+<pre>private byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.493">getSplitRow</a>()</pre>
</li>
</ul>
<a name="prepareSplitRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -1047,7 +1047,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>prepareSplitRegion</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.501">prepareSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.503">prepareSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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">Prepare to Split region.</div>
<dl>
@@ -1064,7 +1064,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>preSplitRegion</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.573">preSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.575">preSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
<div class="block">Action before splitting region in a table.</div>
@@ -1083,7 +1083,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>postRollBackSplitRegion</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.597">postRollBackSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.599">postRollBackSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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">Action after rollback a split table region action.</div>
<dl>
@@ -1100,7 +1100,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>openParentRegion</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.607">openParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.609">openParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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">Rollback close parent region</div>
<dl>
@@ -1115,7 +1115,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>createDaughterRegions</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.616">createDaughterRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.618">createDaughterRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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">Create daughter regions</div>
<dl>
@@ -1130,7 +1130,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>deleteDaughterRegions</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.640">deleteDaughterRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.642">deleteDaughterRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
@@ -1144,7 +1144,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>splitStoreFiles</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>> <a href="../../../../../../src-html/org/apache/hadoo [...]
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>> <a href="../../../../../../src-html/org/apache/hadoo [...]
<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> regionFs)
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">Create Split directory</div>
@@ -1156,16 +1156,16 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
</dl>
</li>
</ul>
-<a name="assertReferenceFileCount-org.apache.hadoop.fs.FileSystem-int-org.apache.hadoop.fs.Path-">
+<a name="assertSplitResultFilesCount-org.apache.hadoop.fs.FileSystem-int-org.apache.hadoop.fs.Path-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
-<h4>assertReferenceFileCount</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.776">assertReferenceFileCount</a>(org.apache.hadoop.fs.FileSystem fs,
- int expectedReferenceFileCount,
- org.apache.hadoop.fs.Path dir)
- 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>
+<h4>assertSplitResultFilesCount</h4>
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.778">assertSplitResultFilesCount</a>(org.apache.hadoop.fs.FileSystem fs,
+ int expectedSplitResultFileCount,
+ org.apache.hadoop.fs.Path dir)
+ 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>
<dd><code><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></code></dd>
@@ -1178,7 +1178,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>splitStoreFile</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.784">splitStoreFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionF [...]
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.790">splitStoreFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionF [...]
byte[] family,
<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> sf)
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>
@@ -1194,7 +1194,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>preSplitRegionBeforeMETA</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.835">preSplitRegionBeforeMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.841">preSplitRegionBeforeMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
<div class="block">Post split region actions before the Point-of-No-Return step</div>
@@ -1213,7 +1213,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>updateMeta</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.858">updateMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.864">updateMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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">Add daughter regions to META</div>
<dl>
@@ -1230,7 +1230,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>preSplitRegionAfterMETA</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.867">preSplitRegionAfterMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.873">preSplitRegionAfterMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
<div class="block">Pre split region actions after the Point-of-No-Return step</div>
@@ -1249,7 +1249,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>postSplitRegion</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.879">postSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.885">postSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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">Post split region actions</div>
<dl>
@@ -1266,7 +1266,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getParentRegionServerName</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.886">getParentRegionServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.892">getParentRegionServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
</li>
</ul>
<a name="createUnassignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -1275,7 +1275,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>createUnassignProcedures</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.891">createUnassignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoo [...]
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.897">createUnassignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoo [...]
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>
@@ -1289,7 +1289,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>createAssignProcedures</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.897">createAssignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop. [...]
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.903">createAssignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop. [...]
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>
@@ -1303,7 +1303,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>getRegionReplication</h4>
-<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.906">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.912">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
@@ -1317,7 +1317,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockList">
<li class="blockList">
<h4>writeMaxSequenceIdFile</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.911">writeMaxSequenceIdFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.917">writeMaxSequenceIdFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
@@ -1331,7 +1331,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
<ul class="blockListLast">
<li class="blockList">
<h4>abort</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.924">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.930">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The abort() call is asynchronous and each procedure must decide how to deal
with it, if they want to be abortable. The simplest implementation
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 ba98778..8bede26 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/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>
+<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>
</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 3443edd..79ef140 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -212,9 +212,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.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/StochasticLoadBalancer.GeneratorType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">StochasticLoadBalancer.GeneratorType</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>
+<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>
</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 4c57dec..3edfce8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -317,12 +317,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.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/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/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/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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</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 ae71783..2bf607a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -224,8 +224,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.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/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/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>
</ul>
</li>
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index f5fed31..d7fe348 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -464,20 +464,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.<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/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/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/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/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/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/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/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/MetaRegionLocationCache.ZNodeOpType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaRegionLocationCache.ZNodeOpType</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/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/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/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/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/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/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/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/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/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/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/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/MetaRegionLocationCache.ZNodeOpType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaRegionLocationCache.ZNodeOpType</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>
</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 292bf02..3bc6fb6 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/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/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/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/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/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/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/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 4d19aec..5dea756 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/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/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/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/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/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/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/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/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>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html
index edd6e9d..ab75b93 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.64">HRegionFileSystem</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.67">HRegionFileSystem</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">View to an on-disk Region.
Provides the set of methods necessary to interact with the on-disk region data.</div>
@@ -637,7 +637,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.65">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.68">LOG</a></pre>
</li>
</ul>
<a name="REGION_INFO_FILE">
@@ -646,7 +646,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>REGION_INFO_FILE</h4>
-<pre>public static 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/regionserver/HRegionFileSystem.html#line.68">REGION_INFO_FILE</a></pre>
+<pre>public static 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/regionserver/HRegionFileSystem.html#line.71">REGION_INFO_FILE</a></pre>
<div class="block">Name of the region info file that resides just under the region directory.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
@@ -660,7 +660,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>REGION_MERGES_DIR</h4>
-<pre>public static 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/regionserver/HRegionFileSystem.html#line.71">REGION_MERGES_DIR</a></pre>
+<pre>public static 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/regionserver/HRegionFileSystem.html#line.74">REGION_MERGES_DIR</a></pre>
<div class="block">Temporary subdirectory of the region directory used for merges.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
@@ -674,7 +674,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>REGION_SPLITS_DIR</h4>
-<pre>public static 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/regionserver/HRegionFileSystem.html#line.74">REGION_SPLITS_DIR</a></pre>
+<pre>public static 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/regionserver/HRegionFileSystem.html#line.77">REGION_SPLITS_DIR</a></pre>
<div class="block">Temporary subdirectory of the region directory used for splits.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
@@ -688,7 +688,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>REGION_TEMP_DIR</h4>
-<pre>static 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/regionserver/HRegionFileSystem.html#line.77">REGION_TEMP_DIR</a></pre>
+<pre>static 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/regionserver/HRegionFileSystem.html#line.80">REGION_TEMP_DIR</a></pre>
<div class="block">Temporary subdirectory of the region directory used for compaction output.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
@@ -702,7 +702,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>regionInfo</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.79">regionInfo</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.82">regionInfo</a></pre>
</li>
</ul>
<a name="regionInfoForFs">
@@ -711,7 +711,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>regionInfoForFs</h4>
-<pre>final <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.81">regionInfoForFs</a></pre>
+<pre>final <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.84">regionInfoForFs</a></pre>
</li>
</ul>
<a name="conf">
@@ -720,7 +720,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>conf</h4>
-<pre>final org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.82">conf</a></pre>
+<pre>final org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.85">conf</a></pre>
</li>
</ul>
<a name="tableDir">
@@ -729,7 +729,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>tableDir</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.83">tableDir</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.86">tableDir</a></pre>
</li>
</ul>
<a name="fs">
@@ -738,7 +738,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>fs</h4>
-<pre>final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.84">fs</a></pre>
+<pre>final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.87">fs</a></pre>
</li>
</ul>
<a name="regionDir">
@@ -747,7 +747,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>regionDir</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.85">regionDir</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.88">regionDir</a></pre>
</li>
</ul>
<a name="hdfsClientRetriesNumber">
@@ -756,7 +756,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>hdfsClientRetriesNumber</h4>
-<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.91">hdfsClientRetriesNumber</a></pre>
+<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.94">hdfsClientRetriesNumber</a></pre>
<div class="block">In order to handle NN connectivity hiccups, one need to retry non-idempotent operation at the
client level.</div>
</li>
@@ -767,7 +767,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>baseSleepBeforeRetries</h4>
-<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.92">baseSleepBeforeRetries</a></pre>
+<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.95">baseSleepBeforeRetries</a></pre>
</li>
</ul>
<a name="DEFAULT_HDFS_CLIENT_RETRIES_NUMBER">
@@ -776,7 +776,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_HDFS_CLIENT_RETRIES_NUMBER</h4>
-<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.93">DEFAULT_HDFS_CLIENT_RETRIES_NUMBER</a></pre>
+<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.96">DEFAULT_HDFS_CLIENT_RETRIES_NUMBER</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionFileSystem.DEFAULT_HDFS_CLIENT_RETRIES_NUMBER">Constant Field Values</a></dd>
@@ -789,7 +789,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>DEFAULT_BASE_SLEEP_BEFORE_RETRIES</h4>
-<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.94">DEFAULT_BASE_SLEEP_BEFORE_RETRIES</a></pre>
+<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.97">DEFAULT_BASE_SLEEP_BEFORE_RETRIES</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionFileSystem.DEFAULT_BASE_SLEEP_BEFORE_RETRIES">Constant Field Values</a></dd>
@@ -810,7 +810,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>HRegionFileSystem</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.103">HRegionFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.106">HRegionFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
@@ -838,7 +838,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getFileSystem</h4>
-<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.118">getFileSystem</a>()</pre>
+<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.121">getFileSystem</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the underlying <code>FileSystem</code></dd>
@@ -851,7 +851,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionInfo</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.123">getRegionInfo</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.126">getRegionInfo</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionInfo</code></a> that describe this on-disk region view</dd>
@@ -864,7 +864,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionInfoForFS</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.127">getRegionInfoForFS</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.130">getRegionInfoForFS</a>()</pre>
</li>
</ul>
<a name="getTableDir--">
@@ -873,7 +873,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getTableDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.132">getTableDir</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.135">getTableDir</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>Path</code> to the region's root directory.</dd>
@@ -886,7 +886,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.137">getRegionDir</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.140">getRegionDir</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>Path</code> to the region directory.</dd>
@@ -899,7 +899,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getTempDir</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.145">getTempDir</a>()</pre>
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.148">getTempDir</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>Path</code> to the region's temp directory, used for file creations</dd>
@@ -912,7 +912,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>cleanupTempDir</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.152">cleanupTempDir</a>()
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.155">cleanupTempDir</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>
<div class="block">Clean up any temp detritus that may have been left around from previous operation attempts.</div>
<dl>
@@ -927,7 +927,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getStoreDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.164">getStoreDir</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> familyName)</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.167">getStoreDir</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> familyName)</pre>
<div class="block">Returns the directory path of the specified family</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -943,7 +943,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getStoreHomedir</h4>
-<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.174">getStoreHomedir</a>(org.apache.hadoop.fs.Path tabledir,
+<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.177">getStoreHomedir</a>(org.apache.hadoop.fs.Path tabledir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri,
byte[] family)</pre>
<dl>
@@ -962,7 +962,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getStoreHomedir</h4>
-<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.185">getStoreHomedir</a>(org.apache.hadoop.fs.Path tabledir,
+<pre>public static org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.188">getStoreHomedir</a>(org.apache.hadoop.fs.Path tabledir,
<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> encodedName,
byte[] family)</pre>
<dl>
@@ -981,7 +981,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>createStoreDir</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.196">createStoreDir</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> familyName)
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.199">createStoreDir</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> familyName)
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">Create the store directory for the specified family name</div>
<dl>
@@ -1000,7 +1000,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>setStoragePolicy</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.214">setStoragePolicy</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> familyName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.217">setStoragePolicy</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> familyName,
<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> policyName)</pre>
<div class="block">Set the directory of CF to the specified storage policy. <br>
<i>"LAZY_PERSIST"</i>, <i>"ALL_SSD"</i>, <i>"ONE_SSD"</i>, <i>"HOT"</i>, <i>"WARM"</i>,
@@ -1023,7 +1023,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<li class="blockList">
<h4>getStoragePolicyName</h4>
<pre>@Nullable
-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/regionserver/HRegionFileSystem.html#line.225">getStoragePolicyName</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> familyName)</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/regionserver/HRegionFileSystem.html#line.228">getStoragePolicyName</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> familyName)</pre>
<div class="block">Get the storage policy of the directory of CF.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1040,7 +1040,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getStoreFiles</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.240">getStoreFiles</a>(byte[] familyName)
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.243">getStoreFiles</a>(byte[] familyName)
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">Returns the store files available for the family.
This methods performs the filtering based on the valid store files.</div>
@@ -1060,7 +1060,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getStoreFiles</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.244">getStoreFiles</a>(<a href="https://docs.oracle.com/javase [...]
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.247">getStoreFiles</a>(<a href="https://docs.oracle.com/javase [...]
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>
@@ -1074,7 +1074,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getStoreFiles</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.254">getStoreFiles</a>(<a href="https://docs.oracle.com/javase [...]
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.257">getStoreFiles</a>(<a href="https://docs.oracle.com/javase [...]
boolean validate)
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">Returns the store files available for the family.
@@ -1095,7 +1095,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getStoreFilesLocatedStatus</h4>
-<pre>public static <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.LocatedFileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.289">getStoreFilesLocatedStatus</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegio [...]
+<pre>public static <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.LocatedFileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.292">getStoreFilesLocatedStatus</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegio [...]
<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> familyName,
boolean validate)
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>
@@ -1117,7 +1117,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getStoreFilePath</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.324">getStoreFilePath</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> familyName,
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.327">getStoreFilePath</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> familyName,
<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> fileName)</pre>
<div class="block">Return Qualified Path of the specified family/file</div>
<dl>
@@ -1135,7 +1135,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getStoreFileInfo</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.336">getStoreFileInfo</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> familyName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.339">getStoreFileInfo</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> familyName,
<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> fileName)
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">Return the store file information of the specified family/file.</div>
@@ -1156,7 +1156,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>hasReferences</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.349">hasReferences</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> familyName)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.352">hasReferences</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> familyName)
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">Returns true if the specified family has reference files</div>
<dl>
@@ -1175,7 +1175,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>hasReferences</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.372">hasReferences</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.375">hasReferences</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)
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">Check whether region has Reference file</div>
<dl>
@@ -1194,7 +1194,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getFamilies</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</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="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.385">getFamilies</a>()
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</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="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.388">getFamilies</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="returnLabel">Returns:</span></dt>
@@ -1210,7 +1210,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>deleteFamily</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.403">deleteFamily</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> familyName)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.406">deleteFamily</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> familyName)
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">Remove the region family from disk, archiving the store files.</div>
<dl>
@@ -1227,7 +1227,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>generateUniqueName</h4>
-<pre>private static <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/regionserver/HRegionFileSystem.html#line.420">generateUniqueName</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> suffix)</pre>
+<pre>private static <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/regionserver/HRegionFileSystem.html#line.423">generateUniqueName</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> suffix)</pre>
<div class="block">Generate a unique file name, used by createTempName() and commitStoreFile()</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1243,7 +1243,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>createTempName</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.437">createTempName</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.440">createTempName</a>()</pre>
<div class="block">Generate a unique temporary Path. Used in conjuction with commitStoreFile()
to get a safer file creation.
<code>
@@ -1263,7 +1263,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>createTempName</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.453">createTempName</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> suffix)</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.456">createTempName</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> suffix)</pre>
<div class="block">Generate a unique temporary Path. Used in conjuction with commitStoreFile()
to get a safer file creation.
<code>
@@ -1285,7 +1285,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>commitStoreFile</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.464">commitStoreFile</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> familyName,
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.467">commitStoreFile</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> familyName,
org.apache.hadoop.fs.Path buildPath)
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">Move the file from a build/temp location to the main family store directory.</div>
@@ -1306,7 +1306,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>preCommitStoreFile</h4>
-<pre>private org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.479">preCommitStoreFile</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> familyName,
+<pre>private org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.482">preCommitStoreFile</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> familyName,
org.apache.hadoop.fs.Path buildPath,
long seqNum,
boolean generateNewName)
@@ -1332,7 +1332,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>commitStoreFile</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.506">commitStoreFile</a>(org.apache.hadoop.fs.Path buildPath,
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.509">commitStoreFile</a>(org.apache.hadoop.fs.Path buildPath,
org.apache.hadoop.fs.Path dstPath)
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>
@@ -1347,7 +1347,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>removeStoreFile</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.520">removeStoreFile</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> familyName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.523">removeStoreFile</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> familyName,
org.apache.hadoop.fs.Path filePath)
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">Archives the specified store file from the specified family.</div>
@@ -1366,7 +1366,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>removeStoreFiles</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.532">removeStoreFiles</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> familyName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.535">removeStoreFiles</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> familyName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>> storeFiles)
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">Closes and archives the specified store files from the specified family.</div>
@@ -1385,7 +1385,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>bulkLoadStoreFile</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.549">bulkLoadStoreFile</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> familyName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.552">bulkLoadStoreFile</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> familyName,
org.apache.hadoop.fs.Path srcPath,
long seqNum)
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>
@@ -1410,7 +1410,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getSplitsDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.576">getSplitsDir</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.579">getSplitsDir</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
</li>
</ul>
<a name="cleanupDaughterRegion-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -1419,7 +1419,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>cleanupDaughterRegion</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.585">cleanupDaughterRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.588">cleanupDaughterRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
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">Remove daughter region</div>
<dl>
@@ -1436,7 +1436,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>commitDaughterRegion</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.599">commitDaughterRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.602">commitDaughterRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
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">Commit a daughter region, moving it from the split temporary directory
to the proper location in the filesystem.</div>
@@ -1454,7 +1454,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>createSplitsDir</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.617">createSplitsDir</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterA,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.620">createSplitsDir</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterB)
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">Creates region split daughter directories under the table dir. If the daughter regions already
@@ -1472,7 +1472,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>splitStoreFile</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.650">splitStoreFile</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri,
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.653">splitStoreFile</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri,
<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> familyName,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> f,
byte[] splitRow,
@@ -1504,7 +1504,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getMergesDir</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.706">getMergesDir</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.747">getMergesDir</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
</li>
</ul>
<a name="cleanupMergedRegion-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -1513,7 +1513,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>cleanupMergedRegion</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.716">cleanupMergedRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergedRegion)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.757">cleanupMergedRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergedRegion)
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">Remove merged region</div>
<dl>
@@ -1530,7 +1530,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>mkdirs</h4>
-<pre>static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.723">mkdirs</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.764">mkdirs</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path dir)
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>
@@ -1546,7 +1546,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>mergeStoreFile</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.740">mergeStoreFile</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergingRegion,
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.781">mergeStoreFile</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergingRegion,
<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> familyName,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> f)
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>
@@ -1569,7 +1569,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>commitMergedRegion</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.761">commitMergedRegion</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.802">commitMergedRegion</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>
<div class="block">Commit a merged region, making it ready for use.</div>
<dl>
@@ -1584,7 +1584,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>getRegionInfoFileContent</h4>
-<pre>private static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.780">getRegionInfoFileContent</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)
+<pre>private static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.821">getRegionInfoFileContent</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)
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>
@@ -1602,7 +1602,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>loadRegionInfoFileContent</h4>
-<pre>public static <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.791">loadRegionInfoFileContent</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public static <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.832">loadRegionInfoFileContent</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path regionDir)
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">Create a <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionInfo</code></a> from the serialized version on-disk.</div>
@@ -1623,7 +1623,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>writeRegionInfoFileContent</h4>
-<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.806">writeRegionInfoFileContent</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.847">writeRegionInfoFileContent</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path regionInfoFile,
byte[] content)
@@ -1643,7 +1643,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>checkRegionInfoOnFilesystem</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.820">checkRegionInfoOnFilesystem</a>()
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.861">checkRegionInfoOnFilesystem</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>
<div class="block">Write out an info file under the stored region directory. Useful recovering mangled regions.
If the regionInfo already exists on-disk, then we fast exit.</div>
@@ -1659,7 +1659,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>writeRegionInfoOnFilesystem</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.864">writeRegionInfoOnFilesystem</a>(boolean useTempDir)
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.905">writeRegionInfoOnFilesystem</a>(boolean useTempDir)
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">Write out an info file under the region directory. Useful recovering mangled regions.</div>
<dl>
@@ -1676,7 +1676,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>writeRegionInfoOnFilesystem</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.874">writeRegionInfoOnFilesystem</a>(byte[] regionInfoContent,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.915">writeRegionInfoOnFilesystem</a>(byte[] regionInfoContent,
boolean useTempDir)
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">Write out an info file under the region directory. Useful recovering mangled regions.</div>
@@ -1695,7 +1695,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>createRegionOnFileSystem</h4>
-<pre>public static <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.915">createRegionOnFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.956">createRegionOnFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
@@ -1718,7 +1718,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>openRegionFromFileSystem</h4>
-<pre>public static <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.950">openRegionFromFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.991">openRegionFromFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
@@ -1743,7 +1743,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>deleteRegionFromFileSystem</h4>
-<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.987">deleteRegionFromFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1028">deleteRegionFromFileSystem</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
@@ -1766,7 +1766,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>createDir</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1018">createDir</a>(org.apache.hadoop.fs.Path dir)
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1059">createDir</a>(org.apache.hadoop.fs.Path dir)
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">Creates a directory. Assumes the user has already checked for this directory existence.</div>
<dl>
@@ -1786,7 +1786,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>rename</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1044">rename</a>(org.apache.hadoop.fs.Path srcpath,
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1085">rename</a>(org.apache.hadoop.fs.Path srcpath,
org.apache.hadoop.fs.Path dstPath)
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">Renames a directory. Assumes the user has already checked for this directory existence.</div>
@@ -1807,7 +1807,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>deleteDir</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1071">deleteDir</a>(org.apache.hadoop.fs.Path dir)
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1112">deleteDir</a>(org.apache.hadoop.fs.Path dir)
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">Deletes a directory. Assumes the user has already checked for this directory existence.</div>
<dl>
@@ -1826,7 +1826,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>sleepBeforeRetry</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1095">sleepBeforeRetry</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> msg,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1136">sleepBeforeRetry</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> msg,
int sleepMultiplier)
throws <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>
<div class="block">sleeping logic; handles the interrupt exception.</div>
@@ -1842,7 +1842,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockList">
<li class="blockList">
<h4>createDirOnFileSystem</h4>
-<pre>private static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1109">createDirOnFileSystem</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>private static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1150">createDirOnFileSystem</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path dir)
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>
@@ -1867,7 +1867,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
<ul class="blockListLast">
<li class="blockList">
<h4>sleepBeforeRetry</h4>
-<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1138">sleepBeforeRetry</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> msg,
+<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#line.1179">sleepBeforeRetry</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> msg,
int sleepMultiplier,
int baseSleepBeforeRetries,
int hdfsClientRetriesNumber)
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html
index e6ad9b4..1714a5b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.LimitedPrivate(value="Configuration")
-public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.43">RegionSplitPolicy</a>
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.42">RegionSplitPolicy</a>
extends org.apache.hadoop.conf.Configured</pre>
<div class="block">A split policy determines when a Region should be split.</div>
<dl>
@@ -267,7 +267,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_SPLIT_POLICY_CLASS</h4>
-<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.45">DEFAULT_SPLIT_POLICY_CLASS</a></pre>
+<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.44">DEFAULT_SPLIT_POLICY_CLASS</a></pre>
</li>
</ul>
<a name="region">
@@ -276,7 +276,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>region</h4>
-<pre>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.53">region</a></pre>
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.52">region</a></pre>
<div class="block">The region configured for this split policy.
As of hbase-2.0.0, RegionSplitPolicy can be instantiated on the Master-side so the
Phoenix local-indexer can block default hbase behavior. This is an exotic usage. Should not
@@ -297,7 +297,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>RegionSplitPolicy</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.43">RegionSplitPolicy</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.42">RegionSplitPolicy</a>()</pre>
</li>
</ul>
</li>
@@ -314,7 +314,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>configureForRegion</h4>
-<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.59">configureForRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> region)</pre>
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.58">configureForRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> region)</pre>
<div class="block">Upon construction, this method will be called with the region
to be governed. It will be called once and only once.</div>
</li>
@@ -325,7 +325,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>shouldSplit</h4>
-<pre>protected abstract boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.71">shouldSplit</a>()</pre>
+<pre>protected abstract boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.70">shouldSplit</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the specified region should be split.</dd>
@@ -338,7 +338,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>canSplit</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.76">canSplit</a>()</pre>
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.75">canSplit</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the specified region can be split.</dd>
@@ -351,7 +351,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>getSplitPoint</h4>
-<pre>protected byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.86">getSplitPoint</a>()</pre>
+<pre>protected byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.85">getSplitPoint</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the key at which the region should be split, or null
@@ -366,7 +366,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
-<pre>public static <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.111">create</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> region,
+<pre>public static <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.110">create</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> region,
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">Create the RegionSplitPolicy configured for the given table.</div>
@@ -387,7 +387,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockList">
<li class="blockList">
<h4>getSplitPolicyClass</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.121">getSplitPolicyClass</a>(<a href="../../../ [...]
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.120">getSplitPolicyClass</a>(<a href="../../../ [...]
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>
@@ -402,7 +402,7 @@ extends org.apache.hadoop.conf.Configured</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>skipStoreFileRangeCheck</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.157">skipStoreFileRangeCheck</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> familyName)</pre>
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html#line.156">skipStoreFileRangeCheck</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> familyName)</pre>
<div class="block">In <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#splitStoreFile-org.apache.hadoop.hbase.client.RegionInfo-java.lang.String-org.apache.hadoop.hbase.regionserver.HStoreFile-byte:A-boolean-org.apache.hadoop.hbase.regionserver.RegionSplitPolicy-"><code>HRegionFileSystem.splitStoreFile(org.apache.hadoop.hbase.client.RegionInfo, String,
HStoreFile, byte[], boolean, RegionSplitPolicy)</code></a> we are not creating the split reference
if split row does not lie inside the StoreFile range. But in some use cases we may need to
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 216e781..76c98f3 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -742,20 +742,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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</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 7a0e3f9..c9a6517 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -131,8 +131,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.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>
+<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>
</ul>
</li>
</ul>
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 22b9c7a..ccf1fa8 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/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/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/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/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/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</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 54690cc..aee57ad 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -162,11 +162,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.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.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/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.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/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/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/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
</ul>
</li>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index 91d2190..7d6c122 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/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/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/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 fba9877..efb292e 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -211,8 +211,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.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/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/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>
</ul>
</li>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html
index 28324cb..455da1a 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1086">FSUtils.HFileFilter</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1123">FSUtils.HFileFilter</a>
extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusFilter.html" title="class in org.apache.hadoop.hbase.util">AbstractFileStatusFilter</a></pre>
<div class="block">Filter for HFiles that excludes reference files.</div>
</li>
@@ -221,7 +221,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
<ul class="blockListLast">
<li class="blockList">
<h4>fs</h4>
-<pre>final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#line.1087">fs</a></pre>
+<pre>final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#line.1124">fs</a></pre>
</li>
</ul>
</li>
@@ -238,7 +238,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
<ul class="blockListLast">
<li class="blockList">
<h4>HFileFilter</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#line.1089">HFileFilter</a>(org.apache.hadoop.fs.FileSystem fs)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#line.1126">HFileFilter</a>(org.apache.hadoop.fs.FileSystem fs)</pre>
</li>
</ul>
</li>
@@ -255,7 +255,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
<ul class="blockListLast">
<li class="blockList">
<h4>accept</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#line.1094">accept</a>(org.apache.hadoop.fs.Path p,
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html#line.1131">accept</a>(org.apache.hadoop.fs.Path p,
@CheckForNull
<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> isDir)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusFilter.html#accept-org.apache.hadoop.fs.Path-java.lang.Boolean-">AbstractFileStatusFilter</a></code></span></div>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html
index cfdc0e3..89c8878 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1113">FSUtils.HFileLinkFilter</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1150">FSUtils.HFileLinkFilter</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 org.apache.hadoop.fs.PathFilter</pre>
<div class="block">Filter for HFileLinks (StoreFiles and HFiles not included).
@@ -189,7 +189,7 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>HFileLinkFilter</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#line.1113">HFileLinkFilter</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#line.1150">HFileLinkFilter</a>()</pre>
</li>
</ul>
</li>
@@ -206,7 +206,7 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>accept</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#line.1116">accept</a>(org.apache.hadoop.fs.Path p)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#line.1153">accept</a>(org.apache.hadoop.fs.Path p)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>accept</code> in interface <code>org.apache.hadoop.fs.PathFilter</code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html
index 320c154..5ee8c96 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" target="_top">Frames</a></li>
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1150">FSUtils.ProgressReporter</a></pre>
+<pre>static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1187">FSUtils.ProgressReporter</a></pre>
<div class="block">Called every so-often by storefile map builder getTableStoreFilePathMap to
report progress.</div>
</li>
@@ -151,7 +151,7 @@ var activeTableTab = "activeTableTab";
<ul class="blockListLast">
<li class="blockList">
<h4>progress</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html#line.1154">progress</a>(org.apache.hadoop.fs.FileStatus status)</pre>
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html#line.1191">progress</a>(org.apache.hadoop.fs.FileStatus status)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>status</code> - File or directory we are about to process.</dd>
@@ -187,7 +187,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" target="_top">Frames</a></li>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html
similarity index 74%
copy from devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html
copy to devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html
index cfdc0e3..bde5032 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html
@@ -4,7 +4,7 @@
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>FSUtils.HFileLinkFilter (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
+<title>FSUtils.ReferenceAndLinkFileFilter (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>
@@ -12,7 +12,7 @@
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
- parent.document.title="FSUtils.HFileLinkFilter (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
+ parent.document.title="FSUtils.ReferenceAndLinkFileFilter (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
@@ -40,7 +40,7 @@ var activeTableTab = "activeTableTab";
<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/FSUtils.HFileLinkFilter.html">Use</a></li>
+<li><a href="class-use/FSUtils.ReferenceAndLinkFileFilter.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>
@@ -49,12 +49,12 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" target="_top">Frames</a></li>
-<li><a href="FSUtils.HFileLinkFilter.html" target="_top">No Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" target="_top">Frames</a></li>
+<li><a href="FSUtils.ReferenceAndLinkFileFilter.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>
@@ -75,13 +75,13 @@ var activeTableTab = "activeTableTab";
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
-<li>Field | </li>
+<li><a href="#field.summary">Field</a> | </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="#field.detail">Field</a> | </li>
<li><a href="#constructor.detail">Constr</a> | </li>
<li><a href="#method.detail">Method</a></li>
</ul>
@@ -93,14 +93,14 @@ var activeTableTab = "activeTableTab";
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.hbase.util</div>
-<h2 title="Class FSUtils.HFileLinkFilter" class="title">Class FSUtils.HFileLinkFilter</h2>
+<h2 title="Class FSUtils.ReferenceAndLinkFileFilter" class="title">Class FSUtils.ReferenceAndLinkFileFilter</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.util.FSUtils.HFileLinkFilter</li>
+<li>org.apache.hadoop.hbase.util.FSUtils.ReferenceAndLinkFileFilter</li>
</ul>
</li>
</ul>
@@ -117,17 +117,34 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1113">FSUtils.HFileLinkFilter</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1098">FSUtils.ReferenceAndLinkFileFilter</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 org.apache.hadoop.fs.PathFilter</pre>
-<div class="block">Filter for HFileLinks (StoreFiles and HFiles not included).
- the filter itself does not consider if a link is file or not.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!-- -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.fs.FileSystem</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#fs">fs</a></span></code> </td>
+</tr>
+</table>
+</li>
+</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
@@ -140,7 +157,7 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<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/util/FSUtils.HFileLinkFilter.html#HFileLinkFilter--">HFileLinkFilter</a></span>()</code> </td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#ReferenceAndLinkFileFilter-org.apache.hadoop.fs.FileSystem-">ReferenceAndLinkFileFilter</a></span>(org.apache.hadoop.fs.FileSystem fs)</code> </td>
</tr>
</table>
</li>
@@ -159,7 +176,7 @@ implements org.apache.hadoop.fs.PathFilter</pre>
</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/util/FSUtils.HFileLinkFilter.html#accept-org.apache.hadoop.fs.Path-">accept</a></span>(org.apache.hadoop.fs.Path p)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#accept-org.apache.hadoop.fs.Path-">accept</a></span>(org.apache.hadoop.fs.Path rd)</code> </td>
</tr>
</table>
<ul class="blockList">
@@ -177,19 +194,36 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<div class="details">
<ul class="blockList">
<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!-- -->
+</a>
+<h3>Field Detail</h3>
+<a name="fs">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>fs</h4>
+<pre>private final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#line.1100">fs</a></pre>
+</li>
+</ul>
+</li>
+</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
-<a name="HFileLinkFilter--">
+<a name="ReferenceAndLinkFileFilter-org.apache.hadoop.fs.FileSystem-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
-<h4>HFileLinkFilter</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#line.1113">HFileLinkFilter</a>()</pre>
+<h4>ReferenceAndLinkFileFilter</h4>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#line.1102">ReferenceAndLinkFileFilter</a>(org.apache.hadoop.fs.FileSystem fs)</pre>
</li>
</ul>
</li>
@@ -206,7 +240,7 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>accept</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html#line.1116">accept</a>(org.apache.hadoop.fs.Path p)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html#line.1107">accept</a>(org.apache.hadoop.fs.Path rd)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>accept</code> in interface <code>org.apache.hadoop.fs.PathFilter</code></dd>
@@ -232,7 +266,7 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<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/FSUtils.HFileLinkFilter.html">Use</a></li>
+<li><a href="class-use/FSUtils.ReferenceAndLinkFileFilter.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>
@@ -241,12 +275,12 @@ implements org.apache.hadoop.fs.PathFilter</pre>
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.HFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" target="_top">Frames</a></li>
-<li><a href="FSUtils.HFileLinkFilter.html" target="_top">No Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" target="_top">Frames</a></li>
+<li><a href="FSUtils.ReferenceAndLinkFileFilter.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>
@@ -267,13 +301,13 @@ implements org.apache.hadoop.fs.PathFilter</pre>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
-<li>Field | </li>
+<li><a href="#field.summary">Field</a> | </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="#field.detail">Field</a> | </li>
<li><a href="#constructor.detail">Constr</a> | </li>
<li><a href="#method.detail">Method</a></li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html
index 3bac040..444e333 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1121">FSUtils.ReferenceFileFilter</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1158">FSUtils.ReferenceFileFilter</a>
extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusFilter.html" title="class in org.apache.hadoop.hbase.util">AbstractFileStatusFilter</a></pre>
</li>
</ul>
@@ -220,7 +220,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
<ul class="blockListLast">
<li class="blockList">
<h4>fs</h4>
-<pre>private final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#line.1123">fs</a></pre>
+<pre>private final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#line.1160">fs</a></pre>
</li>
</ul>
</li>
@@ -237,7 +237,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
<ul class="blockListLast">
<li class="blockList">
<h4>ReferenceFileFilter</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#line.1125">ReferenceFileFilter</a>(org.apache.hadoop.fs.FileSystem fs)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#line.1162">ReferenceFileFilter</a>(org.apache.hadoop.fs.FileSystem fs)</pre>
</li>
</ul>
</li>
@@ -254,7 +254,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
<ul class="blockListLast">
<li class="blockList">
<h4>accept</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#line.1130">accept</a>(org.apache.hadoop.fs.Path p,
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html#line.1167">accept</a>(org.apache.hadoop.fs.Path p,
@CheckForNull
<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> isDir)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusFilter.html#accept-org.apache.hadoop.fs.Path-java.lang.Boolean-">AbstractFileStatusFilter</a></code></span></div>
@@ -299,7 +299,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/AbstractFileStatusF
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ProgressReporter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.html b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.html
index a47966c..d73d55a 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FSUtils.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FSUtils.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":41,"i34":9,"i35":9,"i36":41,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":41,"i37":9,"i38":9,"i39":41,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -176,15 +176,19 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceAndLinkFileFilter</a></span></code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.RegionDirFilter</a></span></code>
<div class="block">Filter for all dirs that don't start with '.'</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>static class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.UserTableDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.UserTableDirFilter</a></span></code>
<div class="block">A <code>PathFilter</code> that returns usertable directories.</div>
@@ -386,21 +390,32 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</td>
</tr>
<tr id="i17" class="rowColor">
+<td class="colFirst"><code>private static <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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.PathFilter-">getFilePaths</a></span>(org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path dir,
+ org.apache.hadoop.fs.PathFilter pathFilter)</code> </td>
+</tr>
+<tr id="i18" class="altColor">
<td class="colFirst"><code>static <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getLocalTableDirs-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getLocalTableDirs</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir)</code> </td>
</tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getNNAddresses-org.apache.hadoop.hdfs.DistributedFileSystem-org.apache.hadoop.conf.Configuration-">getNNAddresses</a></span>(org.apache.hadoop.hdfs.DistributedFileSystem fs,
org.apache.hadoop.conf.Configuration conf)</code> </td>
</tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>static <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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getReferenceAndLinkFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getReferenceAndLinkFilePaths</a></span>(org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path familyDir)</code> </td>
+</tr>
+<tr id="i21" class="rowColor">
<td class="colFirst"><code>static <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getReferenceFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getReferenceFilePaths</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path familyDir)</code> </td>
</tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javas [...]
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionDegreeLocalityMappingFromFS-org.apache.hadoop.conf.Configuration-">getRegionDegreeLocalityMappingFromFS</a></span>(org.apache.hadoop.conf.Configuration conf)</code>
<div class="block">This function is to scan the root path of the file system to get the
@@ -408,7 +423,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
one block of that region.</div>
</td>
</tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javas [...]
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionDegreeLocalityMappingFromFS-org.apache.hadoop.conf.Configuration-java.lang.String-int-">getRegionDegreeLocalityMappingFromFS</a></span>(org.apache.hadoop.conf.Configuration conf,
<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> desiredTable,
@@ -418,22 +433,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
one block of that region.</div>
</td>
</tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionDirFromRootDir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">getRegionDirFromRootDir</a></span>(org.apache.hadoop.fs.Path rootDir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)</code> </td>
</tr>
-<tr id="i23" class="rowColor">
+<tr id="i25" class="rowColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionDirFromTableDir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">getRegionDirFromTableDir</a></span>(org.apache.hadoop.fs.Path tableDir,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)</code> </td>
</tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
<td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionDirFromTableDir-org.apache.hadoop.fs.Path-java.lang.String-">getRegionDirFromTableDir</a></span>(org.apache.hadoop.fs.Path tableDir,
<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> encodedRegionName)</code> </td>
</tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
<td class="colFirst"><code>static <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionDirs-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getRegionDirs</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir)</code>
@@ -441,7 +456,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
.tableinfo</div>
</td>
</tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionLocalityMappingFromFS-org.apache.hadoop.conf.Configuration-java.lang.String-int-java.util.Map-">getRegionLocalityMappingFromFS</a></span>(org.apache.hadoop.conf.Configuration conf,
<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> desiredTable,
@@ -453,17 +468,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
one block of that region.</div>
</td>
</tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionReferenceAndLinkFileCount-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getRegionReferenceAndLinkFileCount</a></span>(org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path p)</code> </td>
+</tr>
+<tr id="i30" class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getRegionReferenceFileCount-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getRegionReferenceFileCount</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path p)</code> </td>
</tr>
-<tr id="i28" class="altColor">
+<tr id="i31" class="rowColor">
<td class="colFirst"><code>static <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableDirs-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getTableDirs</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir)</code> </td>
</tr>
-<tr id="i29" class="rowColor">
+<tr id="i32" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableFragmentation-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getTableFragmentation</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir)</code>
@@ -471,14 +491,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
have more than one file in them.</div>
</td>
</tr>
-<tr id="i30" class="altColor">
+<tr id="i33" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableFragmentation-org.apache.hadoop.hbase.master.HMaster-">getTableFragmentation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> master)</code>
<div class="block">Runs through the HBase rootdir and checks how many stores for each table
have more than one file in them.</div>
</td>
</tr>
-<tr id="i31" class="rowColor">
+<tr id="i34" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableStoreFilePathMap-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getTableStoreFilePathMap</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir)</code>
@@ -486,7 +506,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
table StoreFile names to the full Path.</div>
</td>
</tr>
-<tr id="i32" class="altColor">
+<tr id="i35" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableStoreFilePathMap-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.PathFilter-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.util.FSUtils.ProgressReporter-">getTableStoreFilePathMap</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
@@ -497,7 +517,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
table StoreFile names to the full Path.</div>
</td>
</tr>
-<tr id="i33" class="rowColor">
+<tr id="i36" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableStoreFilePathMap-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.PathFilter-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.util.HbckErrorReporter-">getTableStoreFilePathMap</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
@@ -509,7 +529,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</div>
</td>
</tr>
-<tr id="i34" class="altColor">
+<tr id="i37" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableStoreFilePathMap-java.util.Map-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-">getTableStoreFilePathMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/St [...]
org.apache.hadoop.fs.FileSystem fs,
@@ -519,7 +539,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
table StoreFile names to the full Path.</div>
</td>
</tr>
-<tr id="i35" class="rowColor">
+<tr id="i38" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableStoreFilePathMap-java.util.Map-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.PathFilter-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.util.FSUtils.ProgressReporter-">getTableStoreFilePathMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-extern [...]
org.apache.hadoop.fs.FileSystem fs,
@@ -532,7 +552,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
table StoreFile names to the full Path.</div>
</td>
</tr>
-<tr id="i36" class="altColor">
+<tr id="i39" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTableStoreFilePathMap-java.util.Map-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.PathFilter-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.util.HbckErrorReporter-">getTableStoreFilePathMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true [...]
org.apache.hadoop.fs.FileSystem fs,
@@ -546,43 +566,43 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</div>
</td>
</tr>
-<tr id="i37" class="rowColor">
+<tr id="i40" class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#getTotalTableFragmentation-org.apache.hadoop.hbase.master.HMaster-">getTotalTableFragmentation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> master)</code>
<div class="block">Returns the total overall fragmentation percentage.</div>
</td>
</tr>
-<tr id="i38" class="altColor">
+<tr id="i41" class="rowColor">
<td class="colFirst"><code>static <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/util/FSUtils.html#getVersion-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getVersion</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir)</code>
<div class="block">Verifies current version of file system</div>
</td>
</tr>
-<tr id="i39" class="rowColor">
+<tr id="i42" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#isDistributedFileSystem-org.apache.hadoop.fs.FileSystem-">isDistributedFileSystem</a></span>(org.apache.hadoop.fs.FileSystem fs)</code> </td>
</tr>
-<tr id="i40" class="altColor">
+<tr id="i43" class="rowColor">
<td class="colFirst"><code>private static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#isInSafeMode-org.apache.hadoop.hdfs.DistributedFileSystem-">isInSafeMode</a></span>(org.apache.hadoop.hdfs.DistributedFileSystem dfs)</code>
<div class="block">Inquire the Active NameNode's safe mode status.</div>
</td>
</tr>
-<tr id="i41" class="rowColor">
+<tr id="i44" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#isMatchingTail-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">isMatchingTail</a></span>(org.apache.hadoop.fs.Path pathToSearch,
org.apache.hadoop.fs.Path pathTail)</code>
<div class="block">Compare path component of the Path URI; e.g.</div>
</td>
</tr>
-<tr id="i42" class="altColor">
+<tr id="i45" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#isSameHdfs-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.FileSystem-">isSameHdfs</a></span>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem srcFs,
org.apache.hadoop.fs.FileSystem desFs)</code> </td>
</tr>
-<tr id="i43" class="rowColor">
+<tr id="i46" class="altColor">
<td class="colFirst"><code>static <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.FileStatus></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#listStatusWithStatusFilter-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.util.FileStatusFilter-">listStatusWithStatusFilter</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dir,
@@ -593,33 +613,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
while Hadoop 2 will throw FileNotFoundException.</div>
</td>
</tr>
-<tr id="i44" class="altColor">
+<tr id="i47" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#metaRegionExists-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">metaRegionExists</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootDir)</code>
<div class="block">Checks if meta region exists</div>
</td>
</tr>
-<tr id="i45" class="rowColor">
+<tr id="i48" class="altColor">
<td class="colFirst"><code>(package private) static <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/util/FSUtils.html#parseVersionFrom-byte:A-">parseVersionFrom</a></span>(byte[] bytes)</code>
<div class="block">Parse the content of the ${HBASE_ROOTDIR}/hbase.version file.</div>
</td>
</tr>
-<tr id="i46" class="altColor">
+<tr id="i49" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#renameFile-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">renameFile</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path src,
org.apache.hadoop.fs.Path dst)</code> </td>
</tr>
-<tr id="i47" class="rowColor">
+<tr id="i50" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#rewriteAsPb-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.ClusterId-">rewriteAsPb</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir,
org.apache.hadoop.fs.Path p,
<a href="../../../../../org/apache/hadoop/hbase/ClusterId.html" title="class in org.apache.hadoop.hbase">ClusterId</a> cid)</code> </td>
</tr>
-<tr id="i48" class="altColor">
+<tr id="i51" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#setClusterId-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.ClusterId-long-">setClusterId</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir,
@@ -629,20 +649,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
directory.</div>
</td>
</tr>
-<tr id="i49" class="rowColor">
+<tr id="i52" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#setupShortCircuitRead-org.apache.hadoop.conf.Configuration-">setupShortCircuitRead</a></span>(org.apache.hadoop.conf.Configuration conf)</code>
<div class="block">Do our short circuit read setup.</div>
</td>
</tr>
-<tr id="i50" class="altColor">
+<tr id="i53" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#setVersion-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">setVersion</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir)</code>
<div class="block">Sets version of file system</div>
</td>
</tr>
-<tr id="i51" class="rowColor">
+<tr id="i54" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#setVersion-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-int-int-">setVersion</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir,
@@ -651,7 +671,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<div class="block">Sets version of file system</div>
</td>
</tr>
-<tr id="i52" class="altColor">
+<tr id="i55" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#setVersion-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-int-int-">setVersion</a></span>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir,
@@ -661,13 +681,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<div class="block">Sets version of file system</div>
</td>
</tr>
-<tr id="i53" class="rowColor">
+<tr id="i56" class="altColor">
<td class="colFirst"><code>(package private) static byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#toVersionByteArray-java.lang.String-">toVersionByteArray</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> version)</code>
<div class="block">Create the content to write into the ${HBASE_ROOTDIR}/hbase.version file.</div>
</td>
</tr>
-<tr id="i54" class="altColor">
+<tr id="i57" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html#waitOnSafeMode-org.apache.hadoop.conf.Configuration-long-">waitOnSafeMode</a></span>(org.apache.hadoop.conf.Configuration conf,
long wait)</code>
@@ -1451,7 +1471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getReferenceFilePaths</h4>
-<pre>public static <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/util/FSUtils.html#line.1070">getReferenceFilePaths</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public static <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/util/FSUtils.html#line.1065">getReferenceFilePaths</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path familyDir)
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>
@@ -1460,13 +1480,54 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
+<a name="getReferenceAndLinkFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReferenceAndLinkFilePaths</h4>
+<pre>public static <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/util/FSUtils.html#line.1070">getReferenceAndLinkFilePaths</a>(org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path familyDir)
+ 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>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getFilePaths-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.PathFilter-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFilePaths</h4>
+<pre>private static <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/util/FSUtils.html#line.1075">getFilePaths</a>(org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path dir,
+ org.apache.hadoop.fs.PathFilter pathFilter)
+ 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>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getRegionReferenceAndLinkFileCount-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRegionReferenceAndLinkFileCount</h4>
+<pre>public static int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1086">getRegionReferenceAndLinkFileCount</a>(org.apache.hadoop.fs.FileSystem fs,
+ org.apache.hadoop.fs.Path p)</pre>
+</li>
+</ul>
<a name="getTableStoreFilePathMap-java.util.Map-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTableStoreFilePathMap</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1173">getTableStoreFilePathMap</a>(<a href="https://docs.oracle.com/java [...]
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1210">getTableStoreFilePathMap</a>(<a href="https://docs.oracle.com/java [...]
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
@@ -1499,7 +1560,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<li class="blockList">
<h4>getTableStoreFilePathMap</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="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1204">getTableStoreFilePathMap</a>(<a href="https://docs.oracle.com/javase/8/ [...]
+public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1241">getTableStoreFilePathMap</a>(<a href="https://docs.oracle.com/javase/8/ [...]
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
@@ -1542,7 +1603,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getTableStoreFilePathMap</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1242">getTableStoreFilePathMap</a>(<a href="https://docs.oracle.com/java [...]
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1279">getTableStoreFilePathMap</a>(<a href="https://docs.oracle.com/java [...]
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
@@ -1585,7 +1646,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getRegionReferenceFileCount</h4>
-<pre>public static int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1357">getRegionReferenceFileCount</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public static int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1394">getRegionReferenceFileCount</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path p)</pre>
</li>
</ul>
@@ -1595,7 +1656,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getTableStoreFilePathMap</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1382">getTableStoreFilePathMap</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1419">getTableStoreFilePathMap</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir)
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>
@@ -1624,7 +1685,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<li class="blockList">
<h4>getTableStoreFilePathMap</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="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1408">getTableStoreFilePathMap</a>(org.apache.hadoop.fs.FileSystem fs,
+public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1445">getTableStoreFilePathMap</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
org.apache.hadoop.fs.PathFilter sfFilter,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> executor,
@@ -1660,7 +1721,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getTableStoreFilePathMap</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1440">getTableStoreFilePathMap</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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>,org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1477">getTableStoreFilePathMap</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path hbaseRootDir,
org.apache.hadoop.fs.PathFilter sfFilter,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> executor,
@@ -1695,7 +1756,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>filterFileStatuses</h4>
-<pre>public static <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.FileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1464">filterFileStatuses</a>(org.apache.hadoop.fs.FileStatus[] input,
+<pre>public static <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.FileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1501">filterFileStatuses</a>(org.apache.hadoop.fs.FileStatus[] input,
<a href="../../../../../org/apache/hadoop/hbase/util/FileStatusFilter.html" title="interface in org.apache.hadoop.hbase.util">FileStatusFilter</a> filter)</pre>
<div class="block">Filters FileStatuses in an array and returns a list</div>
<dl>
@@ -1713,7 +1774,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>filterFileStatuses</h4>
-<pre>public static <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.FileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1477">filterFileStatuses</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a><org.apache.hadoop.fs.FileSta [...]
+<pre>public static <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.FileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1514">filterFileStatuses</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a><org.apache.hadoop.fs.FileSta [...]
<a href="../../../../../org/apache/hadoop/hbase/util/FileStatusFilter.html" title="interface in org.apache.hadoop.hbase.util">FileStatusFilter</a> filter)</pre>
<div class="block">Filters FileStatuses in an iterator and returns a list</div>
<dl>
@@ -1731,7 +1792,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>listStatusWithStatusFilter</h4>
-<pre>public static <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.FileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1501">listStatusWithStatusFilter</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public static <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.FileStatus> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1538">listStatusWithStatusFilter</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path dir,
<a href="../../../../../org/apache/hadoop/hbase/util/FileStatusFilter.html" title="interface in org.apache.hadoop.hbase.util">FileStatusFilter</a> filter)
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>
@@ -1757,7 +1818,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getRegionDegreeLocalityMappingFromFS</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/a [...]
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/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>
<div class="block">This function is to scan the root path of the file system to get the
degree of locality for each region on each of the servers having at least
@@ -1780,7 +1841,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getRegionDegreeLocalityMappingFromFS</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/a [...]
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/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> desiredTable,
int threadPoolSize)
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>
@@ -1806,7 +1867,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getRegionLocalityMappingFromFS</h4>
-<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1590">getRegionLocalityMappingFromFS</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1627">getRegionLocalityMappingFromFS</a>(org.apache.hadoop.conf.Configuration conf,
<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> desiredTable,
int threadPoolSize,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</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.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs [...]
@@ -1833,7 +1894,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>setupShortCircuitRead</h4>
-<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1692">setupShortCircuitRead</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1729">setupShortCircuitRead</a>(org.apache.hadoop.conf.Configuration conf)</pre>
<div class="block">Do our short circuit read setup.
Checks buffer size to use and whether to do checksumming in hbase or hdfs.</div>
<dl>
@@ -1848,7 +1909,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>checkShortCircuitReadBufferSize</h4>
-<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1710">checkShortCircuitReadBufferSize</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1747">checkShortCircuitReadBufferSize</a>(org.apache.hadoop.conf.Configuration conf)</pre>
<div class="block">Check if short circuit read buffer size is set and if not, set it to hbase value.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1862,7 +1923,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getDFSHedgedReadMetrics</h4>
-<pre>public static org.apache.hadoop.hdfs.DFSHedgedReadMetrics <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1728">getDFSHedgedReadMetrics</a>(org.apache.hadoop.conf.Configuration c)
+<pre>public static org.apache.hadoop.hdfs.DFSHedgedReadMetrics <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1765">getDFSHedgedReadMetrics</a>(org.apache.hadoop.conf.Configuration c)
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>
@@ -1880,7 +1941,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>copyFilesParallel</h4>
-<pre>public static <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/util/FSUtils.html#line.1760">copyFilesParallel</a>(org.apache.hadoop.fs.FileSystem srcFS,
+<pre>public static <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/util/FSUtils.html#line.1797">copyFilesParallel</a>(org.apache.hadoop.fs.FileSystem srcFS,
org.apache.hadoop.fs.Path src,
org.apache.hadoop.fs.FileSystem dstFS,
org.apache.hadoop.fs.Path dst,
@@ -1899,7 +1960,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>copyFiles</h4>
-<pre>private static <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/util/FSUtils.html#line.1778">copyFiles</a>(org.apache.hadoop.fs.FileSystem srcFS,
+<pre>private static <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/util/FSUtils.html#line.1815">copyFiles</a>(org.apache.hadoop.fs.FileSystem srcFS,
org.apache.hadoop.fs.Path src,
org.apache.hadoop.fs.FileSystem dstFS,
org.apache.hadoop.fs.Path dst,
@@ -1919,7 +1980,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockList">
<li class="blockList">
<h4>getNNAddresses</h4>
-<pre>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1805">getNNAddresses</a>(org.apache.hadoop.hdfs.DistributedFileSystem fs,
+<pre>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1842">getNNAddresses</a>(org.apache.hadoop.hdfs.DistributedFileSystem fs,
org.apache.hadoop.conf.Configuration conf)</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1933,7 +1994,7 @@ public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/
<ul class="blockListLast">
<li class="blockList">
<h4>isSameHdfs</h4>
-<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1843">isSameHdfs</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FSUtils.html#line.1880">isSameHdfs</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem srcFs,
org.apache.hadoop.fs.FileSystem desFs)</pre>
<dl>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/FSUtils.ReferenceAndLinkFileFilter.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/FSUtils.ReferenceAndLinkFileFilter.html
new file mode 100644
index 0000000..93e1e40
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/FSUtils.ReferenceAndLinkFileFilter.html
@@ -0,0 +1,125 @@
+<!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.util.FSUtils.ReferenceAndLinkFileFilter (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.util.FSUtils.ReferenceAndLinkFileFilter (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/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-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/util/class-use/FSUtils.ReferenceAndLinkFileFilter.html" target="_top">Frames</a></li>
+<li><a href="FSUtils.ReferenceAndLinkFileFilter.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.util.FSUtils.ReferenceAndLinkFileFilter" class="title">Uses of Class<br>org.apache.hadoop.hbase.util.FSUtils.ReferenceAndLinkFileFilter</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.util.FSUtils.ReferenceAndLinkFileFilter</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/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-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/util/class-use/FSUtils.ReferenceAndLinkFileFilter.html" target="_top">Frames</a></li>
+<li><a href="FSUtils.ReferenceAndLinkFileFilter.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/devapidocs/org/apache/hadoop/hbase/util/package-frame.html b/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
index df95d87..4c388df 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
@@ -117,6 +117,7 @@
<li><a href="FSUtils.FileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.FileFilter</a></li>
<li><a href="FSUtils.HFileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.HFileFilter</a></li>
<li><a href="FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.HFileLinkFilter</a></li>
+<li><a href="FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.ReferenceAndLinkFileFilter</a></li>
<li><a href="FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.ReferenceFileFilter</a></li>
<li><a href="FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.RegionDirFilter</a></li>
<li><a href="FSUtils.UserTableDirFilter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">FSUtils.UserTableDirFilter</a></li>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-summary.html b/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
index 7eba6ff..1d7a79e 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
@@ -674,222 +674,226 @@
</td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceAndLinkFileFilter</a></td>
<td class="colLast"> </td>
</tr>
<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceFileFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.ReferenceFileFilter</a></td>
+<td class="colLast"> </td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.RegionDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.RegionDirFilter</a></td>
<td class="colLast">
<div class="block">Filter for all dirs that don't start with '.'</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.UserTableDirFilter.html" title="class in org.apache.hadoop.hbase.util">FSUtils.UserTableDirFilter</a></td>
<td class="colLast">
<div class="block">A <code>PathFilter</code> that returns usertable directories.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FSVisitor.html" title="class in org.apache.hadoop.hbase.util">FSVisitor</a></td>
<td class="colLast">
<div class="block">Utility methods for interacting with the hbase.root file system.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/FutureUtils.html" title="class in org.apache.hadoop.hbase.util">FutureUtils</a></td>
<td class="colLast">
<div class="block">Helper class for processing futures.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/GetJavaProperty.html" title="class in org.apache.hadoop.hbase.util">GetJavaProperty</a></td>
<td class="colLast">
<div class="block">A generic way for querying Java properties.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/GsonUtil.html" title="class in org.apache.hadoop.hbase.util">GsonUtil</a></td>
<td class="colLast">
<div class="block">Helper class for gson.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a></td>
<td class="colLast">
<div class="block">This class represents a common API for hashing functions.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a></td>
<td class="colLast">
<div class="block">This class encapsulates a byte array and overrides hashCode and equals so
that it's identity is based on the data rather than the array instance.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HashKey.html" title="class in org.apache.hadoop.hbase.util">HashKey</a><T></td>
<td class="colLast">
<div class="block">Used to calculate the hash <a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util"><code>Hash</code></a> algorithms for Bloomfilters.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseConfTool.html" title="class in org.apache.hadoop.hbase.util">HBaseConfTool</a></td>
<td class="colLast">
<div class="block">Tool that prints out a configuration.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">For removal in hbase-4.0.0.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.FileLockCallable.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.FileLockCallable</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.HBaseFsckTool.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.HBaseFsckTool</a></td>
<td class="colLast">
<div class="block">This is a Tool wrapper that gathers -Dxxx=yyy configuration settings from the command line.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.PrintingErrorReporter.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.PrintingErrorReporter</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.RegionBoundariesInformation.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.RegionBoundariesInformation</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.WorkItemHdfsRegionInfo.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.WorkItemHdfsRegionInfo</a></td>
<td class="colLast">
<div class="block">Contact hdfs and get all information about specified table directory into
regioninfo list.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.WorkItemOverlapMerge.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.WorkItemOverlapMerge</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.WorkItemRegion.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.WorkItemRegion</a></td>
<td class="colLast">
<div class="block">Contact a region server and get all information from it</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsckRepair.html" title="class in org.apache.hadoop.hbase.util">HBaseFsckRepair</a></td>
<td class="colLast">
<div class="block">This class contains helper methods that repair parts of hbase's filesystem
contents.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HbckRegionInfo.html" title="class in org.apache.hadoop.hbase.util">HbckRegionInfo</a></td>
<td class="colLast">
<div class="block">Maintain information about a particular region.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HbckRegionInfo.HdfsEntry.html" title="class in org.apache.hadoop.hbase.util">HbckRegionInfo.HdfsEntry</a></td>
<td class="colLast">
<div class="block">Stores the regioninfo entries from HDFS</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HbckRegionInfo.MetaEntry.html" title="class in org.apache.hadoop.hbase.util">HbckRegionInfo.MetaEntry</a></td>
<td class="colLast">
<div class="block">Stores the regioninfo entries scanned from META</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HbckRegionInfo.OnlineEntry.html" title="class in org.apache.hadoop.hbase.util">HbckRegionInfo.OnlineEntry</a></td>
<td class="colLast">
<div class="block">Stores the regioninfo retrieved from Online region servers.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HbckTableInfo.html" title="class in org.apache.hadoop.hbase.util">HbckTableInfo</a></td>
<td class="colLast">
<div class="block">Maintain information about a particular table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/HFileArchiveUtil.html" title="class in org.apache.hadoop.hbase.util">HFileArchiveUtil</a></td>
<td class="colLast">
<div class="block">Helper class for all utilities related to archival/retrieval of HFiles</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a></td>
<td class="colLast">
<div class="block">Allows multiple concurrent clients to lock on a numeric id with a minimal
memory overhead.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/IdLock.Entry.html" title="class in org.apache.hadoop.hbase.util">IdLock.Entry</a></td>
<td class="colLast">
<div class="block">An entry returned to the client as a lock object</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.html" title="class in org.apache.hadoop.hbase.util">IdReadWriteLock</a><T></td>
<td class="colLast">
<div class="block">Allows multiple concurrent clients to lock on a numeric id with ReentrantReadWriteLock.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLockStrongRef.html" title="class in org.apache.hadoop.hbase.util">IdReadWriteLockStrongRef</a><T></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLockWithObjectPool.html" title="class in org.apache.hadoop.hbase.util">IdReadWriteLockWithObjectPool</a><T></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ImmutableByteArray.html" title="class in org.apache.hadoop.hbase.util">ImmutableByteArray</a></td>
<td class="colLast">
<div class="block">Mainly used as keys for HashMap.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/IncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">IncrementingEnvironmentEdge</a></td>
<td class="colLast">
<div class="block">Uses an incrementing algorithm instead of the default.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JenkinsHash.html" title="class in org.apache.hadoop.hbase.util">JenkinsHash</a></td>
<td class="colLast">
<div class="block">Produces 32-bit hash for hash table lookup.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JRubyFormat.html" title="class in org.apache.hadoop.hbase.util">JRubyFormat</a></td>
<td class="colLast">
<div class="block">Utility class for converting objects to JRuby.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JSONBean.html" title="class in org.apache.hadoop.hbase.util">JSONBean</a></td>
<td class="colLast">
<div class="block">Utility for doing JSON and MBeans.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JsonMapper.html" title="class in org.apache.hadoop.hbase.util">JsonMapper</a></td>
<td class="colLast">
<div class="block">Utility class for converting objects to JSON</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JSONMetricUtil.html" title="class in org.apache.hadoop.hbase.util">JSONMetricUtil</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JVM.html" title="class in org.apache.hadoop.hbase.util">JVM</a></td>
<td class="colLast">
<div class="block">This class is a wrapper for the implementation of
@@ -898,110 +902,110 @@
depending on the runtime (vendor) used.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JVMClusterUtil.html" title="class in org.apache.hadoop.hbase.util">JVMClusterUtil</a></td>
<td class="colLast">
<div class="block">Utility used running a cluster all in the one JVM.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html" title="class in org.apache.hadoop.hbase.util">JVMClusterUtil.MasterThread</a></td>
<td class="colLast">
<div class="block">Datastructure to hold Master Thread and Master instance</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html" title="class in org.apache.hadoop.hbase.util">JVMClusterUtil.RegionServerThread</a></td>
<td class="colLast">
<div class="block">Datastructure to hold RegionServer Thread and RegionServer instance</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></td>
<td class="colLast">
<div class="block">Class which sets up a simple thread which runs in a loop sleeping
for a short interval of time.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.GcTimes.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor.GcTimes</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/JvmVersion.html" title="class in org.apache.hadoop.hbase.util">JvmVersion</a></td>
<td class="colLast">
<div class="block">Utility class to get and check the current JVM version.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/KeyLocker.html" title="class in org.apache.hadoop.hbase.util">KeyLocker</a><K></td>
<td class="colLast">
<div class="block">A utility class to manage a set of locks.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/LogMonitoring.html" title="class in org.apache.hadoop.hbase.util">LogMonitoring</a></td>
<td class="colLast">
<div class="block">Utility functions for reading the log4j logs that are being written by HBase.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/LossyCounting.html" title="class in org.apache.hadoop.hbase.util">LossyCounting</a><T></td>
<td class="colLast">
<div class="block">LossyCounting utility, bounded data structure that maintains approximate high frequency
elements in data stream.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ManualEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">ManualEnvironmentEdge</a></td>
<td class="colLast">
<div class="block">An environment edge that uses a manually set value.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MapreduceDependencyClasspathTool.html" title="class in org.apache.hadoop.hbase.util">MapreduceDependencyClasspathTool</a></td>
<td class="colLast">
<div class="block">Generate a classpath string containing any jars required by mapreduce jobs.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MapReduceExtendedCell.html" title="class in org.apache.hadoop.hbase.util">MapReduceExtendedCell</a></td>
<td class="colLast">
<div class="block">A wrapper for a cell to be used with mapreduce, as the output value class for mappers/reducers.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MD5Hash.html" title="class in org.apache.hadoop.hbase.util">MD5Hash</a></td>
<td class="colLast">
<div class="block">Utility class for MD5
MD5 hash produces a 128-bit digest.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Methods.html" title="class in org.apache.hadoop.hbase.util">Methods</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ModifyRegionUtils.html" title="class in org.apache.hadoop.hbase.util">ModifyRegionUtils</a></td>
<td class="colLast">
<div class="block">Utility methods for interacting with the regions.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MoveWithAck.html" title="class in org.apache.hadoop.hbase.util">MoveWithAck</a></td>
<td class="colLast">
<div class="block">Move Regions and make sure that they are up on the target server.If a region movement fails we
exit as failure</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MoveWithoutAck.html" title="class in org.apache.hadoop.hbase.util">MoveWithoutAck</a></td>
<td class="colLast">
<div class="block">Move Regions without Acknowledging.Usefule in case of RS shutdown as we might want to shut the
RS down anyways and not abort on a stuck region.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MovingAverage.html" title="class in org.apache.hadoop.hbase.util">MovingAverage</a><T></td>
<td class="colLast">
<div class="block">The purpose of introduction of <a href="../../../../../org/apache/hadoop/hbase/util/MovingAverage.html" title="class in org.apache.hadoop.hbase.util"><code>MovingAverage</code></a> mainly is to measure execution time of a
@@ -1009,7 +1013,7 @@
machine states or situations, better case, then to act accordingly.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MunkresAssignment.html" title="class in org.apache.hadoop.hbase.util">MunkresAssignment</a></td>
<td class="colLast">
<div class="block">Computes the optimal (minimal cost) assignment of jobs to workers (or other
@@ -1020,135 +1024,135 @@
Problem: An Improved Version of Munkres' Algorithm".</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MurmurHash.html" title="class in org.apache.hadoop.hbase.util">MurmurHash</a></td>
<td class="colLast">
<div class="block">This is a very fast, non-cryptographic hash suitable for general hash-based
lookup.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/MurmurHash3.html" title="class in org.apache.hadoop.hbase.util">MurmurHash3</a></td>
<td class="colLast">
<div class="block">This is a very fast, non-cryptographic hash suitable for general hash-based
lookup.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.html" title="class in org.apache.hadoop.hbase.util">NettyEventLoopGroupConfig</a></td>
<td class="colLast">
<div class="block">Event loop group related config.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a></td>
<td class="colLast">
<div class="block">This implementation is not smart and just treats nonce group and nonce as random bits.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ObjectIntPair.html" title="class in org.apache.hadoop.hbase.util">ObjectIntPair</a><T></td>
<td class="colLast">
<div class="block">A generic class for pair of an Object and and a primitive int value.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ObjectPool.html" title="class in org.apache.hadoop.hbase.util">ObjectPool</a><K,V></td>
<td class="colLast">
<div class="block">A thread-safe shared object pool in which object creation is expected to be lightweight, and the
objects may be excessively created and discarded.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/OOMEChecker.html" title="class in org.apache.hadoop.hbase.util">OOMEChecker</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/OrderedBytes.html" title="class in org.apache.hadoop.hbase.util">OrderedBytes</a></td>
<td class="colLast">
<div class="block">Utility class that handles ordered byte arrays.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><T1,T2></td>
<td class="colLast">
<div class="block">A generic class for pairs.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/PairOfSameType.html" title="class in org.apache.hadoop.hbase.util">PairOfSameType</a><T></td>
<td class="colLast">
<div class="block">A generic, immutable class for pairs of objects both of type <code>T</code>.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.html" title="class in org.apache.hadoop.hbase.util">PoolMap</a><K,V></td>
<td class="colLast">
<div class="block">The <code>PoolMap</code> maps a key to a collection of values, the elements
of which are managed by a pool.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.RoundRobinPool.html" title="class in org.apache.hadoop.hbase.util">PoolMap.RoundRobinPool</a><R></td>
<td class="colLast">
<div class="block">The <code>RoundRobinPool</code> represents a <a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.Pool.html" title="interface in org.apache.hadoop.hbase.util"><code>PoolMap.Pool</code></a>, which
stores its resources in an <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util"><code>ArrayList</code></a>.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.ThreadLocalPool.html" title="class in org.apache.hadoop.hbase.util">PoolMap.ThreadLocalPool</a><R></td>
<td class="colLast">
<div class="block">The <code>ThreadLocalPool</code> represents a <a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.Pool.html" title="interface in org.apache.hadoop.hbase.util"><code>PoolMap.Pool</code></a> that
works similarly to <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang"><code>ThreadLocal</code></a> class.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.html" title="class in org.apache.hadoop.hbase.util">PrettyPrinter</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ProcessUtils.html" title="class in org.apache.hadoop.hbase.util">ProcessUtils</a></td>
<td class="colLast">
<div class="block">Process related utilities.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Random64.html" title="class in org.apache.hadoop.hbase.util">Random64</a></td>
<td class="colLast">
<div class="block">An instance of this class is used to generate a stream of
pseudorandom numbers.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RecoverLeaseFSUtils.html" title="class in org.apache.hadoop.hbase.util">RecoverLeaseFSUtils</a></td>
<td class="colLast">
<div class="block">Utility methods for recovering file lease for hdfs.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ReflectionUtils.html" title="class in org.apache.hadoop.hbase.util">ReflectionUtils</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionMover.html" title="class in org.apache.hadoop.hbase.util">RegionMover</a></td>
<td class="colLast">
<div class="block">Tool for loading/unloading regions to/from given regionserver This tool can be run from Command
line directly as a utility.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionMover.RegionMoverBuilder.html" title="class in org.apache.hadoop.hbase.util">RegionMover.RegionMoverBuilder</a></td>
<td class="colLast">
<div class="block">Builder for Region mover.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitCalculator.html" title="class in org.apache.hadoop.hbase.util">RegionSplitCalculator</a><R extends <a href="../../../../../org/apache/hadoop/hbase/util/KeyRange.html" title="interface in org.apache.hadoop.hbase.util">KeyRange</a>></td>
<td class="colLast">
<div class="block">This is a generic region split calculator.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.html" title="class in org.apache.hadoop.hbase.util">RegionSplitter</a></td>
<td class="colLast">
<div class="block">The <a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.html" title="class in org.apache.hadoop.hbase.util"><code>RegionSplitter</code></a> class provides several utilities to help in the
@@ -1156,254 +1160,254 @@
instead of having HBase handle that automatically.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.DecimalStringSplit.html" title="class in org.apache.hadoop.hbase.util">RegionSplitter.DecimalStringSplit</a></td>
<td class="colLast">
<div class="block">The format of a DecimalStringSplit region boundary is the ASCII representation of
reversed sequential number, or any other uniformly distributed decimal value.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.HexStringSplit.html" title="class in org.apache.hadoop.hbase.util">RegionSplitter.HexStringSplit</a></td>
<td class="colLast">
<div class="block">HexStringSplit is a well-known <a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.SplitAlgorithm.html" title="interface in org.apache.hadoop.hbase.util"><code>RegionSplitter.SplitAlgorithm</code></a> for choosing region
boundaries.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.NumberStringSplit.html" title="class in org.apache.hadoop.hbase.util">RegionSplitter.NumberStringSplit</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.UniformSplit.html" title="class in org.apache.hadoop.hbase.util">RegionSplitter.UniformSplit</a></td>
<td class="colLast">
<div class="block">A SplitAlgorithm that divides the space of possible keys evenly.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ReservoirSample.html" title="class in org.apache.hadoop.hbase.util">ReservoirSample</a><T></td>
<td class="colLast">
<div class="block">The simple version of reservoir sampling implementation.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></td>
<td class="colLast">
<div class="block">Operation retry accounting.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a></td>
<td class="colLast">
<div class="block">Policy for calculating sleeping intervals between retry attempts</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.ExponentialBackoffPolicy</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.ExponentialBackoffPolicyWithLimit</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a></td>
<td class="colLast">
<div class="block">Configuration for a retry counter</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util">RetryCounterFactory</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RollingStatCalculator.html" title="class in org.apache.hadoop.hbase.util">RollingStatCalculator</a></td>
<td class="colLast">
<div class="block">This class maintains mean and variation for any sequence of input provided to it.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a></td>
<td class="colLast">
<div class="block">Handles ROW bloom related context.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowBloomHashKey.html" title="class in org.apache.hadoop.hbase.util">RowBloomHashKey</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowColBloomContext</a></td>
<td class="colLast">
<div class="block">Handles ROWCOL bloom related context.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomHashKey.html" title="class in org.apache.hadoop.hbase.util">RowColBloomHashKey</a></td>
<td class="colLast">
<div class="block">An hash key for ROWCOL bloom.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></td>
<td class="colLast">
<div class="block">Handles ROWPREFIX bloom related context.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util">ServerCommandLine</a></td>
<td class="colLast">
<div class="block">Base class for command lines that start up various HBase daemons.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.util">ServerRegionReplicaUtil</a></td>
<td class="colLast">
<div class="block">Similar to <a href="../../../../../org/apache/hadoop/hbase/client/RegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.client"><code>RegionReplicaUtil</code></a> but for the server side</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ShutdownHookManager.html" title="class in org.apache.hadoop.hbase.util">ShutdownHookManager</a></td>
<td class="colLast">
<div class="block">This class provides ShutdownHookManager shims for HBase to interact with the Hadoop 1.0.x and the
Hadoop 2.0+ series.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ShutdownHookManager.ShutdownHookManagerV1.html" title="class in org.apache.hadoop.hbase.util">ShutdownHookManager.ShutdownHookManagerV1</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ShutdownHookManager.ShutdownHookManagerV2.html" title="class in org.apache.hadoop.hbase.util">ShutdownHookManager.ShutdownHookManagerV2</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SimpleByteRange.html" title="class in org.apache.hadoop.hbase.util">SimpleByteRange</a></td>
<td class="colLast">
<div class="block">A read only version of the <a href="../../../../../org/apache/hadoop/hbase/util/ByteRange.html" title="interface in org.apache.hadoop.hbase.util"><code>ByteRange</code></a>.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SimpleMovingAverage.html" title="class in org.apache.hadoop.hbase.util">SimpleMovingAverage</a></td>
<td class="colLast">
<div class="block">SMA measure the overall average execution time of a specific method.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SimpleMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">SimpleMutableByteRange</a></td>
<td class="colLast">
<div class="block">A basic mutable <a href="../../../../../org/apache/hadoop/hbase/util/ByteRange.html" title="interface in org.apache.hadoop.hbase.util"><code>ByteRange</code></a> implementation.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SimplePositionedByteRange.html" title="class in org.apache.hadoop.hbase.util">SimplePositionedByteRange</a></td>
<td class="colLast">
<div class="block">Extends the basic <a href="../../../../../org/apache/hadoop/hbase/util/SimpleMutableByteRange.html" title="class in org.apache.hadoop.hbase.util"><code>SimpleMutableByteRange</code></a> implementation with position
support and it is a readonly version.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SimplePositionedMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">SimplePositionedMutableByteRange</a></td>
<td class="colLast">
<div class="block">Extends the basic <a href="../../../../../org/apache/hadoop/hbase/util/AbstractPositionedByteRange.html" title="class in org.apache.hadoop.hbase.util"><code>AbstractPositionedByteRange</code></a> implementation with
position support and it is a mutable version.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Sleeper.html" title="class in org.apache.hadoop.hbase.util">Sleeper</a></td>
<td class="colLast">
<div class="block">Sleeper for current thread.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SoftObjectPool.html" title="class in org.apache.hadoop.hbase.util">SoftObjectPool</a><K,V></td>
<td class="colLast">
<div class="block">A <code>SoftReference</code> based shared object pool.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/SortedList.html" title="class in org.apache.hadoop.hbase.util">SortedList</a><E></td>
<td class="colLast">
<div class="block">Simple sorted list implementation that uses <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util"><code>ArrayList</code></a> as
the underlying collection so we can support RandomAccess.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/StealJobQueue.html" title="class in org.apache.hadoop.hbase.util">StealJobQueue</a><T></td>
<td class="colLast">
<div class="block">This queue allows a ThreadPoolExecutor to steal jobs from another ThreadPoolExecutor.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Strings.html" title="class in org.apache.hadoop.hbase.util">Strings</a></td>
<td class="colLast">
<div class="block">Utility for Strings.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TableDescriptorChecker.html" title="class in org.apache.hadoop.hbase.util">TableDescriptorChecker</a></td>
<td class="colLast">
<div class="block">Only used for master to sanity check <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client"><code>TableDescriptor</code></a>.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Threads.html" title="class in org.apache.hadoop.hbase.util">Threads</a></td>
<td class="colLast">
<div class="block">Thread Utility</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Triple.html" title="class in org.apache.hadoop.hbase.util">Triple</a><A,B,C></td>
<td class="colLast">
<div class="block">Utility class to manage a triple.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/UnsafeAccess.html" title="class in org.apache.hadoop.hbase.util">UnsafeAccess</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/UnsafeAvailChecker.html" title="class in org.apache.hadoop.hbase.util">UnsafeAvailChecker</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/VersionInfo.html" title="class in org.apache.hadoop.hbase.util">VersionInfo</a></td>
<td class="colLast">
<div class="block">This class finds the Version information for HBase.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/WeakObjectPool.html" title="class in org.apache.hadoop.hbase.util">WeakObjectPool</a><K,V></td>
<td class="colLast">
<div class="block">A <code>WeakReference</code> based shared object pool.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/WeightedMovingAverage.html" title="class in org.apache.hadoop.hbase.util">WeightedMovingAverage</a></td>
<td class="colLast">
<div class="block">Different from SMA <a href="../../../../../org/apache/hadoop/hbase/util/SimpleMovingAverage.html" title="class in org.apache.hadoop.hbase.util"><code>SimpleMovingAverage</code></a>, WeightedMovingAverage gives each data different
weight.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/WindowMovingAverage.html" title="class in org.apache.hadoop.hbase.util">WindowMovingAverage</a></td>
<td class="colLast">
<div class="block">Instead of calculate a whole time average, this class focus on the last N.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/Writables.html" title="class in org.apache.hadoop.hbase.util">Writables</a></td>
<td class="colLast">
<div class="block">Utility class with methods for manipulating Writable objects</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></td>
<td class="colLast">
<div class="block">Utility functions for working with Yammer Metrics.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ZKDataMigrator.html" title="class in org.apache.hadoop.hbase.util">ZKDataMigrator</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">Since 2.0.0.</span></div>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index a100ec0..b95e10f 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -243,6 +243,7 @@
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/FSTableDescriptors.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSTableDescriptors</span></a> (implements org.apache.hadoop.hbase.<a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a>)</li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.HFileLinkFilter</span></a> (implements org.apache.hadoop.fs.PathFilter)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.ReferenceAndLinkFileFilter</span></a> (implements org.apache.hadoop.fs.PathFilter)</li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/FSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSVisitor</span></a></li>
<li type="circle">java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html?is-external=true" title="class or interface in java.util.concurrent"><span class="typeNameLink">FutureTask</span></a><V> (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RunnableFuture.html?is-external=true" title="class or interface in java.util.concurrent">RunnableFuture</a><V>)
<ul>
@@ -533,15 +534,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/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/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>
<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/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/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/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/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/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>
+<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/DNS.ServerType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">DNS.ServerType</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 5921874..61f35f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -198,8 +198,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.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
</ul>
</li>
</ul>
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index af663f4..20a8f48 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -1853,6 +1853,7 @@
<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSTableDescriptors.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSTableDescriptors</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a>)</li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.HFileLinkFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.HFileLinkFilter</span></a> (implements org.apache.hadoop.fs.PathFilter)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.ReferenceAndLinkFileFilter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSUtils.ReferenceAndLinkFileFilter</span></a> (implements org.apache.hadoop.fs.PathFilter)</li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">FSVisitor</span></a></li>
<li type="circle">java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html?is-external=true" title="class or interface in java.util.concurrent"><span class="typeNameLink">FutureTask</span></a><V> (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RunnableFuture.html?is-external=true" title="class or interface in java.util.concurrent">RunnableFuture</a><V>)
<ul>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/HFileLink.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/HFileLink.html
index faff4d0..a75eb63 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/HFileLink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/HFileLink.html
@@ -87,459 +87,483 @@
<span class="sourceLineNo">079</span> RegionInfoBuilder.ENCODED_REGION_NAME_REGEX, StoreFileInfo.HFILE_NAME_REGEX);<a name="line.79"></a>
<span class="sourceLineNo">080</span><a name="line.80"></a>
<span class="sourceLineNo">081</span> /** Define the HFile Link name parser in the form of: table=region-hfile */<a name="line.81"></a>
-<span class="sourceLineNo">082</span> //made package private for testing<a name="line.82"></a>
-<span class="sourceLineNo">083</span> static final Pattern LINK_NAME_PATTERN =<a name="line.83"></a>
-<span class="sourceLineNo">084</span> Pattern.compile(String.format("^(?:(%s)(?:\\=))?(%s)=(%s)-(%s)$",<a name="line.84"></a>
-<span class="sourceLineNo">085</span> TableName.VALID_NAMESPACE_REGEX, TableName.VALID_TABLE_QUALIFIER_REGEX,<a name="line.85"></a>
-<span class="sourceLineNo">086</span> RegionInfoBuilder.ENCODED_REGION_NAME_REGEX, StoreFileInfo.HFILE_NAME_REGEX));<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> * The pattern should be used for hfile and reference links<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * that can be found in /hbase/table/region/family/<a name="line.90"></a>
-<span class="sourceLineNo">091</span> */<a name="line.91"></a>
-<span class="sourceLineNo">092</span> private static final Pattern REF_OR_HFILE_LINK_PATTERN =<a name="line.92"></a>
-<span class="sourceLineNo">093</span> Pattern.compile(String.format("^(?:(%s)(?:=))?(%s)=(%s)-(.+)$",<a name="line.93"></a>
-<span class="sourceLineNo">094</span> TableName.VALID_NAMESPACE_REGEX, TableName.VALID_TABLE_QUALIFIER_REGEX,<a name="line.94"></a>
-<span class="sourceLineNo">095</span> RegionInfoBuilder.ENCODED_REGION_NAME_REGEX));<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span> private final Path archivePath;<a name="line.97"></a>
-<span class="sourceLineNo">098</span> private final Path originPath;<a name="line.98"></a>
-<span class="sourceLineNo">099</span> private final Path mobPath;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> private final Path tempPath;<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> * Dead simple hfile link constructor<a name="line.103"></a>
-<span class="sourceLineNo">104</span> */<a name="line.104"></a>
-<span class="sourceLineNo">105</span> public HFileLink(final Path originPath, final Path tempPath, final Path mobPath,<a name="line.105"></a>
-<span class="sourceLineNo">106</span> final Path archivePath) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span> this.tempPath = tempPath;<a name="line.107"></a>
-<span class="sourceLineNo">108</span> this.originPath = originPath;<a name="line.108"></a>
-<span class="sourceLineNo">109</span> this.mobPath = mobPath;<a name="line.109"></a>
-<span class="sourceLineNo">110</span> this.archivePath = archivePath;<a name="line.110"></a>
-<span class="sourceLineNo">111</span> setLocations(originPath, tempPath, mobPath, archivePath);<a name="line.111"></a>
-<span class="sourceLineNo">112</span> }<a name="line.112"></a>
+<span class="sourceLineNo">082</span> public static final Pattern LINK_NAME_PATTERN =<a name="line.82"></a>
+<span class="sourceLineNo">083</span> Pattern.compile(String.format("^(?:(%s)(?:\\=))?(%s)=(%s)-(%s)$",<a name="line.83"></a>
+<span class="sourceLineNo">084</span> TableName.VALID_NAMESPACE_REGEX, TableName.VALID_TABLE_QUALIFIER_REGEX,<a name="line.84"></a>
+<span class="sourceLineNo">085</span> RegionInfoBuilder.ENCODED_REGION_NAME_REGEX, StoreFileInfo.HFILE_NAME_REGEX));<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span> /**<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * The pattern should be used for hfile and reference links<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * that can be found in /hbase/table/region/family/<a name="line.89"></a>
+<span class="sourceLineNo">090</span> */<a name="line.90"></a>
+<span class="sourceLineNo">091</span> private static final Pattern REF_OR_HFILE_LINK_PATTERN =<a name="line.91"></a>
+<span class="sourceLineNo">092</span> Pattern.compile(String.format("^(?:(%s)(?:=))?(%s)=(%s)-(.+)$",<a name="line.92"></a>
+<span class="sourceLineNo">093</span> TableName.VALID_NAMESPACE_REGEX, TableName.VALID_TABLE_QUALIFIER_REGEX,<a name="line.93"></a>
+<span class="sourceLineNo">094</span> RegionInfoBuilder.ENCODED_REGION_NAME_REGEX));<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span> private final Path archivePath;<a name="line.96"></a>
+<span class="sourceLineNo">097</span> private final Path originPath;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> private final Path mobPath;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> private final Path tempPath;<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> * Dead simple hfile link constructor<a name="line.102"></a>
+<span class="sourceLineNo">103</span> */<a name="line.103"></a>
+<span class="sourceLineNo">104</span> public HFileLink(final Path originPath, final Path tempPath, final Path mobPath,<a name="line.104"></a>
+<span class="sourceLineNo">105</span> final Path archivePath) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span> this.tempPath = tempPath;<a name="line.106"></a>
+<span class="sourceLineNo">107</span> this.originPath = originPath;<a name="line.107"></a>
+<span class="sourceLineNo">108</span> this.mobPath = mobPath;<a name="line.108"></a>
+<span class="sourceLineNo">109</span> this.archivePath = archivePath;<a name="line.109"></a>
+<span class="sourceLineNo">110</span> setLocations(originPath, tempPath, mobPath, archivePath);<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><a name="line.114"></a>
-<span class="sourceLineNo">115</span> /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * @param conf {@link Configuration} from which to extract specific archive locations<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * @param hFileLinkPattern The path ending with a HFileLink pattern. (table=region-hfile)<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * @throws IOException on unexpected error.<a name="line.118"></a>
-<span class="sourceLineNo">119</span> */<a name="line.119"></a>
-<span class="sourceLineNo">120</span> public static final HFileLink buildFromHFileLinkPattern(Configuration conf, Path hFileLinkPattern)<a name="line.120"></a>
-<span class="sourceLineNo">121</span> throws IOException {<a name="line.121"></a>
-<span class="sourceLineNo">122</span> return buildFromHFileLinkPattern(CommonFSUtils.getRootDir(conf),<a name="line.122"></a>
-<span class="sourceLineNo">123</span> HFileArchiveUtil.getArchivePath(conf), hFileLinkPattern);<a name="line.123"></a>
-<span class="sourceLineNo">124</span> }<a name="line.124"></a>
+<span class="sourceLineNo">114</span> /**<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * @param conf {@link Configuration} from which to extract specific archive locations<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * @param hFileLinkPattern The path ending with a HFileLink pattern. (table=region-hfile)<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * @throws IOException on unexpected error.<a name="line.117"></a>
+<span class="sourceLineNo">118</span> */<a name="line.118"></a>
+<span class="sourceLineNo">119</span> public static final HFileLink buildFromHFileLinkPattern(Configuration conf, Path hFileLinkPattern)<a name="line.119"></a>
+<span class="sourceLineNo">120</span> throws IOException {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> return buildFromHFileLinkPattern(CommonFSUtils.getRootDir(conf),<a name="line.121"></a>
+<span class="sourceLineNo">122</span> HFileArchiveUtil.getArchivePath(conf), hFileLinkPattern);<a name="line.122"></a>
+<span class="sourceLineNo">123</span> }<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><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> * @param rootDir Path to the root directory where hbase files are stored<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * @param archiveDir Path to the hbase archive directory<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * @param hFileLinkPattern The path of the HFile Link.<a name="line.131"></a>
-<span class="sourceLineNo">132</span> */<a name="line.132"></a>
-<span class="sourceLineNo">133</span> public final static HFileLink buildFromHFileLinkPattern(final Path rootDir,<a name="line.133"></a>
-<span class="sourceLineNo">134</span> final Path archiveDir,<a name="line.134"></a>
-<span class="sourceLineNo">135</span> final Path hFileLinkPattern) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span> Path hfilePath = getHFileLinkPatternRelativePath(hFileLinkPattern);<a name="line.136"></a>
-<span class="sourceLineNo">137</span> Path tempPath = new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY), hfilePath);<a name="line.137"></a>
-<span class="sourceLineNo">138</span> Path originPath = new Path(rootDir, hfilePath);<a name="line.138"></a>
-<span class="sourceLineNo">139</span> Path mobPath = new Path(new Path(rootDir, MobConstants.MOB_DIR_NAME), hfilePath);<a name="line.139"></a>
-<span class="sourceLineNo">140</span> Path archivePath = new Path(archiveDir, hfilePath);<a name="line.140"></a>
-<span class="sourceLineNo">141</span> return new HFileLink(originPath, tempPath, mobPath, archivePath);<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> * Create an HFileLink relative path for the table/region/family/hfile location<a name="line.145"></a>
-<span class="sourceLineNo">146</span> * @param table Table name<a name="line.146"></a>
-<span class="sourceLineNo">147</span> * @param region Region Name<a name="line.147"></a>
-<span class="sourceLineNo">148</span> * @param family Family Name<a name="line.148"></a>
-<span class="sourceLineNo">149</span> * @param hfile HFile Name<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * @return the relative Path to open the specified table/region/family/hfile link<a name="line.150"></a>
-<span class="sourceLineNo">151</span> */<a name="line.151"></a>
-<span class="sourceLineNo">152</span> public static Path createPath(final TableName table, final String region,<a name="line.152"></a>
-<span class="sourceLineNo">153</span> final String family, final String hfile) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span> if (HFileLink.isHFileLink(hfile)) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> return new Path(family, hfile);<a name="line.155"></a>
-<span class="sourceLineNo">156</span> }<a name="line.156"></a>
-<span class="sourceLineNo">157</span> return new Path(family, HFileLink.createHFileLinkName(table, region, hfile));<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> * Create an HFileLink instance from table/region/family/hfile location<a name="line.161"></a>
-<span class="sourceLineNo">162</span> * @param conf {@link Configuration} from which to extract specific archive locations<a name="line.162"></a>
-<span class="sourceLineNo">163</span> * @param table Table name<a name="line.163"></a>
-<span class="sourceLineNo">164</span> * @param region Region Name<a name="line.164"></a>
-<span class="sourceLineNo">165</span> * @param family Family Name<a name="line.165"></a>
-<span class="sourceLineNo">166</span> * @param hfile HFile Name<a name="line.166"></a>
-<span class="sourceLineNo">167</span> * @return Link to the file with the specified table/region/family/hfile location<a name="line.167"></a>
-<span class="sourceLineNo">168</span> * @throws IOException on unexpected error.<a name="line.168"></a>
-<span class="sourceLineNo">169</span> */<a name="line.169"></a>
-<span class="sourceLineNo">170</span> public static HFileLink build(final Configuration conf, final TableName table,<a name="line.170"></a>
-<span class="sourceLineNo">171</span> final String region, final String family, final String hfile)<a name="line.171"></a>
-<span class="sourceLineNo">172</span> throws IOException {<a name="line.172"></a>
-<span class="sourceLineNo">173</span> return HFileLink.buildFromHFileLinkPattern(conf, createPath(table, region, family, hfile));<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> * @return the origin path of the hfile.<a name="line.177"></a>
-<span class="sourceLineNo">178</span> */<a name="line.178"></a>
-<span class="sourceLineNo">179</span> public Path getOriginPath() {<a name="line.179"></a>
-<span class="sourceLineNo">180</span> return this.originPath;<a name="line.180"></a>
-<span class="sourceLineNo">181</span> }<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> * @return the path of the archived hfile.<a name="line.184"></a>
-<span class="sourceLineNo">185</span> */<a name="line.185"></a>
-<span class="sourceLineNo">186</span> public Path getArchivePath() {<a name="line.186"></a>
-<span class="sourceLineNo">187</span> return this.archivePath;<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> * @return the path of the mob hfiles.<a name="line.191"></a>
-<span class="sourceLineNo">192</span> */<a name="line.192"></a>
-<span class="sourceLineNo">193</span> public Path getMobPath() {<a name="line.193"></a>
-<span class="sourceLineNo">194</span> return this.mobPath;<a name="line.194"></a>
-<span class="sourceLineNo">195</span> }<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> * @param path Path to check.<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * @return True if the path is a HFileLink.<a name="line.199"></a>
-<span class="sourceLineNo">200</span> */<a name="line.200"></a>
-<span class="sourceLineNo">201</span> public static boolean isHFileLink(final Path path) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span> return isHFileLink(path.getName());<a name="line.202"></a>
-<span class="sourceLineNo">203</span> }<a name="line.203"></a>
+<span class="sourceLineNo">127</span> /**<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * @param rootDir Path to the root directory where hbase files are stored<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * @param archiveDir Path to the hbase archive directory<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * @param hFileLinkPattern The path of the HFile Link.<a name="line.130"></a>
+<span class="sourceLineNo">131</span> */<a name="line.131"></a>
+<span class="sourceLineNo">132</span> public final static HFileLink buildFromHFileLinkPattern(final Path rootDir,<a name="line.132"></a>
+<span class="sourceLineNo">133</span> final Path archiveDir,<a name="line.133"></a>
+<span class="sourceLineNo">134</span> final Path hFileLinkPattern) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span> Path hfilePath = getHFileLinkPatternRelativePath(hFileLinkPattern);<a name="line.135"></a>
+<span class="sourceLineNo">136</span> Path tempPath = new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY), hfilePath);<a name="line.136"></a>
+<span class="sourceLineNo">137</span> Path originPath = new Path(rootDir, hfilePath);<a name="line.137"></a>
+<span class="sourceLineNo">138</span> Path mobPath = new Path(new Path(rootDir, MobConstants.MOB_DIR_NAME), hfilePath);<a name="line.138"></a>
+<span class="sourceLineNo">139</span> Path archivePath = new Path(archiveDir, hfilePath);<a name="line.139"></a>
+<span class="sourceLineNo">140</span> return new HFileLink(originPath, tempPath, mobPath, archivePath);<a name="line.140"></a>
+<span class="sourceLineNo">141</span> }<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> * Create an HFileLink relative path for the table/region/family/hfile location<a name="line.144"></a>
+<span class="sourceLineNo">145</span> * @param table Table name<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * @param region Region Name<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * @param family Family Name<a name="line.147"></a>
+<span class="sourceLineNo">148</span> * @param hfile HFile Name<a name="line.148"></a>
+<span class="sourceLineNo">149</span> * @return the relative Path to open the specified table/region/family/hfile link<a name="line.149"></a>
+<span class="sourceLineNo">150</span> */<a name="line.150"></a>
+<span class="sourceLineNo">151</span> public static Path createPath(final TableName table, final String region,<a name="line.151"></a>
+<span class="sourceLineNo">152</span> final String family, final String hfile) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span> if (HFileLink.isHFileLink(hfile)) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span> return new Path(family, hfile);<a name="line.154"></a>
+<span class="sourceLineNo">155</span> }<a name="line.155"></a>
+<span class="sourceLineNo">156</span> return new Path(family, HFileLink.createHFileLinkName(table, region, hfile));<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> /**<a name="line.159"></a>
+<span class="sourceLineNo">160</span> * Create an HFileLink instance from table/region/family/hfile location<a name="line.160"></a>
+<span class="sourceLineNo">161</span> * @param conf {@link Configuration} from which to extract specific archive locations<a name="line.161"></a>
+<span class="sourceLineNo">162</span> * @param table Table name<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * @param region Region Name<a name="line.163"></a>
+<span class="sourceLineNo">164</span> * @param family Family Name<a name="line.164"></a>
+<span class="sourceLineNo">165</span> * @param hfile HFile Name<a name="line.165"></a>
+<span class="sourceLineNo">166</span> * @return Link to the file with the specified table/region/family/hfile location<a name="line.166"></a>
+<span class="sourceLineNo">167</span> * @throws IOException on unexpected error.<a name="line.167"></a>
+<span class="sourceLineNo">168</span> */<a name="line.168"></a>
+<span class="sourceLineNo">169</span> public static HFileLink build(final Configuration conf, final TableName table,<a name="line.169"></a>
+<span class="sourceLineNo">170</span> final String region, final String family, final String hfile)<a name="line.170"></a>
+<span class="sourceLineNo">171</span> throws IOException {<a name="line.171"></a>
+<span class="sourceLineNo">172</span> return HFileLink.buildFromHFileLinkPattern(conf, createPath(table, region, family, hfile));<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> * @return the origin path of the hfile.<a name="line.176"></a>
+<span class="sourceLineNo">177</span> */<a name="line.177"></a>
+<span class="sourceLineNo">178</span> public Path getOriginPath() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span> return this.originPath;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span> /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span> * @return the path of the archived hfile.<a name="line.183"></a>
+<span class="sourceLineNo">184</span> */<a name="line.184"></a>
+<span class="sourceLineNo">185</span> public Path getArchivePath() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span> return this.archivePath;<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> /**<a name="line.189"></a>
+<span class="sourceLineNo">190</span> * @return the path of the mob hfiles.<a name="line.190"></a>
+<span class="sourceLineNo">191</span> */<a name="line.191"></a>
+<span class="sourceLineNo">192</span> public Path getMobPath() {<a name="line.192"></a>
+<span class="sourceLineNo">193</span> return this.mobPath;<a name="line.193"></a>
+<span class="sourceLineNo">194</span> }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span> /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span> * @param path Path to check.<a name="line.197"></a>
+<span class="sourceLineNo">198</span> * @return True if the path is a HFileLink.<a name="line.198"></a>
+<span class="sourceLineNo">199</span> */<a name="line.199"></a>
+<span class="sourceLineNo">200</span> public static boolean isHFileLink(final Path path) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span> return isHFileLink(path.getName());<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><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> * @param fileName File name to check.<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * @return True if the path is a HFileLink.<a name="line.208"></a>
-<span class="sourceLineNo">209</span> */<a name="line.209"></a>
-<span class="sourceLineNo">210</span> public static boolean isHFileLink(String fileName) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span> Matcher m = LINK_NAME_PATTERN.matcher(fileName);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> if (!m.matches()) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span> return false;<a name="line.213"></a>
-<span class="sourceLineNo">214</span> }<a name="line.214"></a>
-<span class="sourceLineNo">215</span> return m.groupCount() > 2 && m.group(4) != null && m.group(3) != null && m.group(2) != null;<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> /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span> * Convert a HFileLink path to a table relative path.<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * e.g. the link: /hbase/test/0123/cf/testtb=4567-abcd<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * becomes: /hbase/testtb/4567/cf/abcd<a name="line.221"></a>
-<span class="sourceLineNo">222</span> *<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * @param path HFileLink path<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * @return Relative table path<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * @throws IOException on unexpected error.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> */<a name="line.226"></a>
-<span class="sourceLineNo">227</span> private static Path getHFileLinkPatternRelativePath(final Path path) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span> // table=region-hfile<a name="line.228"></a>
-<span class="sourceLineNo">229</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(path.getName());<a name="line.229"></a>
-<span class="sourceLineNo">230</span> if (!m.matches()) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span> throw new IllegalArgumentException(path.getName() + " is not a valid HFileLink pattern!");<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> // Convert the HFileLink name into a real table/region/cf/hfile path.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> TableName tableName = TableName.valueOf(m.group(1), m.group(2));<a name="line.235"></a>
-<span class="sourceLineNo">236</span> String regionName = m.group(3);<a name="line.236"></a>
-<span class="sourceLineNo">237</span> String hfileName = m.group(4);<a name="line.237"></a>
-<span class="sourceLineNo">238</span> String familyName = path.getParent().getName();<a name="line.238"></a>
-<span class="sourceLineNo">239</span> Path tableDir = CommonFSUtils.getTableDir(new Path("./"), tableName);<a name="line.239"></a>
-<span class="sourceLineNo">240</span> return new Path(tableDir, new Path(regionName, new Path(familyName,<a name="line.240"></a>
-<span class="sourceLineNo">241</span> hfileName)));<a name="line.241"></a>
-<span class="sourceLineNo">242</span> }<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> * Get the HFile name of the referenced link<a name="line.245"></a>
-<span class="sourceLineNo">246</span> *<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * @param fileName HFileLink file name<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * @return the name of the referenced HFile<a name="line.248"></a>
-<span class="sourceLineNo">249</span> */<a name="line.249"></a>
-<span class="sourceLineNo">250</span> public static String getReferencedHFileName(final String fileName) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(fileName);<a name="line.251"></a>
-<span class="sourceLineNo">252</span> if (!m.matches()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span> throw new IllegalArgumentException(fileName + " is not a valid HFileLink name!");<a name="line.253"></a>
-<span class="sourceLineNo">254</span> }<a name="line.254"></a>
-<span class="sourceLineNo">255</span> return(m.group(4));<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> /**<a name="line.258"></a>
-<span class="sourceLineNo">259</span> * Get the Region name of the referenced link<a name="line.259"></a>
-<span class="sourceLineNo">260</span> *<a name="line.260"></a>
-<span class="sourceLineNo">261</span> * @param fileName HFileLink file name<a name="line.261"></a>
-<span class="sourceLineNo">262</span> * @return the name of the referenced Region<a name="line.262"></a>
-<span class="sourceLineNo">263</span> */<a name="line.263"></a>
-<span class="sourceLineNo">264</span> public static String getReferencedRegionName(final String fileName) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(fileName);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> if (!m.matches()) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span> throw new IllegalArgumentException(fileName + " is not a valid HFileLink name!");<a name="line.267"></a>
-<span class="sourceLineNo">268</span> }<a name="line.268"></a>
-<span class="sourceLineNo">269</span> return(m.group(3));<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> * Get the Table name of the referenced link<a name="line.273"></a>
-<span class="sourceLineNo">274</span> *<a name="line.274"></a>
-<span class="sourceLineNo">275</span> * @param fileName HFileLink file name<a name="line.275"></a>
-<span class="sourceLineNo">276</span> * @return the name of the referenced Table<a name="line.276"></a>
-<span class="sourceLineNo">277</span> */<a name="line.277"></a>
-<span class="sourceLineNo">278</span> public static TableName getReferencedTableName(final String fileName) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(fileName);<a name="line.279"></a>
-<span class="sourceLineNo">280</span> if (!m.matches()) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span> throw new IllegalArgumentException(fileName + " is not a valid HFileLink name!");<a name="line.281"></a>
-<span class="sourceLineNo">282</span> }<a name="line.282"></a>
-<span class="sourceLineNo">283</span> return(TableName.valueOf(m.group(1), m.group(2)));<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> /**<a name="line.286"></a>
-<span class="sourceLineNo">287</span> * Create a new HFileLink name<a name="line.287"></a>
-<span class="sourceLineNo">288</span> *<a name="line.288"></a>
-<span class="sourceLineNo">289</span> * @param hfileRegionInfo - Linked HFile Region Info<a name="line.289"></a>
-<span class="sourceLineNo">290</span> * @param hfileName - Linked HFile name<a name="line.290"></a>
-<span class="sourceLineNo">291</span> * @return file name of the HFile Link<a name="line.291"></a>
-<span class="sourceLineNo">292</span> */<a name="line.292"></a>
-<span class="sourceLineNo">293</span> public static String createHFileLinkName(final RegionInfo hfileRegionInfo,<a name="line.293"></a>
-<span class="sourceLineNo">294</span> final String hfileName) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span> return createHFileLinkName(hfileRegionInfo.getTable(),<a name="line.295"></a>
-<span class="sourceLineNo">296</span> hfileRegionInfo.getEncodedName(), hfileName);<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> /**<a name="line.299"></a>
-<span class="sourceLineNo">300</span> * Create a new HFileLink name<a name="line.300"></a>
-<span class="sourceLineNo">301</span> *<a name="line.301"></a>
-<span class="sourceLineNo">302</span> * @param tableName - Linked HFile table name<a name="line.302"></a>
-<span class="sourceLineNo">303</span> * @param regionName - Linked HFile region name<a name="line.303"></a>
-<span class="sourceLineNo">304</span> * @param hfileName - Linked HFile name<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * @return file name of the HFile Link<a name="line.305"></a>
-<span class="sourceLineNo">306</span> */<a name="line.306"></a>
-<span class="sourceLineNo">307</span> public static String createHFileLinkName(final TableName tableName,<a name="line.307"></a>
-<span class="sourceLineNo">308</span> final String regionName, final String hfileName) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> String s = String.format("%s=%s-%s",<a name="line.309"></a>
-<span class="sourceLineNo">310</span> tableName.getNameAsString().replace(TableName.NAMESPACE_DELIM, '='),<a name="line.310"></a>
-<span class="sourceLineNo">311</span> regionName, hfileName);<a name="line.311"></a>
-<span class="sourceLineNo">312</span> return s;<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> * Create a new HFileLink<a name="line.316"></a>
-<span class="sourceLineNo">317</span> *<a name="line.317"></a>
-<span class="sourceLineNo">318</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.318"></a>
-<span class="sourceLineNo">319</span> * to simplify the reference-count and the cleaning process.<a name="line.319"></a>
-<span class="sourceLineNo">320</span> *<a name="line.320"></a>
-<span class="sourceLineNo">321</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.321"></a>
-<span class="sourceLineNo">322</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.322"></a>
-<span class="sourceLineNo">323</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * @param hfileRegionInfo - Linked HFile Region Info<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * @param hfileName - Linked HFile name<a name="line.325"></a>
-<span class="sourceLineNo">326</span> * @return true if the file is created, otherwise the file exists.<a name="line.326"></a>
-<span class="sourceLineNo">327</span> * @throws IOException on file or parent directory creation failure<a name="line.327"></a>
-<span class="sourceLineNo">328</span> */<a name="line.328"></a>
-<span class="sourceLineNo">329</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.329"></a>
-<span class="sourceLineNo">330</span> final Path dstFamilyPath, final RegionInfo hfileRegionInfo,<a name="line.330"></a>
-<span class="sourceLineNo">331</span> final String hfileName) throws IOException {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return create(conf, fs, dstFamilyPath, hfileRegionInfo, hfileName, true);<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> * Create a new HFileLink<a name="line.336"></a>
-<span class="sourceLineNo">337</span> *<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.338"></a>
-<span class="sourceLineNo">339</span> * to simplify the reference-count and the cleaning process.<a name="line.339"></a>
-<span class="sourceLineNo">340</span> *<a name="line.340"></a>
-<span class="sourceLineNo">341</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.341"></a>
-<span class="sourceLineNo">342</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.342"></a>
-<span class="sourceLineNo">343</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.343"></a>
-<span class="sourceLineNo">344</span> * @param hfileRegionInfo - Linked HFile Region Info<a name="line.344"></a>
-<span class="sourceLineNo">345</span> * @param hfileName - Linked HFile name<a name="line.345"></a>
-<span class="sourceLineNo">346</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.346"></a>
-<span class="sourceLineNo">347</span> * @return true if the file is created, otherwise the file exists.<a name="line.347"></a>
-<span class="sourceLineNo">348</span> * @throws IOException on file or parent directory creation failure<a name="line.348"></a>
-<span class="sourceLineNo">349</span> */<a name="line.349"></a>
-<span class="sourceLineNo">350</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.350"></a>
-<span class="sourceLineNo">351</span> final Path dstFamilyPath, final RegionInfo hfileRegionInfo,<a name="line.351"></a>
-<span class="sourceLineNo">352</span> final String hfileName, final boolean createBackRef) throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span> TableName linkedTable = hfileRegionInfo.getTable();<a name="line.353"></a>
-<span class="sourceLineNo">354</span> String linkedRegion = hfileRegionInfo.getEncodedName();<a name="line.354"></a>
-<span class="sourceLineNo">355</span> return create(conf, fs, dstFamilyPath, linkedTable, linkedRegion, hfileName, createBackRef);<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> /**<a name="line.358"></a>
-<span class="sourceLineNo">359</span> * Create a new HFileLink<a name="line.359"></a>
-<span class="sourceLineNo">360</span> *<a name="line.360"></a>
-<span class="sourceLineNo">361</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.361"></a>
-<span class="sourceLineNo">362</span> * to simplify the reference-count and the cleaning process.<a name="line.362"></a>
-<span class="sourceLineNo">363</span> *<a name="line.363"></a>
-<span class="sourceLineNo">364</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.364"></a>
-<span class="sourceLineNo">365</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.365"></a>
-<span class="sourceLineNo">366</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.366"></a>
-<span class="sourceLineNo">367</span> * @param linkedTable - Linked Table Name<a name="line.367"></a>
-<span class="sourceLineNo">368</span> * @param linkedRegion - Linked Region Name<a name="line.368"></a>
-<span class="sourceLineNo">369</span> * @param hfileName - Linked HFile name<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * @return true if the file is created, otherwise the file exists.<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * @throws IOException on file or parent directory creation failure<a name="line.371"></a>
-<span class="sourceLineNo">372</span> */<a name="line.372"></a>
-<span class="sourceLineNo">373</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.373"></a>
-<span class="sourceLineNo">374</span> final Path dstFamilyPath, final TableName linkedTable, final String linkedRegion,<a name="line.374"></a>
-<span class="sourceLineNo">375</span> final String hfileName) throws IOException {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> return create(conf, fs, dstFamilyPath, linkedTable, linkedRegion, hfileName, true);<a name="line.376"></a>
-<span class="sourceLineNo">377</span> }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span> /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span> * Create a new HFileLink<a name="line.380"></a>
-<span class="sourceLineNo">381</span> *<a name="line.381"></a>
-<span class="sourceLineNo">382</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.382"></a>
-<span class="sourceLineNo">383</span> * to simplify the reference-count and the cleaning process.<a name="line.383"></a>
-<span class="sourceLineNo">384</span> *<a name="line.384"></a>
-<span class="sourceLineNo">385</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.385"></a>
-<span class="sourceLineNo">386</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.386"></a>
-<span class="sourceLineNo">387</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.387"></a>
-<span class="sourceLineNo">388</span> * @param linkedTable - Linked Table Name<a name="line.388"></a>
-<span class="sourceLineNo">389</span> * @param linkedRegion - Linked Region Name<a name="line.389"></a>
-<span class="sourceLineNo">390</span> * @param hfileName - Linked HFile name<a name="line.390"></a>
-<span class="sourceLineNo">391</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.391"></a>
-<span class="sourceLineNo">392</span> * @return true if the file is created, otherwise the file exists.<a name="line.392"></a>
-<span class="sourceLineNo">393</span> * @throws IOException on file or parent directory creation failure<a name="line.393"></a>
-<span class="sourceLineNo">394</span> */<a name="line.394"></a>
-<span class="sourceLineNo">395</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.395"></a>
-<span class="sourceLineNo">396</span> final Path dstFamilyPath, final TableName linkedTable, final String linkedRegion,<a name="line.396"></a>
-<span class="sourceLineNo">397</span> final String hfileName, final boolean createBackRef) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span> String familyName = dstFamilyPath.getName();<a name="line.398"></a>
-<span class="sourceLineNo">399</span> String regionName = dstFamilyPath.getParent().getName();<a name="line.399"></a>
-<span class="sourceLineNo">400</span> String tableName = CommonFSUtils.getTableName(dstFamilyPath.getParent().getParent())<a name="line.400"></a>
-<span class="sourceLineNo">401</span> .getNameAsString();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> String name = createHFileLinkName(linkedTable, linkedRegion, hfileName);<a name="line.403"></a>
-<span class="sourceLineNo">404</span> String refName = createBackReferenceName(tableName, regionName);<a name="line.404"></a>
+<span class="sourceLineNo">205</span> /**<a name="line.205"></a>
+<span class="sourceLineNo">206</span> * @param fileName File name to check.<a name="line.206"></a>
+<span class="sourceLineNo">207</span> * @return True if the path is a HFileLink.<a name="line.207"></a>
+<span class="sourceLineNo">208</span> */<a name="line.208"></a>
+<span class="sourceLineNo">209</span> public static boolean isHFileLink(String fileName) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span> Matcher m = LINK_NAME_PATTERN.matcher(fileName);<a name="line.210"></a>
+<span class="sourceLineNo">211</span> if (!m.matches()) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span> return false;<a name="line.212"></a>
+<span class="sourceLineNo">213</span> }<a name="line.213"></a>
+<span class="sourceLineNo">214</span> return m.groupCount() > 2 && m.group(4) != null && m.group(3) != null && m.group(2) != null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span> }<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> * Convert a HFileLink path to a table relative path.<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * e.g. the link: /hbase/test/0123/cf/testtb=4567-abcd<a name="line.219"></a>
+<span class="sourceLineNo">220</span> * becomes: /hbase/testtb/4567/cf/abcd<a name="line.220"></a>
+<span class="sourceLineNo">221</span> *<a name="line.221"></a>
+<span class="sourceLineNo">222</span> * @param path HFileLink path<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * @return Relative table path<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * @throws IOException on unexpected error.<a name="line.224"></a>
+<span class="sourceLineNo">225</span> */<a name="line.225"></a>
+<span class="sourceLineNo">226</span> private static Path getHFileLinkPatternRelativePath(final Path path) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span> // table=region-hfile<a name="line.227"></a>
+<span class="sourceLineNo">228</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(path.getName());<a name="line.228"></a>
+<span class="sourceLineNo">229</span> if (!m.matches()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span> throw new IllegalArgumentException(path.getName() + " is not a valid HFileLink pattern!");<a name="line.230"></a>
+<span class="sourceLineNo">231</span> }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span> // Convert the HFileLink name into a real table/region/cf/hfile path.<a name="line.233"></a>
+<span class="sourceLineNo">234</span> TableName tableName = TableName.valueOf(m.group(1), m.group(2));<a name="line.234"></a>
+<span class="sourceLineNo">235</span> String regionName = m.group(3);<a name="line.235"></a>
+<span class="sourceLineNo">236</span> String hfileName = m.group(4);<a name="line.236"></a>
+<span class="sourceLineNo">237</span> String familyName = path.getParent().getName();<a name="line.237"></a>
+<span class="sourceLineNo">238</span> Path tableDir = CommonFSUtils.getTableDir(new Path("./"), tableName);<a name="line.238"></a>
+<span class="sourceLineNo">239</span> return new Path(tableDir, new Path(regionName, new Path(familyName,<a name="line.239"></a>
+<span class="sourceLineNo">240</span> hfileName)));<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> /**<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * Get the HFile name of the referenced link<a name="line.244"></a>
+<span class="sourceLineNo">245</span> *<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * @param fileName HFileLink file name<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * @return the name of the referenced HFile<a name="line.247"></a>
+<span class="sourceLineNo">248</span> */<a name="line.248"></a>
+<span class="sourceLineNo">249</span> public static String getReferencedHFileName(final String fileName) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(fileName);<a name="line.250"></a>
+<span class="sourceLineNo">251</span> if (!m.matches()) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span> throw new IllegalArgumentException(fileName + " is not a valid HFileLink name!");<a name="line.252"></a>
+<span class="sourceLineNo">253</span> }<a name="line.253"></a>
+<span class="sourceLineNo">254</span> return(m.group(4));<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> * Get the Region name of the referenced link<a name="line.258"></a>
+<span class="sourceLineNo">259</span> *<a name="line.259"></a>
+<span class="sourceLineNo">260</span> * @param fileName HFileLink file name<a name="line.260"></a>
+<span class="sourceLineNo">261</span> * @return the name of the referenced Region<a name="line.261"></a>
+<span class="sourceLineNo">262</span> */<a name="line.262"></a>
+<span class="sourceLineNo">263</span> public static String getReferencedRegionName(final String fileName) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(fileName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span> if (!m.matches()) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span> throw new IllegalArgumentException(fileName + " is not a valid HFileLink name!");<a name="line.266"></a>
+<span class="sourceLineNo">267</span> }<a name="line.267"></a>
+<span class="sourceLineNo">268</span> return(m.group(3));<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> /**<a name="line.271"></a>
+<span class="sourceLineNo">272</span> * Get the Table name of the referenced link<a name="line.272"></a>
+<span class="sourceLineNo">273</span> *<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * @param fileName HFileLink file name<a name="line.274"></a>
+<span class="sourceLineNo">275</span> * @return the name of the referenced Table<a name="line.275"></a>
+<span class="sourceLineNo">276</span> */<a name="line.276"></a>
+<span class="sourceLineNo">277</span> public static TableName getReferencedTableName(final String fileName) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> Matcher m = REF_OR_HFILE_LINK_PATTERN.matcher(fileName);<a name="line.278"></a>
+<span class="sourceLineNo">279</span> if (!m.matches()) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> throw new IllegalArgumentException(fileName + " is not a valid HFileLink name!");<a name="line.280"></a>
+<span class="sourceLineNo">281</span> }<a name="line.281"></a>
+<span class="sourceLineNo">282</span> return(TableName.valueOf(m.group(1), m.group(2)));<a name="line.282"></a>
+<span class="sourceLineNo">283</span> }<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> * Create a new HFileLink name<a name="line.286"></a>
+<span class="sourceLineNo">287</span> *<a name="line.287"></a>
+<span class="sourceLineNo">288</span> * @param hfileRegionInfo - Linked HFile Region Info<a name="line.288"></a>
+<span class="sourceLineNo">289</span> * @param hfileName - Linked HFile name<a name="line.289"></a>
+<span class="sourceLineNo">290</span> * @return file name of the HFile Link<a name="line.290"></a>
+<span class="sourceLineNo">291</span> */<a name="line.291"></a>
+<span class="sourceLineNo">292</span> public static String createHFileLinkName(final RegionInfo hfileRegionInfo,<a name="line.292"></a>
+<span class="sourceLineNo">293</span> final String hfileName) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span> return createHFileLinkName(hfileRegionInfo.getTable(),<a name="line.294"></a>
+<span class="sourceLineNo">295</span> hfileRegionInfo.getEncodedName(), hfileName);<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> * Create a new HFileLink name<a name="line.299"></a>
+<span class="sourceLineNo">300</span> *<a name="line.300"></a>
+<span class="sourceLineNo">301</span> * @param tableName - Linked HFile table name<a name="line.301"></a>
+<span class="sourceLineNo">302</span> * @param regionName - Linked HFile region name<a name="line.302"></a>
+<span class="sourceLineNo">303</span> * @param hfileName - Linked HFile name<a name="line.303"></a>
+<span class="sourceLineNo">304</span> * @return file name of the HFile Link<a name="line.304"></a>
+<span class="sourceLineNo">305</span> */<a name="line.305"></a>
+<span class="sourceLineNo">306</span> public static String createHFileLinkName(final TableName tableName,<a name="line.306"></a>
+<span class="sourceLineNo">307</span> final String regionName, final String hfileName) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span> String s = String.format("%s=%s-%s",<a name="line.308"></a>
+<span class="sourceLineNo">309</span> tableName.getNameAsString().replace(TableName.NAMESPACE_DELIM, '='),<a name="line.309"></a>
+<span class="sourceLineNo">310</span> regionName, hfileName);<a name="line.310"></a>
+<span class="sourceLineNo">311</span> return s;<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> /**<a name="line.314"></a>
+<span class="sourceLineNo">315</span> * Create a new HFileLink<a name="line.315"></a>
+<span class="sourceLineNo">316</span> *<a name="line.316"></a>
+<span class="sourceLineNo">317</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.317"></a>
+<span class="sourceLineNo">318</span> * to simplify the reference-count and the cleaning process.<a name="line.318"></a>
+<span class="sourceLineNo">319</span> *<a name="line.319"></a>
+<span class="sourceLineNo">320</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.320"></a>
+<span class="sourceLineNo">321</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.321"></a>
+<span class="sourceLineNo">322</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.322"></a>
+<span class="sourceLineNo">323</span> * @param hfileRegionInfo - Linked HFile Region Info<a name="line.323"></a>
+<span class="sourceLineNo">324</span> * @param hfileName - Linked HFile name<a name="line.324"></a>
+<span class="sourceLineNo">325</span> * @return true if the file is created, otherwise the file exists.<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * @throws IOException on file or parent directory creation failure<a name="line.326"></a>
+<span class="sourceLineNo">327</span> */<a name="line.327"></a>
+<span class="sourceLineNo">328</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.328"></a>
+<span class="sourceLineNo">329</span> final Path dstFamilyPath, final RegionInfo hfileRegionInfo,<a name="line.329"></a>
+<span class="sourceLineNo">330</span> final String hfileName) throws IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span> return create(conf, fs, dstFamilyPath, hfileRegionInfo, hfileName, true);<a name="line.331"></a>
+<span class="sourceLineNo">332</span> }<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> * Create a new HFileLink<a name="line.335"></a>
+<span class="sourceLineNo">336</span> *<a name="line.336"></a>
+<span class="sourceLineNo">337</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.337"></a>
+<span class="sourceLineNo">338</span> * to simplify the reference-count and the cleaning process.<a name="line.338"></a>
+<span class="sourceLineNo">339</span> *<a name="line.339"></a>
+<span class="sourceLineNo">340</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.340"></a>
+<span class="sourceLineNo">341</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.341"></a>
+<span class="sourceLineNo">342</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.342"></a>
+<span class="sourceLineNo">343</span> * @param hfileRegionInfo - Linked HFile Region Info<a name="line.343"></a>
+<span class="sourceLineNo">344</span> * @param hfileName - Linked HFile name<a name="line.344"></a>
+<span class="sourceLineNo">345</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * @return true if the file is created, otherwise the file exists.<a name="line.346"></a>
+<span class="sourceLineNo">347</span> * @throws IOException on file or parent directory creation failure<a name="line.347"></a>
+<span class="sourceLineNo">348</span> */<a name="line.348"></a>
+<span class="sourceLineNo">349</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.349"></a>
+<span class="sourceLineNo">350</span> final Path dstFamilyPath, final RegionInfo hfileRegionInfo,<a name="line.350"></a>
+<span class="sourceLineNo">351</span> final String hfileName, final boolean createBackRef) throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span> TableName linkedTable = hfileRegionInfo.getTable();<a name="line.352"></a>
+<span class="sourceLineNo">353</span> String linkedRegion = hfileRegionInfo.getEncodedName();<a name="line.353"></a>
+<span class="sourceLineNo">354</span> return create(conf, fs, dstFamilyPath, linkedTable, linkedRegion, hfileName, createBackRef);<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> * Create a new HFileLink<a name="line.358"></a>
+<span class="sourceLineNo">359</span> *<a name="line.359"></a>
+<span class="sourceLineNo">360</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.360"></a>
+<span class="sourceLineNo">361</span> * to simplify the reference-count and the cleaning process.<a name="line.361"></a>
+<span class="sourceLineNo">362</span> *<a name="line.362"></a>
+<span class="sourceLineNo">363</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.363"></a>
+<span class="sourceLineNo">364</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.364"></a>
+<span class="sourceLineNo">365</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.365"></a>
+<span class="sourceLineNo">366</span> * @param linkedTable - Linked Table Name<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * @param linkedRegion - Linked Region Name<a name="line.367"></a>
+<span class="sourceLineNo">368</span> * @param hfileName - Linked HFile name<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * @return true if the file is created, otherwise the file exists.<a name="line.369"></a>
+<span class="sourceLineNo">370</span> * @throws IOException on file or parent directory creation failure<a name="line.370"></a>
+<span class="sourceLineNo">371</span> */<a name="line.371"></a>
+<span class="sourceLineNo">372</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.372"></a>
+<span class="sourceLineNo">373</span> final Path dstFamilyPath, final TableName linkedTable, final String linkedRegion,<a name="line.373"></a>
+<span class="sourceLineNo">374</span> final String hfileName) throws IOException {<a name="line.374"></a>
+<span class="sourceLineNo">375</span> return create(conf, fs, dstFamilyPath, linkedTable, linkedRegion, hfileName, true);<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> /**<a name="line.378"></a>
+<span class="sourceLineNo">379</span> * Create a new HFileLink<a name="line.379"></a>
+<span class="sourceLineNo">380</span> *<a name="line.380"></a>
+<span class="sourceLineNo">381</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.381"></a>
+<span class="sourceLineNo">382</span> * to simplify the reference-count and the cleaning process.<a name="line.382"></a>
+<span class="sourceLineNo">383</span> *<a name="line.383"></a>
+<span class="sourceLineNo">384</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.384"></a>
+<span class="sourceLineNo">385</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.385"></a>
+<span class="sourceLineNo">386</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.386"></a>
+<span class="sourceLineNo">387</span> * @param linkedTable - Linked Table Name<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * @param linkedRegion - Linked Region Name<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * @param hfileName - Linked HFile name<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.390"></a>
+<span class="sourceLineNo">391</span> * @return true if the file is created, otherwise the file exists.<a name="line.391"></a>
+<span class="sourceLineNo">392</span> * @throws IOException on file or parent directory creation failure<a name="line.392"></a>
+<span class="sourceLineNo">393</span> */<a name="line.393"></a>
+<span class="sourceLineNo">394</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.394"></a>
+<span class="sourceLineNo">395</span> final Path dstFamilyPath, final TableName linkedTable, final String linkedRegion,<a name="line.395"></a>
+<span class="sourceLineNo">396</span> final String hfileName, final boolean createBackRef) throws IOException {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> String familyName = dstFamilyPath.getName();<a name="line.397"></a>
+<span class="sourceLineNo">398</span> String regionName = dstFamilyPath.getParent().getName();<a name="line.398"></a>
+<span class="sourceLineNo">399</span> String tableName = CommonFSUtils.getTableName(dstFamilyPath.getParent().getParent())<a name="line.399"></a>
+<span class="sourceLineNo">400</span> .getNameAsString();<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span> return create(conf, fs, dstFamilyPath, familyName, tableName, regionName, linkedTable,<a name="line.402"></a>
+<span class="sourceLineNo">403</span> linkedRegion, hfileName, createBackRef);<a name="line.403"></a>
+<span class="sourceLineNo">404</span> }<a name="line.404"></a>
<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span> // Make sure the destination directory exists<a name="line.406"></a>
-<span class="sourceLineNo">407</span> fs.mkdirs(dstFamilyPath);<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span> // Make sure the FileLink reference directory exists<a name="line.409"></a>
-<span class="sourceLineNo">410</span> Path archiveStoreDir = HFileArchiveUtil.getStoreArchivePath(conf,<a name="line.410"></a>
-<span class="sourceLineNo">411</span> linkedTable, linkedRegion, familyName);<a name="line.411"></a>
-<span class="sourceLineNo">412</span> Path backRefPath = null;<a name="line.412"></a>
-<span class="sourceLineNo">413</span> if (createBackRef) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span> Path backRefssDir = getBackReferencesDir(archiveStoreDir, hfileName);<a name="line.414"></a>
-<span class="sourceLineNo">415</span> fs.mkdirs(backRefssDir);<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span> // Create the reference for the link<a name="line.417"></a>
-<span class="sourceLineNo">418</span> backRefPath = new Path(backRefssDir, refName);<a name="line.418"></a>
-<span class="sourceLineNo">419</span> fs.createNewFile(backRefPath);<a name="line.419"></a>
-<span class="sourceLineNo">420</span> }<a name="line.420"></a>
-<span class="sourceLineNo">421</span> try {<a name="line.421"></a>
-<span class="sourceLineNo">422</span> // Create the link<a name="line.422"></a>
-<span class="sourceLineNo">423</span> return fs.createNewFile(new Path(dstFamilyPath, name));<a name="line.423"></a>
-<span class="sourceLineNo">424</span> } catch (IOException e) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span> LOG.error("couldn't create the link=" + name + " for " + dstFamilyPath, e);<a name="line.425"></a>
-<span class="sourceLineNo">426</span> // Revert the reference if the link creation failed<a name="line.426"></a>
-<span class="sourceLineNo">427</span> if (createBackRef) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span> fs.delete(backRefPath, false);<a name="line.428"></a>
-<span class="sourceLineNo">429</span> }<a name="line.429"></a>
-<span class="sourceLineNo">430</span> throw e;<a name="line.430"></a>
-<span class="sourceLineNo">431</span> }<a name="line.431"></a>
-<span class="sourceLineNo">432</span> }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span> /**<a name="line.434"></a>
-<span class="sourceLineNo">435</span> * Create a new HFileLink starting from a hfileLink name<a name="line.435"></a>
-<span class="sourceLineNo">436</span> *<a name="line.436"></a>
-<span class="sourceLineNo">437</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.437"></a>
-<span class="sourceLineNo">438</span> * to simplify the reference-count and the cleaning process.<a name="line.438"></a>
-<span class="sourceLineNo">439</span> *<a name="line.439"></a>
-<span class="sourceLineNo">440</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.440"></a>
-<span class="sourceLineNo">441</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.441"></a>
-<span class="sourceLineNo">442</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.442"></a>
-<span class="sourceLineNo">443</span> * @param hfileLinkName - HFileLink name (it contains hfile-region-table)<a name="line.443"></a>
-<span class="sourceLineNo">444</span> * @return true if the file is created, otherwise the file exists.<a name="line.444"></a>
-<span class="sourceLineNo">445</span> * @throws IOException on file or parent directory creation failure<a name="line.445"></a>
-<span class="sourceLineNo">446</span> */<a name="line.446"></a>
-<span class="sourceLineNo">447</span> public static boolean createFromHFileLink(final Configuration conf, final FileSystem fs,<a name="line.447"></a>
-<span class="sourceLineNo">448</span> final Path dstFamilyPath, final String hfileLinkName)<a name="line.448"></a>
-<span class="sourceLineNo">449</span> throws IOException {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> return createFromHFileLink(conf, fs, dstFamilyPath, hfileLinkName, true);<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> /**<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * Create a new HFileLink starting from a hfileLink name<a name="line.454"></a>
-<span class="sourceLineNo">455</span> *<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.456"></a>
-<span class="sourceLineNo">457</span> * to simplify the reference-count and the cleaning process.<a name="line.457"></a>
-<span class="sourceLineNo">458</span> *<a name="line.458"></a>
-<span class="sourceLineNo">459</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.459"></a>
-<span class="sourceLineNo">460</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.460"></a>
-<span class="sourceLineNo">461</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.461"></a>
-<span class="sourceLineNo">462</span> * @param hfileLinkName - HFileLink name (it contains hfile-region-table)<a name="line.462"></a>
-<span class="sourceLineNo">463</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.463"></a>
-<span class="sourceLineNo">464</span> * @return true if the file is created, otherwise the file exists.<a name="line.464"></a>
-<span class="sourceLineNo">465</span> * @throws IOException on file or parent directory creation failure<a name="line.465"></a>
-<span class="sourceLineNo">466</span> */<a name="line.466"></a>
-<span class="sourceLineNo">467</span> public static boolean createFromHFileLink(final Configuration conf, final FileSystem fs,<a name="line.467"></a>
-<span class="sourceLineNo">468</span> final Path dstFamilyPath, final String hfileLinkName, final boolean createBackRef)<a name="line.468"></a>
-<span class="sourceLineNo">469</span> throws IOException {<a name="line.469"></a>
-<span class="sourceLineNo">470</span> Matcher m = LINK_NAME_PATTERN.matcher(hfileLinkName);<a name="line.470"></a>
-<span class="sourceLineNo">471</span> if (!m.matches()) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span> throw new IllegalArgumentException(hfileLinkName + " is not a valid HFileLink name!");<a name="line.472"></a>
-<span class="sourceLineNo">473</span> }<a name="line.473"></a>
-<span class="sourceLineNo">474</span> return create(conf, fs, dstFamilyPath, TableName.valueOf(m.group(1), m.group(2)),<a name="line.474"></a>
-<span class="sourceLineNo">475</span> m.group(3), m.group(4), createBackRef);<a name="line.475"></a>
-<span class="sourceLineNo">476</span> }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span> /**<a name="line.478"></a>
-<span class="sourceLineNo">479</span> * Create the back reference name<a name="line.479"></a>
-<span class="sourceLineNo">480</span> */<a name="line.480"></a>
-<span class="sourceLineNo">481</span> //package-private for testing<a name="line.481"></a>
-<span class="sourceLineNo">482</span> static String createBackReferenceName(final String tableNameStr,<a name="line.482"></a>
-<span class="sourceLineNo">483</span> final String regionName) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span> return regionName + "." + tableNameStr.replace(TableName.NAMESPACE_DELIM, '=');<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> /**<a name="line.488"></a>
-<span class="sourceLineNo">489</span> * Get the full path of the HFile referenced by the back reference<a name="line.489"></a>
-<span class="sourceLineNo">490</span> *<a name="line.490"></a>
-<span class="sourceLineNo">491</span> * @param rootDir root hbase directory<a name="line.491"></a>
-<span class="sourceLineNo">492</span> * @param linkRefPath Link Back Reference path<a name="line.492"></a>
-<span class="sourceLineNo">493</span> * @return full path of the referenced hfile<a name="line.493"></a>
-<span class="sourceLineNo">494</span> */<a name="line.494"></a>
-<span class="sourceLineNo">495</span> public static Path getHFileFromBackReference(final Path rootDir, final Path linkRefPath) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span> Pair<TableName, String> p = parseBackReferenceName(linkRefPath.getName());<a name="line.496"></a>
-<span class="sourceLineNo">497</span> TableName linkTableName = p.getFirst();<a name="line.497"></a>
-<span class="sourceLineNo">498</span> String linkRegionName = p.getSecond();<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span> String hfileName = getBackReferenceFileName(linkRefPath.getParent());<a name="line.500"></a>
-<span class="sourceLineNo">501</span> Path familyPath = linkRefPath.getParent().getParent();<a name="line.501"></a>
-<span class="sourceLineNo">502</span> Path regionPath = familyPath.getParent();<a name="line.502"></a>
-<span class="sourceLineNo">503</span> Path tablePath = regionPath.getParent();<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span> String linkName = createHFileLinkName(CommonFSUtils.getTableName(tablePath),<a name="line.505"></a>
-<span class="sourceLineNo">506</span> regionPath.getName(), hfileName);<a name="line.506"></a>
-<span class="sourceLineNo">507</span> Path linkTableDir = CommonFSUtils.getTableDir(rootDir, linkTableName);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> Path regionDir = HRegion.getRegionDir(linkTableDir, linkRegionName);<a name="line.508"></a>
-<span class="sourceLineNo">509</span> return new Path(new Path(regionDir, familyPath.getName()), linkName);<a name="line.509"></a>
+<span class="sourceLineNo">406</span> /**<a name="line.406"></a>
+<span class="sourceLineNo">407</span> * Create a new HFileLink<a name="line.407"></a>
+<span class="sourceLineNo">408</span> *<a name="line.408"></a>
+<span class="sourceLineNo">409</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.409"></a>
+<span class="sourceLineNo">410</span> * to simplify the reference-count and the cleaning process.<a name="line.410"></a>
+<span class="sourceLineNo">411</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.411"></a>
+<span class="sourceLineNo">412</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.412"></a>
+<span class="sourceLineNo">413</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.413"></a>
+<span class="sourceLineNo">414</span> * @param dstTableName - Destination table name<a name="line.414"></a>
+<span class="sourceLineNo">415</span> * @param dstRegionName - Destination region name<a name="line.415"></a>
+<span class="sourceLineNo">416</span> * @param linkedTable - Linked Table Name<a name="line.416"></a>
+<span class="sourceLineNo">417</span> * @param linkedRegion - Linked Region Name<a name="line.417"></a>
+<span class="sourceLineNo">418</span> * @param hfileName - Linked HFile name<a name="line.418"></a>
+<span class="sourceLineNo">419</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.419"></a>
+<span class="sourceLineNo">420</span> * @return true if the file is created, otherwise the file exists.<a name="line.420"></a>
+<span class="sourceLineNo">421</span> * @throws IOException on file or parent directory creation failure<a name="line.421"></a>
+<span class="sourceLineNo">422</span> */<a name="line.422"></a>
+<span class="sourceLineNo">423</span> public static boolean create(final Configuration conf, final FileSystem fs,<a name="line.423"></a>
+<span class="sourceLineNo">424</span> final Path dstFamilyPath, final String familyName, final String dstTableName,<a name="line.424"></a>
+<span class="sourceLineNo">425</span> final String dstRegionName, final TableName linkedTable, final String linkedRegion,<a name="line.425"></a>
+<span class="sourceLineNo">426</span> final String hfileName, final boolean createBackRef) throws IOException {<a name="line.426"></a>
+<span class="sourceLineNo">427</span> String name = createHFileLinkName(linkedTable, linkedRegion, hfileName);<a name="line.427"></a>
+<span class="sourceLineNo">428</span> String refName = createBackReferenceName(dstTableName, dstRegionName);<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span> // Make sure the destination directory exists<a name="line.430"></a>
+<span class="sourceLineNo">431</span> fs.mkdirs(dstFamilyPath);<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span> // Make sure the FileLink reference directory exists<a name="line.433"></a>
+<span class="sourceLineNo">434</span> Path archiveStoreDir = HFileArchiveUtil.getStoreArchivePath(conf,<a name="line.434"></a>
+<span class="sourceLineNo">435</span> linkedTable, linkedRegion, familyName);<a name="line.435"></a>
+<span class="sourceLineNo">436</span> Path backRefPath = null;<a name="line.436"></a>
+<span class="sourceLineNo">437</span> if (createBackRef) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span> Path backRefssDir = getBackReferencesDir(archiveStoreDir, hfileName);<a name="line.438"></a>
+<span class="sourceLineNo">439</span> fs.mkdirs(backRefssDir);<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span> // Create the reference for the link<a name="line.441"></a>
+<span class="sourceLineNo">442</span> backRefPath = new Path(backRefssDir, refName);<a name="line.442"></a>
+<span class="sourceLineNo">443</span> fs.createNewFile(backRefPath);<a name="line.443"></a>
+<span class="sourceLineNo">444</span> }<a name="line.444"></a>
+<span class="sourceLineNo">445</span> try {<a name="line.445"></a>
+<span class="sourceLineNo">446</span> // Create the link<a name="line.446"></a>
+<span class="sourceLineNo">447</span> return fs.createNewFile(new Path(dstFamilyPath, name));<a name="line.447"></a>
+<span class="sourceLineNo">448</span> } catch (IOException e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span> LOG.error("couldn't create the link=" + name + " for " + dstFamilyPath, e);<a name="line.449"></a>
+<span class="sourceLineNo">450</span> // Revert the reference if the link creation failed<a name="line.450"></a>
+<span class="sourceLineNo">451</span> if (createBackRef) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span> fs.delete(backRefPath, false);<a name="line.452"></a>
+<span class="sourceLineNo">453</span> }<a name="line.453"></a>
+<span class="sourceLineNo">454</span> throw e;<a name="line.454"></a>
+<span class="sourceLineNo">455</span> }<a name="line.455"></a>
+<span class="sourceLineNo">456</span> }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span> /**<a name="line.458"></a>
+<span class="sourceLineNo">459</span> * Create a new HFileLink starting from a hfileLink name<a name="line.459"></a>
+<span class="sourceLineNo">460</span> *<a name="line.460"></a>
+<span class="sourceLineNo">461</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.461"></a>
+<span class="sourceLineNo">462</span> * to simplify the reference-count and the cleaning process.<a name="line.462"></a>
+<span class="sourceLineNo">463</span> *<a name="line.463"></a>
+<span class="sourceLineNo">464</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.464"></a>
+<span class="sourceLineNo">465</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.465"></a>
+<span class="sourceLineNo">466</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.466"></a>
+<span class="sourceLineNo">467</span> * @param hfileLinkName - HFileLink name (it contains hfile-region-table)<a name="line.467"></a>
+<span class="sourceLineNo">468</span> * @return true if the file is created, otherwise the file exists.<a name="line.468"></a>
+<span class="sourceLineNo">469</span> * @throws IOException on file or parent directory creation failure<a name="line.469"></a>
+<span class="sourceLineNo">470</span> */<a name="line.470"></a>
+<span class="sourceLineNo">471</span> public static boolean createFromHFileLink(final Configuration conf, final FileSystem fs,<a name="line.471"></a>
+<span class="sourceLineNo">472</span> final Path dstFamilyPath, final String hfileLinkName)<a name="line.472"></a>
+<span class="sourceLineNo">473</span> throws IOException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span> return createFromHFileLink(conf, fs, dstFamilyPath, hfileLinkName, true);<a name="line.474"></a>
+<span class="sourceLineNo">475</span> }<a name="line.475"></a>
+<span class="sourceLineNo">476</span><a name="line.476"></a>
+<span class="sourceLineNo">477</span> /**<a name="line.477"></a>
+<span class="sourceLineNo">478</span> * Create a new HFileLink starting from a hfileLink name<a name="line.478"></a>
+<span class="sourceLineNo">479</span> *<a name="line.479"></a>
+<span class="sourceLineNo">480</span> * <p>It also adds a back-reference to the hfile back-reference directory<a name="line.480"></a>
+<span class="sourceLineNo">481</span> * to simplify the reference-count and the cleaning process.<a name="line.481"></a>
+<span class="sourceLineNo">482</span> *<a name="line.482"></a>
+<span class="sourceLineNo">483</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.483"></a>
+<span class="sourceLineNo">484</span> * @param fs {@link FileSystem} on which to write the HFileLink<a name="line.484"></a>
+<span class="sourceLineNo">485</span> * @param dstFamilyPath - Destination path (table/region/cf/)<a name="line.485"></a>
+<span class="sourceLineNo">486</span> * @param hfileLinkName - HFileLink name (it contains hfile-region-table)<a name="line.486"></a>
+<span class="sourceLineNo">487</span> * @param createBackRef - Whether back reference should be created. Defaults to true.<a name="line.487"></a>
+<span class="sourceLineNo">488</span> * @return true if the file is created, otherwise the file exists.<a name="line.488"></a>
+<span class="sourceLineNo">489</span> * @throws IOException on file or parent directory creation failure<a name="line.489"></a>
+<span class="sourceLineNo">490</span> */<a name="line.490"></a>
+<span class="sourceLineNo">491</span> public static boolean createFromHFileLink(final Configuration conf, final FileSystem fs,<a name="line.491"></a>
+<span class="sourceLineNo">492</span> final Path dstFamilyPath, final String hfileLinkName, final boolean createBackRef)<a name="line.492"></a>
+<span class="sourceLineNo">493</span> throws IOException {<a name="line.493"></a>
+<span class="sourceLineNo">494</span> Matcher m = LINK_NAME_PATTERN.matcher(hfileLinkName);<a name="line.494"></a>
+<span class="sourceLineNo">495</span> if (!m.matches()) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span> throw new IllegalArgumentException(hfileLinkName + " is not a valid HFileLink name!");<a name="line.496"></a>
+<span class="sourceLineNo">497</span> }<a name="line.497"></a>
+<span class="sourceLineNo">498</span> return create(conf, fs, dstFamilyPath, TableName.valueOf(m.group(1), m.group(2)),<a name="line.498"></a>
+<span class="sourceLineNo">499</span> m.group(3), m.group(4), createBackRef);<a name="line.499"></a>
+<span class="sourceLineNo">500</span> }<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span> /**<a name="line.502"></a>
+<span class="sourceLineNo">503</span> * Create the back reference name<a name="line.503"></a>
+<span class="sourceLineNo">504</span> */<a name="line.504"></a>
+<span class="sourceLineNo">505</span> //package-private for testing<a name="line.505"></a>
+<span class="sourceLineNo">506</span> static String createBackReferenceName(final String tableNameStr,<a name="line.506"></a>
+<span class="sourceLineNo">507</span> final String regionName) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span> return regionName + "." + tableNameStr.replace(TableName.NAMESPACE_DELIM, '=');<a name="line.509"></a>
<span class="sourceLineNo">510</span> }<a name="line.510"></a>
<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span> public static Pair<TableName, String> parseBackReferenceName(String name) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span> int separatorIndex = name.indexOf('.');<a name="line.513"></a>
-<span class="sourceLineNo">514</span> String linkRegionName = name.substring(0, separatorIndex);<a name="line.514"></a>
-<span class="sourceLineNo">515</span> String tableSubstr = name.substring(separatorIndex + 1)<a name="line.515"></a>
-<span class="sourceLineNo">516</span> .replace('=', TableName.NAMESPACE_DELIM);<a name="line.516"></a>
-<span class="sourceLineNo">517</span> TableName linkTableName = TableName.valueOf(tableSubstr);<a name="line.517"></a>
-<span class="sourceLineNo">518</span> return new Pair<>(linkTableName, linkRegionName);<a name="line.518"></a>
-<span class="sourceLineNo">519</span> }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> /**<a name="line.521"></a>
-<span class="sourceLineNo">522</span> * Get the full path of the HFile referenced by the back reference<a name="line.522"></a>
-<span class="sourceLineNo">523</span> *<a name="line.523"></a>
-<span class="sourceLineNo">524</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.524"></a>
-<span class="sourceLineNo">525</span> * @param linkRefPath Link Back Reference path<a name="line.525"></a>
-<span class="sourceLineNo">526</span> * @return full path of the referenced hfile<a name="line.526"></a>
-<span class="sourceLineNo">527</span> * @throws IOException on unexpected error.<a name="line.527"></a>
-<span class="sourceLineNo">528</span> */<a name="line.528"></a>
-<span class="sourceLineNo">529</span> public static Path getHFileFromBackReference(final Configuration conf, final Path linkRefPath)<a name="line.529"></a>
-<span class="sourceLineNo">530</span> throws IOException {<a name="line.530"></a>
-<span class="sourceLineNo">531</span> return getHFileFromBackReference(CommonFSUtils.getRootDir(conf), linkRefPath);<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">512</span> /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span> * Get the full path of the HFile referenced by the back reference<a name="line.513"></a>
+<span class="sourceLineNo">514</span> *<a name="line.514"></a>
+<span class="sourceLineNo">515</span> * @param rootDir root hbase directory<a name="line.515"></a>
+<span class="sourceLineNo">516</span> * @param linkRefPath Link Back Reference path<a name="line.516"></a>
+<span class="sourceLineNo">517</span> * @return full path of the referenced hfile<a name="line.517"></a>
+<span class="sourceLineNo">518</span> */<a name="line.518"></a>
+<span class="sourceLineNo">519</span> public static Path getHFileFromBackReference(final Path rootDir, final Path linkRefPath) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span> Pair<TableName, String> p = parseBackReferenceName(linkRefPath.getName());<a name="line.520"></a>
+<span class="sourceLineNo">521</span> TableName linkTableName = p.getFirst();<a name="line.521"></a>
+<span class="sourceLineNo">522</span> String linkRegionName = p.getSecond();<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span> String hfileName = getBackReferenceFileName(linkRefPath.getParent());<a name="line.524"></a>
+<span class="sourceLineNo">525</span> Path familyPath = linkRefPath.getParent().getParent();<a name="line.525"></a>
+<span class="sourceLineNo">526</span> Path regionPath = familyPath.getParent();<a name="line.526"></a>
+<span class="sourceLineNo">527</span> Path tablePath = regionPath.getParent();<a name="line.527"></a>
+<span class="sourceLineNo">528</span><a name="line.528"></a>
+<span class="sourceLineNo">529</span> String linkName = createHFileLinkName(CommonFSUtils.getTableName(tablePath),<a name="line.529"></a>
+<span class="sourceLineNo">530</span> regionPath.getName(), hfileName);<a name="line.530"></a>
+<span class="sourceLineNo">531</span> Path linkTableDir = CommonFSUtils.getTableDir(rootDir, linkTableName);<a name="line.531"></a>
+<span class="sourceLineNo">532</span> Path regionDir = HRegion.getRegionDir(linkTableDir, linkRegionName);<a name="line.532"></a>
+<span class="sourceLineNo">533</span> return new Path(new Path(regionDir, familyPath.getName()), linkName);<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> public static Pair<TableName, String> parseBackReferenceName(String name) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span> int separatorIndex = name.indexOf('.');<a name="line.537"></a>
+<span class="sourceLineNo">538</span> String linkRegionName = name.substring(0, separatorIndex);<a name="line.538"></a>
+<span class="sourceLineNo">539</span> String tableSubstr = name.substring(separatorIndex + 1)<a name="line.539"></a>
+<span class="sourceLineNo">540</span> .replace('=', TableName.NAMESPACE_DELIM);<a name="line.540"></a>
+<span class="sourceLineNo">541</span> TableName linkTableName = TableName.valueOf(tableSubstr);<a name="line.541"></a>
+<span class="sourceLineNo">542</span> return new Pair<>(linkTableName, linkRegionName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span> }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span> /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span> * Get the full path of the HFile referenced by the back reference<a name="line.546"></a>
+<span class="sourceLineNo">547</span> *<a name="line.547"></a>
+<span class="sourceLineNo">548</span> * @param conf {@link Configuration} to read for the archive directory name<a name="line.548"></a>
+<span class="sourceLineNo">549</span> * @param linkRefPath Link Back Reference path<a name="line.549"></a>
+<span class="sourceLineNo">550</span> * @return full path of the referenced hfile<a name="line.550"></a>
+<span class="sourceLineNo">551</span> * @throws IOException on unexpected error.<a name="line.551"></a>
+<span class="sourceLineNo">552</span> */<a name="line.552"></a>
+<span class="sourceLineNo">553</span> public static Path getHFileFromBackReference(final Configuration conf, final Path linkRefPath)<a name="line.553"></a>
+<span class="sourceLineNo">554</span> throws IOException {<a name="line.554"></a>
+<span class="sourceLineNo">555</span> return getHFileFromBackReference(CommonFSUtils.getRootDir(conf), linkRefPath);<a name="line.555"></a>
+<span class="sourceLineNo">556</span> }<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>}<a name="line.558"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
index 6cc457d..76e2819 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
@@ -41,901 +41,907 @@
<span class="sourceLineNo">033</span>import java.util.concurrent.Future;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import java.util.concurrent.TimeUnit;<a name="line.34"></a>
<span class="sourceLineNo">035</span>import java.util.stream.Stream;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.fs.FileSystem;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.fs.Path;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.RegionSplitRestriction;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.regionserver.StoreFileInfo;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.regionserver.StoreUtils;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.CommonFSUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.wal.WALSplitUtil;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ReflectionUtils;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>/**<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * The procedure to split a region in a table.<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Takes lock on the parent region.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It holds the lock for the life of the procedure.<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * <p>Throws exception on construction if determines context hostile to spllt (cluster going<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * down or master is shutting down or table is disabled).</p><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 class SplitTableRegionProcedure<a name="line.95"></a>
-<span class="sourceLineNo">096</span> extends AbstractStateMachineRegionProcedure<SplitTableRegionState> {<a name="line.96"></a>
-<span class="sourceLineNo">097</span> private static final Logger LOG = LoggerFactory.getLogger(SplitTableRegionProcedure.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span> private RegionInfo daughterOneRI;<a name="line.98"></a>
-<span class="sourceLineNo">099</span> private RegionInfo daughterTwoRI;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> private byte[] bestSplitRow;<a name="line.100"></a>
-<span class="sourceLineNo">101</span> private RegionSplitPolicy splitPolicy;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span> public SplitTableRegionProcedure() {<a name="line.103"></a>
-<span class="sourceLineNo">104</span> // Required by the Procedure framework to create the procedure on replay<a name="line.104"></a>
-<span class="sourceLineNo">105</span> }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span> public SplitTableRegionProcedure(final MasterProcedureEnv env,<a name="line.107"></a>
-<span class="sourceLineNo">108</span> final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.108"></a>
-<span class="sourceLineNo">109</span> super(env, regionToSplit);<a name="line.109"></a>
-<span class="sourceLineNo">110</span> preflightChecks(env, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span> // When procedure goes to run in its prepare step, it also does these checkOnline checks. Here<a name="line.111"></a>
-<span class="sourceLineNo">112</span> // we fail-fast on construction. There it skips the split with just a warning.<a name="line.112"></a>
-<span class="sourceLineNo">113</span> checkOnline(env, regionToSplit);<a name="line.113"></a>
-<span class="sourceLineNo">114</span> this.bestSplitRow = splitRow;<a name="line.114"></a>
-<span class="sourceLineNo">115</span> TableDescriptor tableDescriptor = env.getMasterServices().getTableDescriptors()<a name="line.115"></a>
-<span class="sourceLineNo">116</span> .get(getTableName());<a name="line.116"></a>
-<span class="sourceLineNo">117</span> Configuration conf = env.getMasterConfiguration();<a name="line.117"></a>
-<span class="sourceLineNo">118</span> if (hasBestSplitRow()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // Apply the split restriction for the table to the user-specified split point<a name="line.119"></a>
-<span class="sourceLineNo">120</span> RegionSplitRestriction splitRestriction =<a name="line.120"></a>
-<span class="sourceLineNo">121</span> RegionSplitRestriction.create(tableDescriptor, conf);<a name="line.121"></a>
-<span class="sourceLineNo">122</span> byte[] restrictedSplitRow = splitRestriction.getRestrictedSplitPoint(bestSplitRow);<a name="line.122"></a>
-<span class="sourceLineNo">123</span> if (!Bytes.equals(bestSplitRow, restrictedSplitRow)) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> LOG.warn("The specified split point {} violates the split restriction of the table. "<a name="line.124"></a>
-<span class="sourceLineNo">125</span> + "Using {} as a split point.", Bytes.toStringBinary(bestSplitRow),<a name="line.125"></a>
-<span class="sourceLineNo">126</span> Bytes.toStringBinary(restrictedSplitRow));<a name="line.126"></a>
-<span class="sourceLineNo">127</span> bestSplitRow = restrictedSplitRow;<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> checkSplittable(env, regionToSplit);<a name="line.130"></a>
-<span class="sourceLineNo">131</span> final TableName table = regionToSplit.getTable();<a name="line.131"></a>
-<span class="sourceLineNo">132</span> final long rid = getDaughterRegionIdTimestamp(regionToSplit);<a name="line.132"></a>
-<span class="sourceLineNo">133</span> this.daughterOneRI = RegionInfoBuilder.newBuilder(table)<a name="line.133"></a>
-<span class="sourceLineNo">134</span> .setStartKey(regionToSplit.getStartKey())<a name="line.134"></a>
-<span class="sourceLineNo">135</span> .setEndKey(bestSplitRow)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> .setSplit(false)<a name="line.136"></a>
-<span class="sourceLineNo">137</span> .setRegionId(rid)<a name="line.137"></a>
-<span class="sourceLineNo">138</span> .build();<a name="line.138"></a>
-<span class="sourceLineNo">139</span> this.daughterTwoRI = RegionInfoBuilder.newBuilder(table)<a name="line.139"></a>
-<span class="sourceLineNo">140</span> .setStartKey(bestSplitRow)<a name="line.140"></a>
-<span class="sourceLineNo">141</span> .setEndKey(regionToSplit.getEndKey())<a name="line.141"></a>
-<span class="sourceLineNo">142</span> .setSplit(false)<a name="line.142"></a>
-<span class="sourceLineNo">143</span> .setRegionId(rid)<a name="line.143"></a>
-<span class="sourceLineNo">144</span> .build();<a name="line.144"></a>
-<span class="sourceLineNo">145</span> if(tableDescriptor.getRegionSplitPolicyClassName() != null) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span> // Since we don't have region reference here, creating the split policy instance without it.<a name="line.146"></a>
-<span class="sourceLineNo">147</span> // This can be used to invoke methods which don't require Region reference. This instantiation<a name="line.147"></a>
-<span class="sourceLineNo">148</span> // of a class on Master-side though it only makes sense on the RegionServer-side is<a name="line.148"></a>
-<span class="sourceLineNo">149</span> // for Phoenix Local Indexing. Refer HBASE-12583 for more information.<a name="line.149"></a>
-<span class="sourceLineNo">150</span> Class<? extends RegionSplitPolicy> clazz =<a name="line.150"></a>
-<span class="sourceLineNo">151</span> RegionSplitPolicy.getSplitPolicyClass(tableDescriptor, conf);<a name="line.151"></a>
-<span class="sourceLineNo">152</span> this.splitPolicy = ReflectionUtils.newInstance(clazz, conf);<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>
-<span class="sourceLineNo">156</span> @Override<a name="line.156"></a>
-<span class="sourceLineNo">157</span> protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span> if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(),<a name="line.158"></a>
-<span class="sourceLineNo">159</span> daughterOneRI, daughterTwoRI)) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span> try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span> LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());<a name="line.161"></a>
-<span class="sourceLineNo">162</span> } catch (IOException e) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span> // Ignore, just for logging<a name="line.163"></a>
-<span class="sourceLineNo">164</span> }<a name="line.164"></a>
-<span class="sourceLineNo">165</span> return LockState.LOCK_EVENT_WAIT;<a name="line.165"></a>
-<span class="sourceLineNo">166</span> }<a name="line.166"></a>
-<span class="sourceLineNo">167</span> return LockState.LOCK_ACQUIRED;<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> @Override<a name="line.170"></a>
-<span class="sourceLineNo">171</span> protected void releaseLock(final MasterProcedureEnv env) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span> env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughterOneRI,<a name="line.172"></a>
-<span class="sourceLineNo">173</span> daughterTwoRI);<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> public RegionInfo getDaughterOneRI() {<a name="line.176"></a>
-<span class="sourceLineNo">177</span> return daughterOneRI;<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> public RegionInfo getDaughterTwoRI() {<a name="line.180"></a>
-<span class="sourceLineNo">181</span> return daughterTwoRI;<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> private boolean hasBestSplitRow() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span> return bestSplitRow != null && bestSplitRow.length > 0;<a name="line.185"></a>
-<span class="sourceLineNo">186</span> }<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> * Check whether the region is splittable<a name="line.189"></a>
-<span class="sourceLineNo">190</span> * @param env MasterProcedureEnv<a name="line.190"></a>
-<span class="sourceLineNo">191</span> * @param regionToSplit parent Region to be split<a name="line.191"></a>
-<span class="sourceLineNo">192</span> */<a name="line.192"></a>
-<span class="sourceLineNo">193</span> private void checkSplittable(final MasterProcedureEnv env,<a name="line.193"></a>
-<span class="sourceLineNo">194</span> final RegionInfo regionToSplit) throws IOException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span> // Ask the remote RS if this region is splittable.<a name="line.195"></a>
-<span class="sourceLineNo">196</span> // If we get an IOE, report it along w/ the failure so can see why we are not splittable at<a name="line.196"></a>
-<span class="sourceLineNo">197</span> // this time.<a name="line.197"></a>
-<span class="sourceLineNo">198</span> if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span> throw new IllegalArgumentException("Can't invoke split on non-default regions directly");<a name="line.199"></a>
-<span class="sourceLineNo">200</span> }<a name="line.200"></a>
-<span class="sourceLineNo">201</span> RegionStateNode node =<a name="line.201"></a>
-<span class="sourceLineNo">202</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.202"></a>
-<span class="sourceLineNo">203</span> IOException splittableCheckIOE = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span> boolean splittable = false;<a name="line.204"></a>
-<span class="sourceLineNo">205</span> if (node != null) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span> try {<a name="line.206"></a>
-<span class="sourceLineNo">207</span> GetRegionInfoResponse response;<a name="line.207"></a>
-<span class="sourceLineNo">208</span> if (!hasBestSplitRow()) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span> LOG.info(<a name="line.209"></a>
-<span class="sourceLineNo">210</span> "{} splitKey isn't explicitly specified, will try to find a best split key from RS {}",<a name="line.210"></a>
-<span class="sourceLineNo">211</span> node.getRegionInfo().getRegionNameAsString(), node.getRegionLocation());<a name="line.211"></a>
-<span class="sourceLineNo">212</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.212"></a>
-<span class="sourceLineNo">213</span> node.getRegionInfo(), true);<a name="line.213"></a>
-<span class="sourceLineNo">214</span> bestSplitRow =<a name="line.214"></a>
-<span class="sourceLineNo">215</span> response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.215"></a>
-<span class="sourceLineNo">216</span> } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.217"></a>
-<span class="sourceLineNo">218</span> node.getRegionInfo(), false);<a name="line.218"></a>
-<span class="sourceLineNo">219</span> }<a name="line.219"></a>
-<span class="sourceLineNo">220</span> splittable = response.hasSplittable() && response.getSplittable();<a name="line.220"></a>
-<span class="sourceLineNo">221</span> if (LOG.isDebugEnabled()) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span> LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.222"></a>
-<span class="sourceLineNo">223</span> }<a name="line.223"></a>
-<span class="sourceLineNo">224</span> } catch (IOException e) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span> splittableCheckIOE = e;<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> if (!splittable) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span> IOException e =<a name="line.230"></a>
-<span class="sourceLineNo">231</span> new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.231"></a>
-<span class="sourceLineNo">232</span> if (splittableCheckIOE != null) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span> e.initCause(splittableCheckIOE);<a name="line.233"></a>
-<span class="sourceLineNo">234</span> }<a name="line.234"></a>
-<span class="sourceLineNo">235</span> throw e;<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> if (!hasBestSplitRow()) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span> throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, " +<a name="line.239"></a>
-<span class="sourceLineNo">240</span> "maybe table is too small for auto split. For force split, try specifying split row");<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> if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span> throw new DoNotRetryIOException(<a name="line.244"></a>
-<span class="sourceLineNo">245</span> "Split row is equal to startkey: " + Bytes.toStringBinary(bestSplitRow));<a name="line.245"></a>
-<span class="sourceLineNo">246</span> }<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span> if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span> throw new DoNotRetryIOException("Split row is not inside region key range splitKey:" +<a name="line.249"></a>
-<span class="sourceLineNo">250</span> Bytes.toStringBinary(bestSplitRow) + " region: " + regionToSplit);<a name="line.250"></a>
-<span class="sourceLineNo">251</span> }<a name="line.251"></a>
-<span class="sourceLineNo">252</span> }<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> * Calculate daughter regionid to use.<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * @param hri Parent {@link RegionInfo}<a name="line.256"></a>
-<span class="sourceLineNo">257</span> * @return Daughter region id (timestamp) to use.<a name="line.257"></a>
-<span class="sourceLineNo">258</span> */<a name="line.258"></a>
-<span class="sourceLineNo">259</span> private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span> long rid = EnvironmentEdgeManager.currentTime();<a name="line.260"></a>
-<span class="sourceLineNo">261</span> // Regionid is timestamp. Can't be less than that of parent else will insert<a name="line.261"></a>
-<span class="sourceLineNo">262</span> // at wrong location in hbase:meta (See HBASE-710).<a name="line.262"></a>
-<span class="sourceLineNo">263</span> if (rid < hri.getRegionId()) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span> LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.264"></a>
-<span class="sourceLineNo">265</span> " but current time here is " + rid);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> rid = hri.getRegionId() + 1;<a name="line.266"></a>
-<span class="sourceLineNo">267</span> }<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return rid;<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> private void removeNonDefaultReplicas(MasterProcedureEnv env) throws IOException {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> AssignmentManagerUtil.removeNonDefaultReplicas(env, Stream.of(getParentRegion()),<a name="line.272"></a>
-<span class="sourceLineNo">273</span> getRegionReplication(env));<a name="line.273"></a>
-<span class="sourceLineNo">274</span> }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span> private void checkClosedRegions(MasterProcedureEnv env) throws IOException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> // theoretically this should not happen any more after we use TRSP, but anyway let's add a check<a name="line.277"></a>
-<span class="sourceLineNo">278</span> // here<a name="line.278"></a>
-<span class="sourceLineNo">279</span> AssignmentManagerUtil.checkClosedRegion(env, getParentRegion());<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> @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span> protected Flow executeFromState(MasterProcedureEnv env, SplitTableRegionState state)<a name="line.283"></a>
-<span class="sourceLineNo">284</span> throws InterruptedException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span> LOG.trace("{} execute state={}", this, state);<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span> try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> switch (state) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.289"></a>
-<span class="sourceLineNo">290</span> if (prepareSplitRegion(env)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.291"></a>
-<span class="sourceLineNo">292</span> break;<a name="line.292"></a>
-<span class="sourceLineNo">293</span> } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span> return Flow.NO_MORE_STATE;<a name="line.294"></a>
-<span class="sourceLineNo">295</span> }<a name="line.295"></a>
-<span class="sourceLineNo">296</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.296"></a>
-<span class="sourceLineNo">297</span> preSplitRegion(env);<a name="line.297"></a>
-<span class="sourceLineNo">298</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.298"></a>
-<span class="sourceLineNo">299</span> break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.300"></a>
-<span class="sourceLineNo">301</span> addChildProcedure(createUnassignProcedures(env));<a name="line.301"></a>
-<span class="sourceLineNo">302</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.302"></a>
-<span class="sourceLineNo">303</span> break;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.304"></a>
-<span class="sourceLineNo">305</span> checkClosedRegions(env);<a name="line.305"></a>
-<span class="sourceLineNo">306</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.306"></a>
-<span class="sourceLineNo">307</span> break;<a name="line.307"></a>
-<span class="sourceLineNo">308</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.308"></a>
-<span class="sourceLineNo">309</span> removeNonDefaultReplicas(env);<a name="line.309"></a>
-<span class="sourceLineNo">310</span> createDaughterRegions(env);<a name="line.310"></a>
-<span class="sourceLineNo">311</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.311"></a>
-<span class="sourceLineNo">312</span> break;<a name="line.312"></a>
-<span class="sourceLineNo">313</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.313"></a>
-<span class="sourceLineNo">314</span> writeMaxSequenceIdFile(env);<a name="line.314"></a>
-<span class="sourceLineNo">315</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.315"></a>
-<span class="sourceLineNo">316</span> break;<a name="line.316"></a>
-<span class="sourceLineNo">317</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.317"></a>
-<span class="sourceLineNo">318</span> preSplitRegionBeforeMETA(env);<a name="line.318"></a>
-<span class="sourceLineNo">319</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.319"></a>
-<span class="sourceLineNo">320</span> break;<a name="line.320"></a>
-<span class="sourceLineNo">321</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.321"></a>
-<span class="sourceLineNo">322</span> updateMeta(env);<a name="line.322"></a>
-<span class="sourceLineNo">323</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.323"></a>
-<span class="sourceLineNo">324</span> break;<a name="line.324"></a>
-<span class="sourceLineNo">325</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.325"></a>
-<span class="sourceLineNo">326</span> preSplitRegionAfterMETA(env);<a name="line.326"></a>
-<span class="sourceLineNo">327</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.327"></a>
-<span class="sourceLineNo">328</span> break;<a name="line.328"></a>
-<span class="sourceLineNo">329</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.329"></a>
-<span class="sourceLineNo">330</span> addChildProcedure(createAssignProcedures(env));<a name="line.330"></a>
-<span class="sourceLineNo">331</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.331"></a>
-<span class="sourceLineNo">332</span> break;<a name="line.332"></a>
-<span class="sourceLineNo">333</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.333"></a>
-<span class="sourceLineNo">334</span> postSplitRegion(env);<a name="line.334"></a>
-<span class="sourceLineNo">335</span> return Flow.NO_MORE_STATE;<a name="line.335"></a>
-<span class="sourceLineNo">336</span> default:<a name="line.336"></a>
-<span class="sourceLineNo">337</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.337"></a>
-<span class="sourceLineNo">338</span> }<a name="line.338"></a>
-<span class="sourceLineNo">339</span> } catch (IOException e) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span> String msg = "Splitting " + getParentRegion().getEncodedName() + ", " + this;<a name="line.340"></a>
-<span class="sourceLineNo">341</span> if (!isRollbackSupported(state)) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span> // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.342"></a>
-<span class="sourceLineNo">343</span> LOG.warn(msg, e);<a name="line.343"></a>
-<span class="sourceLineNo">344</span> } else {<a name="line.344"></a>
-<span class="sourceLineNo">345</span> LOG.error(msg, e);<a name="line.345"></a>
-<span class="sourceLineNo">346</span> setFailure("master-split-regions", e);<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> // if split fails, need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.349"></a>
-<span class="sourceLineNo">350</span> return Flow.HAS_MORE_STATE;<a name="line.350"></a>
-<span class="sourceLineNo">351</span> }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span> /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span> * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.354"></a>
-<span class="sourceLineNo">355</span> * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.355"></a>
-<span class="sourceLineNo">356</span> * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.356"></a>
-<span class="sourceLineNo">357</span> * See HBASE-19851 for details.<a name="line.357"></a>
-<span class="sourceLineNo">358</span> */<a name="line.358"></a>
-<span class="sourceLineNo">359</span> @Override<a name="line.359"></a>
-<span class="sourceLineNo">360</span> protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.360"></a>
-<span class="sourceLineNo">361</span> throws IOException, InterruptedException {<a name="line.361"></a>
-<span class="sourceLineNo">362</span> LOG.trace("{} rollback state={}", this, state);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span> try {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> switch (state) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.366"></a>
-<span class="sourceLineNo">367</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.367"></a>
-<span class="sourceLineNo">368</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.368"></a>
-<span class="sourceLineNo">369</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.369"></a>
-<span class="sourceLineNo">370</span> // PONR<a name="line.370"></a>
-<span class="sourceLineNo">371</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.371"></a>
-<span class="sourceLineNo">372</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.372"></a>
-<span class="sourceLineNo">373</span> break;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.374"></a>
-<span class="sourceLineNo">375</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.375"></a>
-<span class="sourceLineNo">376</span> deleteDaughterRegions(env);<a name="line.376"></a>
-<span class="sourceLineNo">377</span> break;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.378"></a>
-<span class="sourceLineNo">379</span> // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.379"></a>
-<span class="sourceLineNo">380</span> // we will bring parent region online<a name="line.380"></a>
-<span class="sourceLineNo">381</span> break;<a name="line.381"></a>
-<span class="sourceLineNo">382</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.382"></a>
-<span class="sourceLineNo">383</span> openParentRegion(env);<a name="line.383"></a>
-<span class="sourceLineNo">384</span> break;<a name="line.384"></a>
-<span class="sourceLineNo">385</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.385"></a>
-<span class="sourceLineNo">386</span> postRollBackSplitRegion(env);<a name="line.386"></a>
-<span class="sourceLineNo">387</span> break;<a name="line.387"></a>
-<span class="sourceLineNo">388</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.388"></a>
-<span class="sourceLineNo">389</span> break; // nothing to do<a name="line.389"></a>
-<span class="sourceLineNo">390</span> default:<a name="line.390"></a>
-<span class="sourceLineNo">391</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.391"></a>
-<span class="sourceLineNo">392</span> }<a name="line.392"></a>
-<span class="sourceLineNo">393</span> } catch (IOException e) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span> // This will be retried. Unless there is a bug in the code,<a name="line.394"></a>
-<span class="sourceLineNo">395</span> // this should be just a "temporary error" (e.g. network down)<a name="line.395"></a>
-<span class="sourceLineNo">396</span> LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.396"></a>
-<span class="sourceLineNo">397</span> " for splitting the region "<a name="line.397"></a>
-<span class="sourceLineNo">398</span> + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span> throw e;<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> /*<a name="line.403"></a>
-<span class="sourceLineNo">404</span> * Check whether we are in the state that can be rollback<a name="line.404"></a>
-<span class="sourceLineNo">405</span> */<a name="line.405"></a>
-<span class="sourceLineNo">406</span> @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span> protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span> switch (state) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.409"></a>
-<span class="sourceLineNo">410</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.410"></a>
-<span class="sourceLineNo">411</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.411"></a>
-<span class="sourceLineNo">412</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.412"></a>
-<span class="sourceLineNo">413</span> // It is not safe to rollback if we reach to these states.<a name="line.413"></a>
-<span class="sourceLineNo">414</span> return false;<a name="line.414"></a>
-<span class="sourceLineNo">415</span> default:<a name="line.415"></a>
-<span class="sourceLineNo">416</span> break;<a name="line.416"></a>
-<span class="sourceLineNo">417</span> }<a name="line.417"></a>
-<span class="sourceLineNo">418</span> return true;<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> @Override<a name="line.421"></a>
-<span class="sourceLineNo">422</span> protected SplitTableRegionState getState(final int stateId) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span> return SplitTableRegionState.forNumber(stateId);<a name="line.423"></a>
-<span class="sourceLineNo">424</span> }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span> @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span> protected int getStateId(final SplitTableRegionState state) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span> return state.getNumber();<a name="line.428"></a>
-<span class="sourceLineNo">429</span> }<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span> @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span> protected SplitTableRegionState getInitialState() {<a name="line.432"></a>
-<span class="sourceLineNo">433</span> return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<a name="line.433"></a>
-<span class="sourceLineNo">434</span> }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span> @Override<a name="line.436"></a>
-<span class="sourceLineNo">437</span> protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.437"></a>
-<span class="sourceLineNo">438</span> throws IOException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span> super.serializeStateData(serializer);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span> final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.441"></a>
-<span class="sourceLineNo">442</span> MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.442"></a>
-<span class="sourceLineNo">443</span> .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.443"></a>
-<span class="sourceLineNo">444</span> .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.444"></a>
-<span class="sourceLineNo">445</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterOneRI))<a name="line.445"></a>
-<span class="sourceLineNo">446</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterTwoRI));<a name="line.446"></a>
-<span class="sourceLineNo">447</span> serializer.serialize(splitTableRegionMsg.build());<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> @Override<a name="line.450"></a>
-<span class="sourceLineNo">451</span> protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.451"></a>
-<span class="sourceLineNo">452</span> throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span> super.deserializeStateData(serializer);<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span> final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.455"></a>
-<span class="sourceLineNo">456</span> serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.456"></a>
-<span class="sourceLineNo">457</span> setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.457"></a>
-<span class="sourceLineNo">458</span> setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.458"></a>
-<span class="sourceLineNo">459</span> assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span> daughterOneRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.460"></a>
-<span class="sourceLineNo">461</span> daughterTwoRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<a name="line.461"></a>
-<span class="sourceLineNo">462</span> }<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span> @Override<a name="line.464"></a>
-<span class="sourceLineNo">465</span> public void toStringClassDetails(StringBuilder sb) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span> sb.append(getClass().getSimpleName());<a name="line.466"></a>
-<span class="sourceLineNo">467</span> sb.append(" table=");<a name="line.467"></a>
-<span class="sourceLineNo">468</span> sb.append(getTableName());<a name="line.468"></a>
-<span class="sourceLineNo">469</span> sb.append(", parent=");<a name="line.469"></a>
-<span class="sourceLineNo">470</span> sb.append(getParentRegion().getShortNameToLog());<a name="line.470"></a>
-<span class="sourceLineNo">471</span> sb.append(", daughterA=");<a name="line.471"></a>
-<span class="sourceLineNo">472</span> sb.append(daughterOneRI.getShortNameToLog());<a name="line.472"></a>
-<span class="sourceLineNo">473</span> sb.append(", daughterB=");<a name="line.473"></a>
-<span class="sourceLineNo">474</span> sb.append(daughterTwoRI.getShortNameToLog());<a name="line.474"></a>
-<span class="sourceLineNo">475</span> }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span> private RegionInfo getParentRegion() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> return getRegion();<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> @Override<a name="line.481"></a>
-<span class="sourceLineNo">482</span> public TableOperationType getTableOperationType() {<a name="line.482"></a>
-<span class="sourceLineNo">483</span> return TableOperationType.REGION_SPLIT;<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> @Override<a name="line.486"></a>
-<span class="sourceLineNo">487</span> protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<a name="line.488"></a>
-<span class="sourceLineNo">489</span> }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span> private byte[] getSplitRow() {<a name="line.491"></a>
-<span class="sourceLineNo">492</span> return daughterTwoRI.getStartKey();<a name="line.492"></a>
-<span class="sourceLineNo">493</span> }<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span> private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.495"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.conf.Configuration;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.fs.FileSystem;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.fs.Path;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HConstants;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.ServerName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.TableName;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.regionserver.RegionSplitRestriction;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.regionserver.StoreFileInfo;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.regionserver.StoreUtils;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.CommonFSUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.WALSplitUtil;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.util.ReflectionUtils;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState;<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> * The procedure to split a region in a table.<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * Takes lock on the parent region.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * It holds the lock for the life of the procedure.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * <p>Throws exception on construction if determines context hostile to spllt (cluster going<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * down or master is shutting down or table is disabled).</p><a name="line.93"></a>
+<span class="sourceLineNo">094</span> */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>@InterfaceAudience.Private<a name="line.95"></a>
+<span class="sourceLineNo">096</span>public class SplitTableRegionProcedure<a name="line.96"></a>
+<span class="sourceLineNo">097</span> extends AbstractStateMachineRegionProcedure<SplitTableRegionState> {<a name="line.97"></a>
+<span class="sourceLineNo">098</span> private static final Logger LOG = LoggerFactory.getLogger(SplitTableRegionProcedure.class);<a name="line.98"></a>
+<span class="sourceLineNo">099</span> private RegionInfo daughterOneRI;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> private RegionInfo daughterTwoRI;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> private byte[] bestSplitRow;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> private RegionSplitPolicy splitPolicy;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span> public SplitTableRegionProcedure() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span> // Required by the Procedure framework to create the procedure on replay<a name="line.105"></a>
+<span class="sourceLineNo">106</span> }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span> public SplitTableRegionProcedure(final MasterProcedureEnv env,<a name="line.108"></a>
+<span class="sourceLineNo">109</span> final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span> super(env, regionToSplit);<a name="line.110"></a>
+<span class="sourceLineNo">111</span> preflightChecks(env, true);<a name="line.111"></a>
+<span class="sourceLineNo">112</span> // When procedure goes to run in its prepare step, it also does these checkOnline checks. Here<a name="line.112"></a>
+<span class="sourceLineNo">113</span> // we fail-fast on construction. There it skips the split with just a warning.<a name="line.113"></a>
+<span class="sourceLineNo">114</span> checkOnline(env, regionToSplit);<a name="line.114"></a>
+<span class="sourceLineNo">115</span> this.bestSplitRow = splitRow;<a name="line.115"></a>
+<span class="sourceLineNo">116</span> TableDescriptor tableDescriptor = env.getMasterServices().getTableDescriptors()<a name="line.116"></a>
+<span class="sourceLineNo">117</span> .get(getTableName());<a name="line.117"></a>
+<span class="sourceLineNo">118</span> Configuration conf = env.getMasterConfiguration();<a name="line.118"></a>
+<span class="sourceLineNo">119</span> if (hasBestSplitRow()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span> // Apply the split restriction for the table to the user-specified split point<a name="line.120"></a>
+<span class="sourceLineNo">121</span> RegionSplitRestriction splitRestriction =<a name="line.121"></a>
+<span class="sourceLineNo">122</span> RegionSplitRestriction.create(tableDescriptor, conf);<a name="line.122"></a>
+<span class="sourceLineNo">123</span> byte[] restrictedSplitRow = splitRestriction.getRestrictedSplitPoint(bestSplitRow);<a name="line.123"></a>
+<span class="sourceLineNo">124</span> if (!Bytes.equals(bestSplitRow, restrictedSplitRow)) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span> LOG.warn("The specified split point {} violates the split restriction of the table. "<a name="line.125"></a>
+<span class="sourceLineNo">126</span> + "Using {} as a split point.", Bytes.toStringBinary(bestSplitRow),<a name="line.126"></a>
+<span class="sourceLineNo">127</span> Bytes.toStringBinary(restrictedSplitRow));<a name="line.127"></a>
+<span class="sourceLineNo">128</span> bestSplitRow = restrictedSplitRow;<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> checkSplittable(env, regionToSplit);<a name="line.131"></a>
+<span class="sourceLineNo">132</span> final TableName table = regionToSplit.getTable();<a name="line.132"></a>
+<span class="sourceLineNo">133</span> final long rid = getDaughterRegionIdTimestamp(regionToSplit);<a name="line.133"></a>
+<span class="sourceLineNo">134</span> this.daughterOneRI = RegionInfoBuilder.newBuilder(table)<a name="line.134"></a>
+<span class="sourceLineNo">135</span> .setStartKey(regionToSplit.getStartKey())<a name="line.135"></a>
+<span class="sourceLineNo">136</span> .setEndKey(bestSplitRow)<a name="line.136"></a>
+<span class="sourceLineNo">137</span> .setSplit(false)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> .setRegionId(rid)<a name="line.138"></a>
+<span class="sourceLineNo">139</span> .build();<a name="line.139"></a>
+<span class="sourceLineNo">140</span> this.daughterTwoRI = RegionInfoBuilder.newBuilder(table)<a name="line.140"></a>
+<span class="sourceLineNo">141</span> .setStartKey(bestSplitRow)<a name="line.141"></a>
+<span class="sourceLineNo">142</span> .setEndKey(regionToSplit.getEndKey())<a name="line.142"></a>
+<span class="sourceLineNo">143</span> .setSplit(false)<a name="line.143"></a>
+<span class="sourceLineNo">144</span> .setRegionId(rid)<a name="line.144"></a>
+<span class="sourceLineNo">145</span> .build();<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span> if (tableDescriptor.getRegionSplitPolicyClassName() != null) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span> // Since we don't have region reference here, creating the split policy instance without it.<a name="line.148"></a>
+<span class="sourceLineNo">149</span> // This can be used to invoke methods which don't require Region reference. This instantiation<a name="line.149"></a>
+<span class="sourceLineNo">150</span> // of a class on Master-side though it only makes sense on the RegionServer-side is<a name="line.150"></a>
+<span class="sourceLineNo">151</span> // for Phoenix Local Indexing. Refer HBASE-12583 for more information.<a name="line.151"></a>
+<span class="sourceLineNo">152</span> Class<? extends RegionSplitPolicy> clazz =<a name="line.152"></a>
+<span class="sourceLineNo">153</span> RegionSplitPolicy.getSplitPolicyClass(tableDescriptor, conf);<a name="line.153"></a>
+<span class="sourceLineNo">154</span> this.splitPolicy = ReflectionUtils.newInstance(clazz, conf);<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> @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span> protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span> if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(),<a name="line.160"></a>
+<span class="sourceLineNo">161</span> daughterOneRI, daughterTwoRI)) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span> try {<a name="line.162"></a>
+<span class="sourceLineNo">163</span> LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());<a name="line.163"></a>
+<span class="sourceLineNo">164</span> } catch (IOException e) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span> // Ignore, just for logging<a name="line.165"></a>
+<span class="sourceLineNo">166</span> }<a name="line.166"></a>
+<span class="sourceLineNo">167</span> return LockState.LOCK_EVENT_WAIT;<a name="line.167"></a>
+<span class="sourceLineNo">168</span> }<a name="line.168"></a>
+<span class="sourceLineNo">169</span> return LockState.LOCK_ACQUIRED;<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> @Override<a name="line.172"></a>
+<span class="sourceLineNo">173</span> protected void releaseLock(final MasterProcedureEnv env) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span> env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughterOneRI,<a name="line.174"></a>
+<span class="sourceLineNo">175</span> daughterTwoRI);<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> public RegionInfo getDaughterOneRI() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span> return daughterOneRI;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span> public RegionInfo getDaughterTwoRI() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span> return daughterTwoRI;<a name="line.183"></a>
+<span class="sourceLineNo">184</span> }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span> private boolean hasBestSplitRow() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span> return bestSplitRow != null && bestSplitRow.length > 0;<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> * Check whether the region is splittable<a name="line.191"></a>
+<span class="sourceLineNo">192</span> * @param env MasterProcedureEnv<a name="line.192"></a>
+<span class="sourceLineNo">193</span> * @param regionToSplit parent Region to be split<a name="line.193"></a>
+<span class="sourceLineNo">194</span> */<a name="line.194"></a>
+<span class="sourceLineNo">195</span> private void checkSplittable(final MasterProcedureEnv env,<a name="line.195"></a>
+<span class="sourceLineNo">196</span> final RegionInfo regionToSplit) throws IOException {<a name="line.196"></a>
+<span class="sourceLineNo">197</span> // Ask the remote RS if this region is splittable.<a name="line.197"></a>
+<span class="sourceLineNo">198</span> // If we get an IOE, report it along w/ the failure so can see why we are not splittable at<a name="line.198"></a>
+<span class="sourceLineNo">199</span> // this time.<a name="line.199"></a>
+<span class="sourceLineNo">200</span> if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span> throw new IllegalArgumentException("Can't invoke split on non-default regions directly");<a name="line.201"></a>
+<span class="sourceLineNo">202</span> }<a name="line.202"></a>
+<span class="sourceLineNo">203</span> RegionStateNode node =<a name="line.203"></a>
+<span class="sourceLineNo">204</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.204"></a>
+<span class="sourceLineNo">205</span> IOException splittableCheckIOE = null;<a name="line.205"></a>
+<span class="sourceLineNo">206</span> boolean splittable = false;<a name="line.206"></a>
+<span class="sourceLineNo">207</span> if (node != null) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span> try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span> GetRegionInfoResponse response;<a name="line.209"></a>
+<span class="sourceLineNo">210</span> if (!hasBestSplitRow()) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span> LOG.info(<a name="line.211"></a>
+<span class="sourceLineNo">212</span> "{} splitKey isn't explicitly specified, will try to find a best split key from RS {}",<a name="line.212"></a>
+<span class="sourceLineNo">213</span> node.getRegionInfo().getRegionNameAsString(), node.getRegionLocation());<a name="line.213"></a>
+<span class="sourceLineNo">214</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.214"></a>
+<span class="sourceLineNo">215</span> node.getRegionInfo(), true);<a name="line.215"></a>
+<span class="sourceLineNo">216</span> bestSplitRow =<a name="line.216"></a>
+<span class="sourceLineNo">217</span> response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.217"></a>
+<span class="sourceLineNo">218</span> } else {<a name="line.218"></a>
+<span class="sourceLineNo">219</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.219"></a>
+<span class="sourceLineNo">220</span> node.getRegionInfo(), false);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> }<a name="line.221"></a>
+<span class="sourceLineNo">222</span> splittable = response.hasSplittable() && response.getSplittable();<a name="line.222"></a>
+<span class="sourceLineNo">223</span> if (LOG.isDebugEnabled()) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span> LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.224"></a>
+<span class="sourceLineNo">225</span> }<a name="line.225"></a>
+<span class="sourceLineNo">226</span> } catch (IOException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span> splittableCheckIOE = e;<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> if (!splittable) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span> IOException e =<a name="line.232"></a>
+<span class="sourceLineNo">233</span> new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.233"></a>
+<span class="sourceLineNo">234</span> if (splittableCheckIOE != null) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span> e.initCause(splittableCheckIOE);<a name="line.235"></a>
+<span class="sourceLineNo">236</span> }<a name="line.236"></a>
+<span class="sourceLineNo">237</span> throw e;<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> if (!hasBestSplitRow()) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, " +<a name="line.241"></a>
+<span class="sourceLineNo">242</span> "maybe table is too small for auto split. For force split, try specifying split row");<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> if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span> throw new DoNotRetryIOException(<a name="line.246"></a>
+<span class="sourceLineNo">247</span> "Split row is equal to startkey: " + Bytes.toStringBinary(bestSplitRow));<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> if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span> throw new DoNotRetryIOException("Split row is not inside region key range splitKey:" +<a name="line.251"></a>
+<span class="sourceLineNo">252</span> Bytes.toStringBinary(bestSplitRow) + " region: " + regionToSplit);<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> /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span> * Calculate daughter regionid to use.<a name="line.257"></a>
+<span class="sourceLineNo">258</span> * @param hri Parent {@link RegionInfo}<a name="line.258"></a>
+<span class="sourceLineNo">259</span> * @return Daughter region id (timestamp) to use.<a name="line.259"></a>
+<span class="sourceLineNo">260</span> */<a name="line.260"></a>
+<span class="sourceLineNo">261</span> private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span> long rid = EnvironmentEdgeManager.currentTime();<a name="line.262"></a>
+<span class="sourceLineNo">263</span> // Regionid is timestamp. Can't be less than that of parent else will insert<a name="line.263"></a>
+<span class="sourceLineNo">264</span> // at wrong location in hbase:meta (See HBASE-710).<a name="line.264"></a>
+<span class="sourceLineNo">265</span> if (rid < hri.getRegionId()) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span> LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.266"></a>
+<span class="sourceLineNo">267</span> " but current time here is " + rid);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> rid = hri.getRegionId() + 1;<a name="line.268"></a>
+<span class="sourceLineNo">269</span> }<a name="line.269"></a>
+<span class="sourceLineNo">270</span> return rid;<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> private void removeNonDefaultReplicas(MasterProcedureEnv env) throws IOException {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> AssignmentManagerUtil.removeNonDefaultReplicas(env, Stream.of(getParentRegion()),<a name="line.274"></a>
+<span class="sourceLineNo">275</span> getRegionReplication(env));<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> private void checkClosedRegions(MasterProcedureEnv env) throws IOException {<a name="line.278"></a>
+<span class="sourceLineNo">279</span> // theoretically this should not happen any more after we use TRSP, but anyway let's add a check<a name="line.279"></a>
+<span class="sourceLineNo">280</span> // here<a name="line.280"></a>
+<span class="sourceLineNo">281</span> AssignmentManagerUtil.checkClosedRegion(env, getParentRegion());<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> @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span> protected Flow executeFromState(MasterProcedureEnv env, SplitTableRegionState state)<a name="line.285"></a>
+<span class="sourceLineNo">286</span> throws InterruptedException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span> LOG.trace("{} execute state={}", this, state);<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span> try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> switch (state) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.291"></a>
+<span class="sourceLineNo">292</span> if (prepareSplitRegion(env)) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.293"></a>
+<span class="sourceLineNo">294</span> break;<a name="line.294"></a>
+<span class="sourceLineNo">295</span> } else {<a name="line.295"></a>
+<span class="sourceLineNo">296</span> return Flow.NO_MORE_STATE;<a name="line.296"></a>
+<span class="sourceLineNo">297</span> }<a name="line.297"></a>
+<span class="sourceLineNo">298</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.298"></a>
+<span class="sourceLineNo">299</span> preSplitRegion(env);<a name="line.299"></a>
+<span class="sourceLineNo">300</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.300"></a>
+<span class="sourceLineNo">301</span> break;<a name="line.301"></a>
+<span class="sourceLineNo">302</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.302"></a>
+<span class="sourceLineNo">303</span> addChildProcedure(createUnassignProcedures(env));<a name="line.303"></a>
+<span class="sourceLineNo">304</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.304"></a>
+<span class="sourceLineNo">305</span> break;<a name="line.305"></a>
+<span class="sourceLineNo">306</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.306"></a>
+<span class="sourceLineNo">307</span> checkClosedRegions(env);<a name="line.307"></a>
+<span class="sourceLineNo">308</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.308"></a>
+<span class="sourceLineNo">309</span> break;<a name="line.309"></a>
+<span class="sourceLineNo">310</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.310"></a>
+<span class="sourceLineNo">311</span> removeNonDefaultReplicas(env);<a name="line.311"></a>
+<span class="sourceLineNo">312</span> createDaughterRegions(env);<a name="line.312"></a>
+<span class="sourceLineNo">313</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.313"></a>
+<span class="sourceLineNo">314</span> break;<a name="line.314"></a>
+<span class="sourceLineNo">315</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.315"></a>
+<span class="sourceLineNo">316</span> writeMaxSequenceIdFile(env);<a name="line.316"></a>
+<span class="sourceLineNo">317</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.317"></a>
+<span class="sourceLineNo">318</span> break;<a name="line.318"></a>
+<span class="sourceLineNo">319</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.319"></a>
+<span class="sourceLineNo">320</span> preSplitRegionBeforeMETA(env);<a name="line.320"></a>
+<span class="sourceLineNo">321</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.321"></a>
+<span class="sourceLineNo">322</span> break;<a name="line.322"></a>
+<span class="sourceLineNo">323</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.323"></a>
+<span class="sourceLineNo">324</span> updateMeta(env);<a name="line.324"></a>
+<span class="sourceLineNo">325</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.325"></a>
+<span class="sourceLineNo">326</span> break;<a name="line.326"></a>
+<span class="sourceLineNo">327</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.327"></a>
+<span class="sourceLineNo">328</span> preSplitRegionAfterMETA(env);<a name="line.328"></a>
+<span class="sourceLineNo">329</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.329"></a>
+<span class="sourceLineNo">330</span> break;<a name="line.330"></a>
+<span class="sourceLineNo">331</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.331"></a>
+<span class="sourceLineNo">332</span> addChildProcedure(createAssignProcedures(env));<a name="line.332"></a>
+<span class="sourceLineNo">333</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.333"></a>
+<span class="sourceLineNo">334</span> break;<a name="line.334"></a>
+<span class="sourceLineNo">335</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.335"></a>
+<span class="sourceLineNo">336</span> postSplitRegion(env);<a name="line.336"></a>
+<span class="sourceLineNo">337</span> return Flow.NO_MORE_STATE;<a name="line.337"></a>
+<span class="sourceLineNo">338</span> default:<a name="line.338"></a>
+<span class="sourceLineNo">339</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.339"></a>
+<span class="sourceLineNo">340</span> }<a name="line.340"></a>
+<span class="sourceLineNo">341</span> } catch (IOException e) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span> String msg = "Splitting " + getParentRegion().getEncodedName() + ", " + this;<a name="line.342"></a>
+<span class="sourceLineNo">343</span> if (!isRollbackSupported(state)) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> LOG.warn(msg, e);<a name="line.345"></a>
+<span class="sourceLineNo">346</span> } else {<a name="line.346"></a>
+<span class="sourceLineNo">347</span> LOG.error(msg, e);<a name="line.347"></a>
+<span class="sourceLineNo">348</span> setFailure("master-split-regions", e);<a name="line.348"></a>
+<span class="sourceLineNo">349</span> }<a name="line.349"></a>
+<span class="sourceLineNo">350</span> }<a name="line.350"></a>
+<span class="sourceLineNo">351</span> // if split fails, need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.351"></a>
+<span class="sourceLineNo">352</span> return Flow.HAS_MORE_STATE;<a name="line.352"></a>
+<span class="sourceLineNo">353</span> }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span> /**<a name="line.355"></a>
+<span class="sourceLineNo">356</span> * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.356"></a>
+<span class="sourceLineNo">357</span> * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.357"></a>
+<span class="sourceLineNo">358</span> * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.358"></a>
+<span class="sourceLineNo">359</span> * See HBASE-19851 for details.<a name="line.359"></a>
+<span class="sourceLineNo">360</span> */<a name="line.360"></a>
+<span class="sourceLineNo">361</span> @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span> protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.362"></a>
+<span class="sourceLineNo">363</span> throws IOException, InterruptedException {<a name="line.363"></a>
+<span class="sourceLineNo">364</span> LOG.trace("{} rollback state={}", this, state);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span> try {<a name="line.366"></a>
+<span class="sourceLineNo">367</span> switch (state) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.368"></a>
+<span class="sourceLineNo">369</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.369"></a>
+<span class="sourceLineNo">370</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.370"></a>
+<span class="sourceLineNo">371</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.371"></a>
+<span class="sourceLineNo">372</span> // PONR<a name="line.372"></a>
+<span class="sourceLineNo">373</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.373"></a>
+<span class="sourceLineNo">374</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.374"></a>
+<span class="sourceLineNo">375</span> break;<a name="line.375"></a>
+<span class="sourceLineNo">376</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.376"></a>
+<span class="sourceLineNo">377</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.377"></a>
+<span class="sourceLineNo">378</span> deleteDaughterRegions(env);<a name="line.378"></a>
+<span class="sourceLineNo">379</span> break;<a name="line.379"></a>
+<span class="sourceLineNo">380</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.380"></a>
+<span class="sourceLineNo">381</span> // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.381"></a>
+<span class="sourceLineNo">382</span> // we will bring parent region online<a name="line.382"></a>
+<span class="sourceLineNo">383</span> break;<a name="line.383"></a>
+<span class="sourceLineNo">384</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.384"></a>
+<span class="sourceLineNo">385</span> openParentRegion(env);<a name="line.385"></a>
+<span class="sourceLineNo">386</span> break;<a name="line.386"></a>
+<span class="sourceLineNo">387</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.387"></a>
+<span class="sourceLineNo">388</span> postRollBackSplitRegion(env);<a name="line.388"></a>
+<span class="sourceLineNo">389</span> break;<a name="line.389"></a>
+<span class="sourceLineNo">390</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.390"></a>
+<span class="sourceLineNo">391</span> break; // nothing to do<a name="line.391"></a>
+<span class="sourceLineNo">392</span> default:<a name="line.392"></a>
+<span class="sourceLineNo">393</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.393"></a>
+<span class="sourceLineNo">394</span> }<a name="line.394"></a>
+<span class="sourceLineNo">395</span> } catch (IOException e) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span> // This will be retried. Unless there is a bug in the code,<a name="line.396"></a>
+<span class="sourceLineNo">397</span> // this should be just a "temporary error" (e.g. network down)<a name="line.397"></a>
+<span class="sourceLineNo">398</span> LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.398"></a>
+<span class="sourceLineNo">399</span> " for splitting the region "<a name="line.399"></a>
+<span class="sourceLineNo">400</span> + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.400"></a>
+<span class="sourceLineNo">401</span> throw e;<a name="line.401"></a>
+<span class="sourceLineNo">402</span> }<a name="line.402"></a>
+<span class="sourceLineNo">403</span> }<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span> /*<a name="line.405"></a>
+<span class="sourceLineNo">406</span> * Check whether we are in the state that can be rollback<a name="line.406"></a>
+<span class="sourceLineNo">407</span> */<a name="line.407"></a>
+<span class="sourceLineNo">408</span> @Override<a name="line.408"></a>
+<span class="sourceLineNo">409</span> protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> switch (state) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.411"></a>
+<span class="sourceLineNo">412</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.412"></a>
+<span class="sourceLineNo">413</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.413"></a>
+<span class="sourceLineNo">414</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.414"></a>
+<span class="sourceLineNo">415</span> // It is not safe to rollback if we reach to these states.<a name="line.415"></a>
+<span class="sourceLineNo">416</span> return false;<a name="line.416"></a>
+<span class="sourceLineNo">417</span> default:<a name="line.417"></a>
+<span class="sourceLineNo">418</span> break;<a name="line.418"></a>
+<span class="sourceLineNo">419</span> }<a name="line.419"></a>
+<span class="sourceLineNo">420</span> return true;<a name="line.420"></a>
+<span class="sourceLineNo">421</span> }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span> @Override<a name="line.423"></a>
+<span class="sourceLineNo">424</span> protected SplitTableRegionState getState(final int stateId) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span> return SplitTableRegionState.forNumber(stateId);<a name="line.425"></a>
+<span class="sourceLineNo">426</span> }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span> @Override<a name="line.428"></a>
+<span class="sourceLineNo">429</span> protected int getStateId(final SplitTableRegionState state) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span> return state.getNumber();<a name="line.430"></a>
+<span class="sourceLineNo">431</span> }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span> @Override<a name="line.433"></a>
+<span class="sourceLineNo">434</span> protected SplitTableRegionState getInitialState() {<a name="line.434"></a>
+<span class="sourceLineNo">435</span> return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<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> @Override<a name="line.438"></a>
+<span class="sourceLineNo">439</span> protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.439"></a>
+<span class="sourceLineNo">440</span> throws IOException {<a name="line.440"></a>
+<span class="sourceLineNo">441</span> super.serializeStateData(serializer);<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span> final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.443"></a>
+<span class="sourceLineNo">444</span> MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.444"></a>
+<span class="sourceLineNo">445</span> .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.445"></a>
+<span class="sourceLineNo">446</span> .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.446"></a>
+<span class="sourceLineNo">447</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterOneRI))<a name="line.447"></a>
+<span class="sourceLineNo">448</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterTwoRI));<a name="line.448"></a>
+<span class="sourceLineNo">449</span> serializer.serialize(splitTableRegionMsg.build());<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> @Override<a name="line.452"></a>
+<span class="sourceLineNo">453</span> protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.453"></a>
+<span class="sourceLineNo">454</span> throws IOException {<a name="line.454"></a>
+<span class="sourceLineNo">455</span> super.deserializeStateData(serializer);<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span> final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.457"></a>
+<span class="sourceLineNo">458</span> serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.458"></a>
+<span class="sourceLineNo">459</span> setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.459"></a>
+<span class="sourceLineNo">460</span> setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.460"></a>
+<span class="sourceLineNo">461</span> assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.461"></a>
+<span class="sourceLineNo">462</span> daughterOneRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.462"></a>
+<span class="sourceLineNo">463</span> daughterTwoRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<a name="line.463"></a>
+<span class="sourceLineNo">464</span> }<a name="line.464"></a>
+<span class="sourceLineNo">465</span><a name="line.465"></a>
+<span class="sourceLineNo">466</span> @Override<a name="line.466"></a>
+<span class="sourceLineNo">467</span> public void toStringClassDetails(StringBuilder sb) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span> sb.append(getClass().getSimpleName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span> sb.append(" table=");<a name="line.469"></a>
+<span class="sourceLineNo">470</span> sb.append(getTableName());<a name="line.470"></a>
+<span class="sourceLineNo">471</span> sb.append(", parent=");<a name="line.471"></a>
+<span class="sourceLineNo">472</span> sb.append(getParentRegion().getShortNameToLog());<a name="line.472"></a>
+<span class="sourceLineNo">473</span> sb.append(", daughterA=");<a name="line.473"></a>
+<span class="sourceLineNo">474</span> sb.append(daughterOneRI.getShortNameToLog());<a name="line.474"></a>
+<span class="sourceLineNo">475</span> sb.append(", daughterB=");<a name="line.475"></a>
+<span class="sourceLineNo">476</span> sb.append(daughterTwoRI.getShortNameToLog());<a name="line.476"></a>
+<span class="sourceLineNo">477</span> }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span> private RegionInfo getParentRegion() {<a name="line.479"></a>
+<span class="sourceLineNo">480</span> return getRegion();<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> @Override<a name="line.483"></a>
+<span class="sourceLineNo">484</span> public TableOperationType getTableOperationType() {<a name="line.484"></a>
+<span class="sourceLineNo">485</span> return TableOperationType.REGION_SPLIT;<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> @Override<a name="line.488"></a>
+<span class="sourceLineNo">489</span> protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span> return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<a name="line.490"></a>
+<span class="sourceLineNo">491</span> }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span> private byte[] getSplitRow() {<a name="line.493"></a>
+<span class="sourceLineNo">494</span> return daughterTwoRI.getStartKey();<a name="line.494"></a>
+<span class="sourceLineNo">495</span> }<a name="line.495"></a>
<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span> /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span> * Prepare to Split region.<a name="line.498"></a>
-<span class="sourceLineNo">499</span> * @param env MasterProcedureEnv<a name="line.499"></a>
-<span class="sourceLineNo">500</span> */<a name="line.500"></a>
-<span class="sourceLineNo">501</span> public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.501"></a>
-<span class="sourceLineNo">502</span> // Fail if we are taking snapshot for the given table<a name="line.502"></a>
-<span class="sourceLineNo">503</span> if (env.getMasterServices().getSnapshotManager()<a name="line.503"></a>
-<span class="sourceLineNo">504</span> .isTakingSnapshot(getParentRegion().getTable())) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span> setFailure(new IOException("Skip splitting region " + getParentRegion().getShortNameToLog() +<a name="line.505"></a>
-<span class="sourceLineNo">506</span> ", because we are taking snapshot for the table " + getParentRegion().getTable()));<a name="line.506"></a>
-<span class="sourceLineNo">507</span> return false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span> }<a name="line.508"></a>
-<span class="sourceLineNo">509</span> // Check whether the region is splittable<a name="line.509"></a>
-<span class="sourceLineNo">510</span> RegionStateNode node =<a name="line.510"></a>
-<span class="sourceLineNo">511</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span> if (node == null) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span> throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<a name="line.514"></a>
-<span class="sourceLineNo">515</span> }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span> RegionInfo parentHRI = node.getRegionInfo();<a name="line.517"></a>
-<span class="sourceLineNo">518</span> if (parentHRI == null) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span> LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.519"></a>
-<span class="sourceLineNo">520</span> return false;<a name="line.520"></a>
-<span class="sourceLineNo">521</span> }<a name="line.521"></a>
-<span class="sourceLineNo">522</span> // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.522"></a>
-<span class="sourceLineNo">523</span> // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.523"></a>
-<span class="sourceLineNo">524</span> // just before us.<a name="line.524"></a>
-<span class="sourceLineNo">525</span> if (node.isInState(State.SPLIT)) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span> LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.526"></a>
-<span class="sourceLineNo">527</span> return false;<a name="line.527"></a>
-<span class="sourceLineNo">528</span> }<a name="line.528"></a>
-<span class="sourceLineNo">529</span> if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span> LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.530"></a>
-<span class="sourceLineNo">531</span> return false;<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> // expected parent to be online or closed<a name="line.534"></a>
-<span class="sourceLineNo">535</span> if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span> // We may have SPLIT already?<a name="line.536"></a>
-<span class="sourceLineNo">537</span> setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.537"></a>
-<span class="sourceLineNo">538</span> " FAILED because state=" + node.getState() + "; expected " +<a name="line.538"></a>
-<span class="sourceLineNo">539</span> Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.539"></a>
-<span class="sourceLineNo">540</span> return false;<a name="line.540"></a>
-<span class="sourceLineNo">541</span> }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span> // Mostly this check is not used because we already check the switch before submit a split<a name="line.543"></a>
-<span class="sourceLineNo">544</span> // procedure. Just for safe, check the switch again. This procedure can be rollbacked if<a name="line.544"></a>
-<span class="sourceLineNo">545</span> // the switch was set to false after submit.<a name="line.545"></a>
-<span class="sourceLineNo">546</span> if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span> LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.547"></a>
-<span class="sourceLineNo">548</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.548"></a>
-<span class="sourceLineNo">549</span> " failed due to split switch off"));<a name="line.549"></a>
-<span class="sourceLineNo">550</span> return false;<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> if (!env.getMasterServices().getTableDescriptors().get(getTableName()).isSplitEnabled()) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span> LOG.warn("pid={}, split is disabled for the table! Skipping split of {}", getProcId(),<a name="line.554"></a>
-<span class="sourceLineNo">555</span> parentHRI);<a name="line.555"></a>
-<span class="sourceLineNo">556</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString()<a name="line.556"></a>
-<span class="sourceLineNo">557</span> + " failed as region split is disabled for the table"));<a name="line.557"></a>
-<span class="sourceLineNo">558</span> return false;<a name="line.558"></a>
-<span class="sourceLineNo">559</span> }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span> // set node state as SPLITTING<a name="line.561"></a>
-<span class="sourceLineNo">562</span> node.setState(State.SPLITTING);<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span> // Since we have the lock and the master is coordinating the operation<a name="line.564"></a>
-<span class="sourceLineNo">565</span> // we are always able to split the region<a name="line.565"></a>
-<span class="sourceLineNo">566</span> return true;<a name="line.566"></a>
-<span class="sourceLineNo">567</span> }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> /**<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * Action before splitting region in a table.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> * @param env MasterProcedureEnv<a name="line.571"></a>
-<span class="sourceLineNo">572</span> */<a name="line.572"></a>
-<span class="sourceLineNo">573</span> private void preSplitRegion(final MasterProcedureEnv env)<a name="line.573"></a>
-<span class="sourceLineNo">574</span> throws IOException, InterruptedException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.575"></a>
-<span class="sourceLineNo">576</span> if (cpHost != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span> cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.577"></a>
-<span class="sourceLineNo">578</span> }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span> // TODO: Clean up split and merge. Currently all over the place.<a name="line.580"></a>
-<span class="sourceLineNo">581</span> // Notify QuotaManager and RegionNormalizer<a name="line.581"></a>
-<span class="sourceLineNo">582</span> try {<a name="line.582"></a>
-<span class="sourceLineNo">583</span> env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.583"></a>
-<span class="sourceLineNo">584</span> } catch (QuotaExceededException e) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span> // TODO: why is this here? split requests can be submitted by actors other than the normalizer<a name="line.585"></a>
-<span class="sourceLineNo">586</span> env.getMasterServices()<a name="line.586"></a>
-<span class="sourceLineNo">587</span> .getRegionNormalizerManager()<a name="line.587"></a>
-<span class="sourceLineNo">588</span> .planSkipped(NormalizationPlan.PlanType.SPLIT);<a name="line.588"></a>
-<span class="sourceLineNo">589</span> throw e;<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><a name="line.592"></a>
-<span class="sourceLineNo">593</span> /**<a name="line.593"></a>
-<span class="sourceLineNo">594</span> * Action after rollback a split table region action.<a name="line.594"></a>
-<span class="sourceLineNo">595</span> * @param env MasterProcedureEnv<a name="line.595"></a>
-<span class="sourceLineNo">596</span> */<a name="line.596"></a>
-<span class="sourceLineNo">597</span> private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.597"></a>
-<span class="sourceLineNo">598</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.598"></a>
-<span class="sourceLineNo">599</span> if (cpHost != null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span> cpHost.postRollBackSplitRegionAction(getUser());<a name="line.600"></a>
-<span class="sourceLineNo">601</span> }<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> /**<a name="line.604"></a>
-<span class="sourceLineNo">605</span> * Rollback close parent region<a name="line.605"></a>
-<span class="sourceLineNo">606</span> */<a name="line.606"></a>
-<span class="sourceLineNo">607</span> private void openParentRegion(MasterProcedureEnv env) throws IOException {<a name="line.607"></a>
-<span class="sourceLineNo">608</span> AssignmentManagerUtil.reopenRegionsForRollback(env,<a name="line.608"></a>
-<span class="sourceLineNo">609</span> Collections.singletonList((getParentRegion())), getRegionReplication(env),<a name="line.609"></a>
-<span class="sourceLineNo">610</span> getParentRegionServerName(env));<a name="line.610"></a>
-<span class="sourceLineNo">611</span> }<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> * Create daughter regions<a name="line.614"></a>
-<span class="sourceLineNo">615</span> */<a name="line.615"></a>
-<span class="sourceLineNo">616</span> public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.617"></a>
-<span class="sourceLineNo">618</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.618"></a>
-<span class="sourceLineNo">619</span> final FileSystem fs = mfs.getFileSystem();<a name="line.619"></a>
-<span class="sourceLineNo">620</span> HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.620"></a>
-<span class="sourceLineNo">621</span> env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span> regionFs.createSplitsDir(daughterOneRI, daughterTwoRI);<a name="line.623"></a>
+<span class="sourceLineNo">497</span> private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span> /**<a name="line.499"></a>
+<span class="sourceLineNo">500</span> * Prepare to Split region.<a name="line.500"></a>
+<span class="sourceLineNo">501</span> * @param env MasterProcedureEnv<a name="line.501"></a>
+<span class="sourceLineNo">502</span> */<a name="line.502"></a>
+<span class="sourceLineNo">503</span> public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.503"></a>
+<span class="sourceLineNo">504</span> // Fail if we are taking snapshot for the given table<a name="line.504"></a>
+<span class="sourceLineNo">505</span> if (env.getMasterServices().getSnapshotManager()<a name="line.505"></a>
+<span class="sourceLineNo">506</span> .isTakingSnapshot(getParentRegion().getTable())) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span> setFailure(new IOException("Skip splitting region " + getParentRegion().getShortNameToLog() +<a name="line.507"></a>
+<span class="sourceLineNo">508</span> ", because we are taking snapshot for the table " + getParentRegion().getTable()));<a name="line.508"></a>
+<span class="sourceLineNo">509</span> return false;<a name="line.509"></a>
+<span class="sourceLineNo">510</span> }<a name="line.510"></a>
+<span class="sourceLineNo">511</span> // Check whether the region is splittable<a name="line.511"></a>
+<span class="sourceLineNo">512</span> RegionStateNode node =<a name="line.512"></a>
+<span class="sourceLineNo">513</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span> if (node == null) {<a name="line.515"></a>
+<span class="sourceLineNo">516</span> throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<a name="line.516"></a>
+<span class="sourceLineNo">517</span> }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span> RegionInfo parentHRI = node.getRegionInfo();<a name="line.519"></a>
+<span class="sourceLineNo">520</span> if (parentHRI == null) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span> LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.521"></a>
+<span class="sourceLineNo">522</span> return false;<a name="line.522"></a>
+<span class="sourceLineNo">523</span> }<a name="line.523"></a>
+<span class="sourceLineNo">524</span> // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.524"></a>
+<span class="sourceLineNo">525</span> // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.525"></a>
+<span class="sourceLineNo">526</span> // just before us.<a name="line.526"></a>
+<span class="sourceLineNo">527</span> if (node.isInState(State.SPLIT)) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span> LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.528"></a>
+<span class="sourceLineNo">529</span> return false;<a name="line.529"></a>
+<span class="sourceLineNo">530</span> }<a name="line.530"></a>
+<span class="sourceLineNo">531</span> if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span> LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.532"></a>
+<span class="sourceLineNo">533</span> return false;<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> // expected parent to be online or closed<a name="line.536"></a>
+<span class="sourceLineNo">537</span> if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.537"></a>
+<span class="sourceLineNo">538</span> // We may have SPLIT already?<a name="line.538"></a>
+<span class="sourceLineNo">539</span> setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.539"></a>
+<span class="sourceLineNo">540</span> " FAILED because state=" + node.getState() + "; expected " +<a name="line.540"></a>
+<span class="sourceLineNo">541</span> Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.541"></a>
+<span class="sourceLineNo">542</span> return false;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span> // Mostly this check is not used because we already check the switch before submit a split<a name="line.545"></a>
+<span class="sourceLineNo">546</span> // procedure. Just for safe, check the switch again. This procedure can be rollbacked if<a name="line.546"></a>
+<span class="sourceLineNo">547</span> // the switch was set to false after submit.<a name="line.547"></a>
+<span class="sourceLineNo">548</span> if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span> LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.549"></a>
+<span class="sourceLineNo">550</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.550"></a>
+<span class="sourceLineNo">551</span> " failed due to split switch off"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span> return false;<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> if (!env.getMasterServices().getTableDescriptors().get(getTableName()).isSplitEnabled()) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span> LOG.warn("pid={}, split is disabled for the table! Skipping split of {}", getProcId(),<a name="line.556"></a>
+<span class="sourceLineNo">557</span> parentHRI);<a name="line.557"></a>
+<span class="sourceLineNo">558</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString()<a name="line.558"></a>
+<span class="sourceLineNo">559</span> + " failed as region split is disabled for the table"));<a name="line.559"></a>
+<span class="sourceLineNo">560</span> return false;<a name="line.560"></a>
+<span class="sourceLineNo">561</span> }<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span> // set node state as SPLITTING<a name="line.563"></a>
+<span class="sourceLineNo">564</span> node.setState(State.SPLITTING);<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span> // Since we have the lock and the master is coordinating the operation<a name="line.566"></a>
+<span class="sourceLineNo">567</span> // we are always able to split the region<a name="line.567"></a>
+<span class="sourceLineNo">568</span> return true;<a name="line.568"></a>
+<span class="sourceLineNo">569</span> }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span> /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span> * Action before splitting region in a table.<a name="line.572"></a>
+<span class="sourceLineNo">573</span> * @param env MasterProcedureEnv<a name="line.573"></a>
+<span class="sourceLineNo">574</span> */<a name="line.574"></a>
+<span class="sourceLineNo">575</span> private void preSplitRegion(final MasterProcedureEnv env)<a name="line.575"></a>
+<span class="sourceLineNo">576</span> throws IOException, InterruptedException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.577"></a>
+<span class="sourceLineNo">578</span> if (cpHost != null) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.579"></a>
+<span class="sourceLineNo">580</span> }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span> // TODO: Clean up split and merge. Currently all over the place.<a name="line.582"></a>
+<span class="sourceLineNo">583</span> // Notify QuotaManager and RegionNormalizer<a name="line.583"></a>
+<span class="sourceLineNo">584</span> try {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.585"></a>
+<span class="sourceLineNo">586</span> } catch (QuotaExceededException e) {<a name="line.586"></a>
+<span class="sourceLineNo">587</span> // TODO: why is this here? split requests can be submitted by actors other than the normalizer<a name="line.587"></a>
+<span class="sourceLineNo">588</span> env.getMasterServices()<a name="line.588"></a>
+<span class="sourceLineNo">589</span> .getRegionNormalizerManager()<a name="line.589"></a>
+<span class="sourceLineNo">590</span> .planSkipped(NormalizationPlan.PlanType.SPLIT);<a name="line.590"></a>
+<span class="sourceLineNo">591</span> throw e;<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><a name="line.594"></a>
+<span class="sourceLineNo">595</span> /**<a name="line.595"></a>
+<span class="sourceLineNo">596</span> * Action after rollback a split table region action.<a name="line.596"></a>
+<span class="sourceLineNo">597</span> * @param env MasterProcedureEnv<a name="line.597"></a>
+<span class="sourceLineNo">598</span> */<a name="line.598"></a>
+<span class="sourceLineNo">599</span> private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.599"></a>
+<span class="sourceLineNo">600</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.600"></a>
+<span class="sourceLineNo">601</span> if (cpHost != null) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span> cpHost.postRollBackSplitRegionAction(getUser());<a name="line.602"></a>
+<span class="sourceLineNo">603</span> }<a name="line.603"></a>
+<span class="sourceLineNo">604</span> }<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> * Rollback close parent region<a name="line.607"></a>
+<span class="sourceLineNo">608</span> */<a name="line.608"></a>
+<span class="sourceLineNo">609</span> private void openParentRegion(MasterProcedureEnv env) throws IOException {<a name="line.609"></a>
+<span class="sourceLineNo">610</span> AssignmentManagerUtil.reopenRegionsForRollback(env,<a name="line.610"></a>
+<span class="sourceLineNo">611</span> Collections.singletonList((getParentRegion())), getRegionReplication(env),<a name="line.611"></a>
+<span class="sourceLineNo">612</span> getParentRegionServerName(env));<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> /**<a name="line.615"></a>
+<span class="sourceLineNo">616</span> * Create daughter regions<a name="line.616"></a>
+<span class="sourceLineNo">617</span> */<a name="line.617"></a>
+<span class="sourceLineNo">618</span> public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.618"></a>
+<span class="sourceLineNo">619</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.619"></a>
+<span class="sourceLineNo">620</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.620"></a>
+<span class="sourceLineNo">621</span> final FileSystem fs = mfs.getFileSystem();<a name="line.621"></a>
+<span class="sourceLineNo">622</span> HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.622"></a>
+<span class="sourceLineNo">623</span> env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.623"></a>
<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span> Pair<Integer, Integer> expectedReferences = splitStoreFiles(env, regionFs);<a name="line.625"></a>
+<span class="sourceLineNo">625</span> regionFs.createSplitsDir(daughterOneRI, daughterTwoRI);<a name="line.625"></a>
<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span> assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.627"></a>
-<span class="sourceLineNo">628</span> regionFs.getSplitsDir(daughterOneRI));<a name="line.628"></a>
-<span class="sourceLineNo">629</span> regionFs.commitDaughterRegion(daughterOneRI);<a name="line.629"></a>
-<span class="sourceLineNo">630</span> assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.630"></a>
-<span class="sourceLineNo">631</span> new Path(tabledir, daughterOneRI.getEncodedName()));<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span> assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.633"></a>
-<span class="sourceLineNo">634</span> regionFs.getSplitsDir(daughterTwoRI));<a name="line.634"></a>
-<span class="sourceLineNo">635</span> regionFs.commitDaughterRegion(daughterTwoRI);<a name="line.635"></a>
-<span class="sourceLineNo">636</span> assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.636"></a>
-<span class="sourceLineNo">637</span> new Path(tabledir, daughterTwoRI.getEncodedName()));<a name="line.637"></a>
-<span class="sourceLineNo">638</span> }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span> private void deleteDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.640"></a>
-<span class="sourceLineNo">641</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.641"></a>
-<span class="sourceLineNo">642</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span> HRegionFileSystem.deleteRegionFromFileSystem(env.getMasterConfiguration(),<a name="line.643"></a>
-<span class="sourceLineNo">644</span> mfs.getFileSystem(), tabledir, daughterOneRI);<a name="line.644"></a>
+<span class="sourceLineNo">627</span> Pair<Integer, Integer> expectedReferences = splitStoreFiles(env, regionFs);<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span> assertSplitResultFilesCount(fs, expectedReferences.getFirst(),<a name="line.629"></a>
+<span class="sourceLineNo">630</span> regionFs.getSplitsDir(daughterOneRI));<a name="line.630"></a>
+<span class="sourceLineNo">631</span> regionFs.commitDaughterRegion(daughterOneRI);<a name="line.631"></a>
+<span class="sourceLineNo">632</span> assertSplitResultFilesCount(fs, expectedReferences.getFirst(),<a name="line.632"></a>
+<span class="sourceLineNo">633</span> new Path(tabledir, daughterOneRI.getEncodedName()));<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span> assertSplitResultFilesCount(fs, expectedReferences.getSecond(),<a name="line.635"></a>
+<span class="sourceLineNo">636</span> regionFs.getSplitsDir(daughterTwoRI));<a name="line.636"></a>
+<span class="sourceLineNo">637</span> regionFs.commitDaughterRegion(daughterTwoRI);<a name="line.637"></a>
+<span class="sourceLineNo">638</span> assertSplitResultFilesCount(fs, expectedReferences.getSecond(),<a name="line.638"></a>
+<span class="sourceLineNo">639</span> new Path(tabledir, daughterTwoRI.getEncodedName()));<a name="line.639"></a>
+<span class="sourceLineNo">640</span> }<a name="line.640"></a>
+<span class="sourceLineNo">641</span><a name="line.641"></a>
+<span class="sourceLineNo">642</span> private void deleteDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.642"></a>
+<span class="sourceLineNo">643</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.643"></a>
+<span class="sourceLineNo">644</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.644"></a>
<span class="sourceLineNo">645</span> HRegionFileSystem.deleteRegionFromFileSystem(env.getMasterConfiguration(),<a name="line.645"></a>
-<span class="sourceLineNo">646</span> mfs.getFileSystem(), tabledir, daughterTwoRI);<a name="line.646"></a>
-<span class="sourceLineNo">647</span> }<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span> /**<a name="line.649"></a>
-<span class="sourceLineNo">650</span> * Create Split directory<a name="line.650"></a>
-<span class="sourceLineNo">651</span> * @param env MasterProcedureEnv<a name="line.651"></a>
-<span class="sourceLineNo">652</span> */<a name="line.652"></a>
-<span class="sourceLineNo">653</span> private Pair<Integer, Integer> splitStoreFiles(final MasterProcedureEnv env,<a name="line.653"></a>
-<span class="sourceLineNo">654</span> final HRegionFileSystem regionFs) throws IOException {<a name="line.654"></a>
-<span class="sourceLineNo">655</span> final Configuration conf = env.getMasterConfiguration();<a name="line.655"></a>
-<span class="sourceLineNo">656</span> TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.656"></a>
-<span class="sourceLineNo">657</span> // The following code sets up a thread pool executor with as many slots as<a name="line.657"></a>
-<span class="sourceLineNo">658</span> // there's files to split. It then fires up everything, waits for<a name="line.658"></a>
-<span class="sourceLineNo">659</span> // completion and finally checks for any exception<a name="line.659"></a>
-<span class="sourceLineNo">660</span> //<a name="line.660"></a>
-<span class="sourceLineNo">661</span> // Note: From HBASE-26187, splitStoreFiles now creates daughter region dirs straight under the<a name="line.661"></a>
-<span class="sourceLineNo">662</span> // table dir. In case of failure, the proc would go through this again, already existing<a name="line.662"></a>
-<span class="sourceLineNo">663</span> // region dirs and split files would just be ignored, new split files should get created.<a name="line.663"></a>
-<span class="sourceLineNo">664</span> int nbFiles = 0;<a name="line.664"></a>
-<span class="sourceLineNo">665</span> final Map<String, Collection<StoreFileInfo>> files =<a name="line.665"></a>
-<span class="sourceLineNo">666</span> new HashMap<String, Collection<StoreFileInfo>>(htd.getColumnFamilyCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span> for (ColumnFamilyDescriptor cfd : htd.getColumnFamilies()) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span> String family = cfd.getNameAsString();<a name="line.668"></a>
-<span class="sourceLineNo">669</span> Collection<StoreFileInfo> sfis = regionFs.getStoreFiles(family);<a name="line.669"></a>
-<span class="sourceLineNo">670</span> if (sfis == null) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span> continue;<a name="line.671"></a>
-<span class="sourceLineNo">672</span> }<a name="line.672"></a>
-<span class="sourceLineNo">673</span> Collection<StoreFileInfo> filteredSfis = null;<a name="line.673"></a>
-<span class="sourceLineNo">674</span> for (StoreFileInfo sfi : sfis) {<a name="line.674"></a>
-<span class="sourceLineNo">675</span> // Filter. There is a lag cleaning up compacted reference files. They get cleared<a name="line.675"></a>
-<span class="sourceLineNo">676</span> // after a delay in case outstanding Scanners still have references. Because of this,<a name="line.676"></a>
-<span class="sourceLineNo">677</span> // the listing of the Store content may have straggler reference files. Skip these.<a name="line.677"></a>
-<span class="sourceLineNo">678</span> // It should be safe to skip references at this point because we checked above with<a name="line.678"></a>
-<span class="sourceLineNo">679</span> // the region if it thinks it is splittable and if we are here, it thinks it is<a name="line.679"></a>
-<span class="sourceLineNo">680</span> // splitable.<a name="line.680"></a>
-<span class="sourceLineNo">681</span> if (sfi.isReference()) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span> LOG.info("Skipping split of " + sfi + "; presuming ready for archiving.");<a name="line.682"></a>
-<span class="sourceLineNo">683</span> continue;<a name="line.683"></a>
-<span class="sourceLineNo">684</span> }<a name="line.684"></a>
-<span class="sourceLineNo">685</span> if (filteredSfis == null) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span> filteredSfis = new ArrayList<StoreFileInfo>(sfis.size());<a name="line.686"></a>
-<span class="sourceLineNo">687</span> files.put(family, filteredSfis);<a name="line.687"></a>
-<span class="sourceLineNo">688</span> }<a name="line.688"></a>
-<span class="sourceLineNo">689</span> filteredSfis.add(sfi);<a name="line.689"></a>
-<span class="sourceLineNo">690</span> nbFiles++;<a name="line.690"></a>
-<span class="sourceLineNo">691</span> }<a name="line.691"></a>
-<span class="sourceLineNo">692</span> }<a name="line.692"></a>
-<span class="sourceLineNo">693</span> if (nbFiles == 0) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span> // no file needs to be splitted.<a name="line.694"></a>
-<span class="sourceLineNo">695</span> return new Pair<Integer, Integer>(0, 0);<a name="line.695"></a>
-<span class="sourceLineNo">696</span> }<a name="line.696"></a>
-<span class="sourceLineNo">697</span> // Max #threads is the smaller of the number of storefiles or the default max determined above.<a name="line.697"></a>
-<span class="sourceLineNo">698</span> int maxThreads = Math.min(<a name="line.698"></a>
-<span class="sourceLineNo">699</span> conf.getInt(HConstants.REGION_SPLIT_THREADS_MAX,<a name="line.699"></a>
-<span class="sourceLineNo">700</span> conf.getInt(HStore.BLOCKING_STOREFILES_KEY, HStore.DEFAULT_BLOCKING_STOREFILE_COUNT)),<a name="line.700"></a>
-<span class="sourceLineNo">701</span> nbFiles);<a name="line.701"></a>
-<span class="sourceLineNo">702</span> LOG.info("pid=" + getProcId() + " splitting " + nbFiles + " storefiles, region=" +<a name="line.702"></a>
-<span class="sourceLineNo">703</span> getParentRegion().getShortNameToLog() + ", threads=" + maxThreads);<a name="line.703"></a>
-<span class="sourceLineNo">704</span> final ExecutorService threadPool = Executors.newFixedThreadPool(maxThreads,<a name="line.704"></a>
-<span class="sourceLineNo">705</span> new ThreadFactoryBuilder().setNameFormat("StoreFileSplitter-pool-%d").setDaemon(true)<a name="line.705"></a>
-<span class="sourceLineNo">706</span> .setUncaughtExceptionHandler(Threads.LOGGING_EXCEPTION_HANDLER).build());<a name="line.706"></a>
-<span class="sourceLineNo">707</span> final List<Future<Pair<Path, Path>>> futures = new ArrayList<Future<Pair<Path, Path>>>(nbFiles);<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span> // Split each store file.<a name="line.709"></a>
-<span class="sourceLineNo">710</span> for (Map.Entry<String, Collection<StoreFileInfo>> e : files.entrySet()) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span> byte[] familyName = Bytes.toBytes(e.getKey());<a name="line.711"></a>
-<span class="sourceLineNo">712</span> final ColumnFamilyDescriptor hcd = htd.getColumnFamily(familyName);<a name="line.712"></a>
-<span class="sourceLineNo">713</span> final Collection<StoreFileInfo> storeFiles = e.getValue();<a name="line.713"></a>
-<span class="sourceLineNo">714</span> if (storeFiles != null && storeFiles.size() > 0) {<a name="line.714"></a>
-<span class="sourceLineNo">715</span> final Configuration storeConfiguration =<a name="line.715"></a>
-<span class="sourceLineNo">716</span> StoreUtils.createStoreConfiguration(env.getMasterConfiguration(), htd, hcd);<a name="line.716"></a>
-<span class="sourceLineNo">717</span> for (StoreFileInfo storeFileInfo : storeFiles) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span> // As this procedure is running on master, use CacheConfig.DISABLED means<a name="line.718"></a>
-<span class="sourceLineNo">719</span> // don't cache any block.<a name="line.719"></a>
-<span class="sourceLineNo">720</span> // We also need to pass through a suitable CompoundConfiguration as if this<a name="line.720"></a>
-<span class="sourceLineNo">721</span> // is running in a regionserver's Store context, or we might not be able<a name="line.721"></a>
-<span class="sourceLineNo">722</span> // to read the hfiles.<a name="line.722"></a>
-<span class="sourceLineNo">723</span> storeFileInfo.setConf(storeConfiguration);<a name="line.723"></a>
-<span class="sourceLineNo">724</span> StoreFileSplitter sfs = new StoreFileSplitter(regionFs, familyName,<a name="line.724"></a>
-<span class="sourceLineNo">725</span> new HStoreFile(storeFileInfo, hcd.getBloomFilterType(), CacheConfig.DISABLED));<a name="line.725"></a>
-<span class="sourceLineNo">726</span> futures.add(threadPool.submit(sfs));<a name="line.726"></a>
-<span class="sourceLineNo">727</span> }<a name="line.727"></a>
-<span class="sourceLineNo">728</span> }<a name="line.728"></a>
-<span class="sourceLineNo">729</span> }<a name="line.729"></a>
-<span class="sourceLineNo">730</span> // Shutdown the pool<a name="line.730"></a>
-<span class="sourceLineNo">731</span> threadPool.shutdown();<a name="line.731"></a>
-<span class="sourceLineNo">732</span><a name="line.732"></a>
-<span class="sourceLineNo">733</span> // Wait for all the tasks to finish.<a name="line.733"></a>
-<span class="sourceLineNo">734</span> // When splits ran on the RegionServer, how-long-to-wait-configuration was named<a name="line.734"></a>
-<span class="sourceLineNo">735</span> // hbase.regionserver.fileSplitTimeout. If set, use its value.<a name="line.735"></a>
-<span class="sourceLineNo">736</span> long fileSplitTimeout = conf.getLong("hbase.master.fileSplitTimeout",<a name="line.736"></a>
-<span class="sourceLineNo">737</span> conf.getLong("hbase.regionserver.fileSplitTimeout", 600000));<a name="line.737"></a>
-<span class="sourceLineNo">738</span> try {<a name="line.738"></a>
-<span class="sourceLineNo">739</span> boolean stillRunning = !threadPool.awaitTermination(fileSplitTimeout, TimeUnit.MILLISECONDS);<a name="line.739"></a>
-<span class="sourceLineNo">740</span> if (stillRunning) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span> threadPool.shutdownNow();<a name="line.741"></a>
-<span class="sourceLineNo">742</span> // wait for the thread to shutdown completely.<a name="line.742"></a>
-<span class="sourceLineNo">743</span> while (!threadPool.isTerminated()) {<a name="line.743"></a>
-<span class="sourceLineNo">744</span> Thread.sleep(50);<a name="line.744"></a>
-<span class="sourceLineNo">745</span> }<a name="line.745"></a>
-<span class="sourceLineNo">746</span> throw new IOException(<a name="line.746"></a>
-<span class="sourceLineNo">747</span> "Took too long to split the" + " files and create the references, aborting split");<a name="line.747"></a>
-<span class="sourceLineNo">748</span> }<a name="line.748"></a>
-<span class="sourceLineNo">749</span> } catch (InterruptedException e) {<a name="line.749"></a>
-<span class="sourceLineNo">750</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.750"></a>
-<span class="sourceLineNo">751</span> }<a name="line.751"></a>
-<span class="sourceLineNo">752</span><a name="line.752"></a>
-<span class="sourceLineNo">753</span> int daughterA = 0;<a name="line.753"></a>
-<span class="sourceLineNo">754</span> int daughterB = 0;<a name="line.754"></a>
-<span class="sourceLineNo">755</span> // Look for any exception<a name="line.755"></a>
-<span class="sourceLineNo">756</span> for (Future<Pair<Path, Path>> future : futures) {<a name="line.756"></a>
-<span class="sourceLineNo">757</span> try {<a name="line.757"></a>
-<span class="sourceLineNo">758</span> Pair<Path, Path> p = future.get();<a name="line.758"></a>
-<span class="sourceLineNo">759</span> daughterA += p.getFirst() != null ? 1 : 0;<a name="line.759"></a>
-<span class="sourceLineNo">760</span> daughterB += p.getSecond() != null ? 1 : 0;<a name="line.760"></a>
-<span class="sourceLineNo">761</span> } catch (InterruptedException e) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.762"></a>
-<span class="sourceLineNo">763</span> } catch (ExecutionException e) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span> throw new IOException(e);<a name="line.764"></a>
-<span class="sourceLineNo">765</span> }<a name="line.765"></a>
-<span class="sourceLineNo">766</span> }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span> if (LOG.isDebugEnabled()) {<a name="line.768"></a>
-<span class="sourceLineNo">769</span> LOG.debug("pid=" + getProcId() + " split storefiles for region " +<a name="line.769"></a>
-<span class="sourceLineNo">770</span> getParentRegion().getShortNameToLog() + " Daughter A: " + daughterA +<a name="line.770"></a>
-<span class="sourceLineNo">771</span> " storefiles, Daughter B: " + daughterB + " storefiles.");<a name="line.771"></a>
-<span class="sourceLineNo">772</span> }<a name="line.772"></a>
-<span class="sourceLineNo">773</span> return new Pair<Integer, Integer>(daughterA, daughterB);<a name="line.773"></a>
-<span class="sourceLineNo">774</span> }<a name="line.774"></a>
-<span class="sourceLineNo">775</span><a name="line.775"></a>
-<span class="sourceLineNo">776</span> private void assertReferenceFileCount(final FileSystem fs, final int expectedReferenceFileCount,<a name="line.776"></a>
-<span class="sourceLineNo">777</span> final Path dir) throws IOException {<a name="line.777"></a>
-<span class="sourceLineNo">778</span> if (expectedReferenceFileCount != 0 &&<a name="line.778"></a>
-<span class="sourceLineNo">779</span> expectedReferenceFileCount != FSUtils.getRegionReferenceFileCount(fs, dir)) {<a name="line.779"></a>
-<span class="sourceLineNo">780</span> throw new IOException("Failing split. Expected reference file count isn't equal.");<a name="line.780"></a>
-<span class="sourceLineNo">781</span> }<a name="line.781"></a>
-<span class="sourceLineNo">782</span> }<a name="line.782"></a>
-<span class="sourceLineNo">783</span><a name="line.783"></a>
-<span class="sourceLineNo">784</span> private Pair<Path, Path> splitStoreFile(HRegionFileSystem regionFs, byte[] family, HStoreFile sf)<a name="line.784"></a>
-<span class="sourceLineNo">785</span> throws IOException {<a name="line.785"></a>
-<span class="sourceLineNo">786</span> if (LOG.isDebugEnabled()) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span> LOG.debug("pid=" + getProcId() + " splitting started for store file: " +<a name="line.787"></a>
-<span class="sourceLineNo">788</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.788"></a>
-<span class="sourceLineNo">789</span> }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span> final byte[] splitRow = getSplitRow();<a name="line.791"></a>
-<span class="sourceLineNo">792</span> final String familyName = Bytes.toString(family);<a name="line.792"></a>
-<span class="sourceLineNo">793</span> final Path path_first = regionFs.splitStoreFile(this.daughterOneRI, familyName, sf, splitRow,<a name="line.793"></a>
-<span class="sourceLineNo">794</span> false, splitPolicy);<a name="line.794"></a>
-<span class="sourceLineNo">795</span> final Path path_second = regionFs.splitStoreFile(this.daughterTwoRI, familyName, sf, splitRow,<a name="line.795"></a>
-<span class="sourceLineNo">796</span> true, splitPolicy);<a name="line.796"></a>
-<span class="sourceLineNo">797</span> if (LOG.isDebugEnabled()) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span> LOG.debug("pid=" + getProcId() + " splitting complete for store file: " +<a name="line.798"></a>
-<span class="sourceLineNo">799</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.799"></a>
-<span class="sourceLineNo">800</span> }<a name="line.800"></a>
-<span class="sourceLineNo">801</span> return new Pair<Path,Path>(path_first, path_second);<a name="line.801"></a>
-<span class="sourceLineNo">802</span> }<a name="line.802"></a>
-<span class="sourceLineNo">803</span><a name="line.803"></a>
-<span class="sourceLineNo">804</span> /**<a name="line.804"></a>
-<span class="sourceLineNo">805</span> * Utility class used to do the file splitting / reference writing<a name="line.805"></a>
-<span class="sourceLineNo">806</span> * in parallel instead of sequentially.<a name="line.806"></a>
-<span class="sourceLineNo">807</span> */<a name="line.807"></a>
-<span class="sourceLineNo">808</span> private class StoreFileSplitter implements Callable<Pair<Path,Path>> {<a name="line.808"></a>
-<span class="sourceLineNo">809</span> private final HRegionFileSystem regionFs;<a name="line.809"></a>
-<span class="sourceLineNo">810</span> private final byte[] family;<a name="line.810"></a>
-<span class="sourceLineNo">811</span> private final HStoreFile sf;<a name="line.811"></a>
-<span class="sourceLineNo">812</span><a name="line.812"></a>
-<span class="sourceLineNo">813</span> /**<a name="line.813"></a>
-<span class="sourceLineNo">814</span> * Constructor that takes what it needs to split<a name="line.814"></a>
-<span class="sourceLineNo">815</span> * @param regionFs the file system<a name="line.815"></a>
-<span class="sourceLineNo">816</span> * @param family Family that contains the store file<a name="line.816"></a>
-<span class="sourceLineNo">817</span> * @param sf which file<a name="line.817"></a>
-<span class="sourceLineNo">818</span> */<a name="line.818"></a>
-<span class="sourceLineNo">819</span> public StoreFileSplitter(HRegionFileSystem regionFs, byte[] family, HStoreFile sf) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span> this.regionFs = regionFs;<a name="line.820"></a>
-<span class="sourceLineNo">821</span> this.sf = sf;<a name="line.821"></a>
-<span class="sourceLineNo">822</span> this.family = family;<a name="line.822"></a>
-<span class="sourceLineNo">823</span> }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span> @Override<a name="line.825"></a>
-<span class="sourceLineNo">826</span> public Pair<Path,Path> call() throws IOException {<a name="line.826"></a>
-<span class="sourceLineNo">827</span> return splitStoreFile(regionFs, family, sf);<a name="line.827"></a>
-<span class="sourceLineNo">828</span> }<a name="line.828"></a>
-<span class="sourceLineNo">829</span> }<a name="line.829"></a>
+<span class="sourceLineNo">646</span> mfs.getFileSystem(), tabledir, daughterOneRI);<a name="line.646"></a>
+<span class="sourceLineNo">647</span> HRegionFileSystem.deleteRegionFromFileSystem(env.getMasterConfiguration(),<a name="line.647"></a>
+<span class="sourceLineNo">648</span> mfs.getFileSystem(), tabledir, daughterTwoRI);<a name="line.648"></a>
+<span class="sourceLineNo">649</span> }<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span> /**<a name="line.651"></a>
+<span class="sourceLineNo">652</span> * Create Split directory<a name="line.652"></a>
+<span class="sourceLineNo">653</span> * @param env MasterProcedureEnv<a name="line.653"></a>
+<span class="sourceLineNo">654</span> */<a name="line.654"></a>
+<span class="sourceLineNo">655</span> private Pair<Integer, Integer> splitStoreFiles(final MasterProcedureEnv env,<a name="line.655"></a>
+<span class="sourceLineNo">656</span> final HRegionFileSystem regionFs) throws IOException {<a name="line.656"></a>
+<span class="sourceLineNo">657</span> final Configuration conf = env.getMasterConfiguration();<a name="line.657"></a>
+<span class="sourceLineNo">658</span> TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.658"></a>
+<span class="sourceLineNo">659</span> // The following code sets up a thread pool executor with as many slots as<a name="line.659"></a>
+<span class="sourceLineNo">660</span> // there's files to split. It then fires up everything, waits for<a name="line.660"></a>
+<span class="sourceLineNo">661</span> // completion and finally checks for any exception<a name="line.661"></a>
+<span class="sourceLineNo">662</span> //<a name="line.662"></a>
+<span class="sourceLineNo">663</span> // Note: From HBASE-26187, splitStoreFiles now creates daughter region dirs straight under the<a name="line.663"></a>
+<span class="sourceLineNo">664</span> // table dir. In case of failure, the proc would go through this again, already existing<a name="line.664"></a>
+<span class="sourceLineNo">665</span> // region dirs and split files would just be ignored, new split files should get created.<a name="line.665"></a>
+<span class="sourceLineNo">666</span> int nbFiles = 0;<a name="line.666"></a>
+<span class="sourceLineNo">667</span> final Map<String, Collection<StoreFileInfo>> files =<a name="line.667"></a>
+<span class="sourceLineNo">668</span> new HashMap<String, Collection<StoreFileInfo>>(htd.getColumnFamilyCount());<a name="line.668"></a>
+<span class="sourceLineNo">669</span> for (ColumnFamilyDescriptor cfd : htd.getColumnFamilies()) {<a name="line.669"></a>
+<span class="sourceLineNo">670</span> String family = cfd.getNameAsString();<a name="line.670"></a>
+<span class="sourceLineNo">671</span> Collection<StoreFileInfo> sfis = regionFs.getStoreFiles(family);<a name="line.671"></a>
+<span class="sourceLineNo">672</span> if (sfis == null) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span> continue;<a name="line.673"></a>
+<span class="sourceLineNo">674</span> }<a name="line.674"></a>
+<span class="sourceLineNo">675</span> Collection<StoreFileInfo> filteredSfis = null;<a name="line.675"></a>
+<span class="sourceLineNo">676</span> for (StoreFileInfo sfi : sfis) {<a name="line.676"></a>
+<span class="sourceLineNo">677</span> // Filter. There is a lag cleaning up compacted reference files. They get cleared<a name="line.677"></a>
+<span class="sourceLineNo">678</span> // after a delay in case outstanding Scanners still have references. Because of this,<a name="line.678"></a>
+<span class="sourceLineNo">679</span> // the listing of the Store content may have straggler reference files. Skip these.<a name="line.679"></a>
+<span class="sourceLineNo">680</span> // It should be safe to skip references at this point because we checked above with<a name="line.680"></a>
+<span class="sourceLineNo">681</span> // the region if it thinks it is splittable and if we are here, it thinks it is<a name="line.681"></a>
+<span class="sourceLineNo">682</span> // splitable.<a name="line.682"></a>
+<span class="sourceLineNo">683</span> if (sfi.isReference()) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span> LOG.info("Skipping split of " + sfi + "; presuming ready for archiving.");<a name="line.684"></a>
+<span class="sourceLineNo">685</span> continue;<a name="line.685"></a>
+<span class="sourceLineNo">686</span> }<a name="line.686"></a>
+<span class="sourceLineNo">687</span> if (filteredSfis == null) {<a name="line.687"></a>
+<span class="sourceLineNo">688</span> filteredSfis = new ArrayList<StoreFileInfo>(sfis.size());<a name="line.688"></a>
+<span class="sourceLineNo">689</span> files.put(family, filteredSfis);<a name="line.689"></a>
+<span class="sourceLineNo">690</span> }<a name="line.690"></a>
+<span class="sourceLineNo">691</span> filteredSfis.add(sfi);<a name="line.691"></a>
+<span class="sourceLineNo">692</span> nbFiles++;<a name="line.692"></a>
+<span class="sourceLineNo">693</span> }<a name="line.693"></a>
+<span class="sourceLineNo">694</span> }<a name="line.694"></a>
+<span class="sourceLineNo">695</span> if (nbFiles == 0) {<a name="line.695"></a>
+<span class="sourceLineNo">696</span> // no file needs to be splitted.<a name="line.696"></a>
+<span class="sourceLineNo">697</span> return new Pair<Integer, Integer>(0, 0);<a name="line.697"></a>
+<span class="sourceLineNo">698</span> }<a name="line.698"></a>
+<span class="sourceLineNo">699</span> // Max #threads is the smaller of the number of storefiles or the default max determined above.<a name="line.699"></a>
+<span class="sourceLineNo">700</span> int maxThreads = Math.min(<a name="line.700"></a>
+<span class="sourceLineNo">701</span> conf.getInt(HConstants.REGION_SPLIT_THREADS_MAX,<a name="line.701"></a>
+<span class="sourceLineNo">702</span> conf.getInt(HStore.BLOCKING_STOREFILES_KEY, HStore.DEFAULT_BLOCKING_STOREFILE_COUNT)),<a name="line.702"></a>
+<span class="sourceLineNo">703</span> nbFiles);<a name="line.703"></a>
+<span class="sourceLineNo">704</span> LOG.info("pid=" + getProcId() + " splitting " + nbFiles + " storefiles, region=" +<a name="line.704"></a>
+<span class="sourceLineNo">705</span> getParentRegion().getShortNameToLog() + ", threads=" + maxThreads);<a name="line.705"></a>
+<span class="sourceLineNo">706</span> final ExecutorService threadPool = Executors.newFixedThreadPool(maxThreads,<a name="line.706"></a>
+<span class="sourceLineNo">707</span> new ThreadFactoryBuilder().setNameFormat("StoreFileSplitter-pool-%d").setDaemon(true)<a name="line.707"></a>
+<span class="sourceLineNo">708</span> .setUncaughtExceptionHandler(Threads.LOGGING_EXCEPTION_HANDLER).build());<a name="line.708"></a>
+<span class="sourceLineNo">709</span> final List<Future<Pair<Path, Path>>> futures = new ArrayList<Future<Pair<Path, Path>>>(nbFiles);<a name="line.709"></a>
+<span class="sourceLineNo">710</span><a name="line.710"></a>
+<span class="sourceLineNo">711</span> // Split each store file.<a name="line.711"></a>
+<span class="sourceLineNo">712</span> for (Map.Entry<String, Collection<StoreFileInfo>> e : files.entrySet()) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span> byte[] familyName = Bytes.toBytes(e.getKey());<a name="line.713"></a>
+<span class="sourceLineNo">714</span> final ColumnFamilyDescriptor hcd = htd.getColumnFamily(familyName);<a name="line.714"></a>
+<span class="sourceLineNo">715</span> final Collection<StoreFileInfo> storeFiles = e.getValue();<a name="line.715"></a>
+<span class="sourceLineNo">716</span> if (storeFiles != null && storeFiles.size() > 0) {<a name="line.716"></a>
+<span class="sourceLineNo">717</span> final Configuration storeConfiguration =<a name="line.717"></a>
+<span class="sourceLineNo">718</span> StoreUtils.createStoreConfiguration(env.getMasterConfiguration(), htd, hcd);<a name="line.718"></a>
+<span class="sourceLineNo">719</span> for (StoreFileInfo storeFileInfo : storeFiles) {<a name="line.719"></a>
+<span class="sourceLineNo">720</span> // As this procedure is running on master, use CacheConfig.DISABLED means<a name="line.720"></a>
+<span class="sourceLineNo">721</span> // don't cache any block.<a name="line.721"></a>
+<span class="sourceLineNo">722</span> // We also need to pass through a suitable CompoundConfiguration as if this<a name="line.722"></a>
+<span class="sourceLineNo">723</span> // is running in a regionserver's Store context, or we might not be able<a name="line.723"></a>
+<span class="sourceLineNo">724</span> // to read the hfiles.<a name="line.724"></a>
+<span class="sourceLineNo">725</span> storeFileInfo.setConf(storeConfiguration);<a name="line.725"></a>
+<span class="sourceLineNo">726</span> StoreFileSplitter sfs = new StoreFileSplitter(regionFs, familyName,<a name="line.726"></a>
+<span class="sourceLineNo">727</span> new HStoreFile(storeFileInfo, hcd.getBloomFilterType(), CacheConfig.DISABLED));<a name="line.727"></a>
+<span class="sourceLineNo">728</span> futures.add(threadPool.submit(sfs));<a name="line.728"></a>
+<span class="sourceLineNo">729</span> }<a name="line.729"></a>
+<span class="sourceLineNo">730</span> }<a name="line.730"></a>
+<span class="sourceLineNo">731</span> }<a name="line.731"></a>
+<span class="sourceLineNo">732</span> // Shutdown the pool<a name="line.732"></a>
+<span class="sourceLineNo">733</span> threadPool.shutdown();<a name="line.733"></a>
+<span class="sourceLineNo">734</span><a name="line.734"></a>
+<span class="sourceLineNo">735</span> // Wait for all the tasks to finish.<a name="line.735"></a>
+<span class="sourceLineNo">736</span> // When splits ran on the RegionServer, how-long-to-wait-configuration was named<a name="line.736"></a>
+<span class="sourceLineNo">737</span> // hbase.regionserver.fileSplitTimeout. If set, use its value.<a name="line.737"></a>
+<span class="sourceLineNo">738</span> long fileSplitTimeout = conf.getLong("hbase.master.fileSplitTimeout",<a name="line.738"></a>
+<span class="sourceLineNo">739</span> conf.getLong("hbase.regionserver.fileSplitTimeout", 600000));<a name="line.739"></a>
+<span class="sourceLineNo">740</span> try {<a name="line.740"></a>
+<span class="sourceLineNo">741</span> boolean stillRunning = !threadPool.awaitTermination(fileSplitTimeout, TimeUnit.MILLISECONDS);<a name="line.741"></a>
+<span class="sourceLineNo">742</span> if (stillRunning) {<a name="line.742"></a>
+<span class="sourceLineNo">743</span> threadPool.shutdownNow();<a name="line.743"></a>
+<span class="sourceLineNo">744</span> // wait for the thread to shutdown completely.<a name="line.744"></a>
+<span class="sourceLineNo">745</span> while (!threadPool.isTerminated()) {<a name="line.745"></a>
+<span class="sourceLineNo">746</span> Thread.sleep(50);<a name="line.746"></a>
+<span class="sourceLineNo">747</span> }<a name="line.747"></a>
+<span class="sourceLineNo">748</span> throw new IOException(<a name="line.748"></a>
+<span class="sourceLineNo">749</span> "Took too long to split the" + " files and create the references, aborting split");<a name="line.749"></a>
+<span class="sourceLineNo">750</span> }<a name="line.750"></a>
+<span class="sourceLineNo">751</span> } catch (InterruptedException e) {<a name="line.751"></a>
+<span class="sourceLineNo">752</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.752"></a>
+<span class="sourceLineNo">753</span> }<a name="line.753"></a>
+<span class="sourceLineNo">754</span><a name="line.754"></a>
+<span class="sourceLineNo">755</span> int daughterA = 0;<a name="line.755"></a>
+<span class="sourceLineNo">756</span> int daughterB = 0;<a name="line.756"></a>
+<span class="sourceLineNo">757</span> // Look for any exception<a name="line.757"></a>
+<span class="sourceLineNo">758</span> for (Future<Pair<Path, Path>> future : futures) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span> try {<a name="line.759"></a>
+<span class="sourceLineNo">760</span> Pair<Path, Path> p = future.get();<a name="line.760"></a>
+<span class="sourceLineNo">761</span> daughterA += p.getFirst() != null ? 1 : 0;<a name="line.761"></a>
+<span class="sourceLineNo">762</span> daughterB += p.getSecond() != null ? 1 : 0;<a name="line.762"></a>
+<span class="sourceLineNo">763</span> } catch (InterruptedException e) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.764"></a>
+<span class="sourceLineNo">765</span> } catch (ExecutionException e) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span> throw new IOException(e);<a name="line.766"></a>
+<span class="sourceLineNo">767</span> }<a name="line.767"></a>
+<span class="sourceLineNo">768</span> }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span> if (LOG.isDebugEnabled()) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span> LOG.debug("pid=" + getProcId() + " split storefiles for region " +<a name="line.771"></a>
+<span class="sourceLineNo">772</span> getParentRegion().getShortNameToLog() + " Daughter A: " + daughterA +<a name="line.772"></a>
+<span class="sourceLineNo">773</span> " storefiles, Daughter B: " + daughterB + " storefiles.");<a name="line.773"></a>
+<span class="sourceLineNo">774</span> }<a name="line.774"></a>
+<span class="sourceLineNo">775</span> return new Pair<Integer, Integer>(daughterA, daughterB);<a name="line.775"></a>
+<span class="sourceLineNo">776</span> }<a name="line.776"></a>
+<span class="sourceLineNo">777</span><a name="line.777"></a>
+<span class="sourceLineNo">778</span> private void assertSplitResultFilesCount(final FileSystem fs,<a name="line.778"></a>
+<span class="sourceLineNo">779</span> final int expectedSplitResultFileCount, Path dir)<a name="line.779"></a>
+<span class="sourceLineNo">780</span> throws IOException {<a name="line.780"></a>
+<span class="sourceLineNo">781</span> if (expectedSplitResultFileCount != 0) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span> int resultFileCount = FSUtils.getRegionReferenceAndLinkFileCount(fs, dir);<a name="line.782"></a>
+<span class="sourceLineNo">783</span> if (expectedSplitResultFileCount != resultFileCount) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span> throw new IOException("Failing split. Didn't have expected reference and HFileLink files"<a name="line.784"></a>
+<span class="sourceLineNo">785</span> + ", expected=" + expectedSplitResultFileCount + ", actual=" + resultFileCount);<a name="line.785"></a>
+<span class="sourceLineNo">786</span> }<a name="line.786"></a>
+<span class="sourceLineNo">787</span> }<a name="line.787"></a>
+<span class="sourceLineNo">788</span> }<a name="line.788"></a>
+<span class="sourceLineNo">789</span><a name="line.789"></a>
+<span class="sourceLineNo">790</span> private Pair<Path, Path> splitStoreFile(HRegionFileSystem regionFs, byte[] family, HStoreFile sf)<a name="line.790"></a>
+<span class="sourceLineNo">791</span> throws IOException {<a name="line.791"></a>
+<span class="sourceLineNo">792</span> if (LOG.isDebugEnabled()) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span> LOG.debug("pid=" + getProcId() + " splitting started for store file: " +<a name="line.793"></a>
+<span class="sourceLineNo">794</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.794"></a>
+<span class="sourceLineNo">795</span> }<a name="line.795"></a>
+<span class="sourceLineNo">796</span><a name="line.796"></a>
+<span class="sourceLineNo">797</span> final byte[] splitRow = getSplitRow();<a name="line.797"></a>
+<span class="sourceLineNo">798</span> final String familyName = Bytes.toString(family);<a name="line.798"></a>
+<span class="sourceLineNo">799</span> final Path path_first = regionFs.splitStoreFile(this.daughterOneRI, familyName, sf, splitRow,<a name="line.799"></a>
+<span class="sourceLineNo">800</span> false, splitPolicy);<a name="line.800"></a>
+<span class="sourceLineNo">801</span> final Path path_second = regionFs.splitStoreFile(this.daughterTwoRI, familyName, sf, splitRow,<a name="line.801"></a>
+<span class="sourceLineNo">802</span> true, splitPolicy);<a name="line.802"></a>
+<span class="sourceLineNo">803</span> if (LOG.isDebugEnabled()) {<a name="line.803"></a>
+<span class="sourceLineNo">804</span> LOG.debug("pid=" + getProcId() + " splitting complete for store file: " +<a name="line.804"></a>
+<span class="sourceLineNo">805</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.805"></a>
+<span class="sourceLineNo">806</span> }<a name="line.806"></a>
+<span class="sourceLineNo">807</span> return new Pair<Path,Path>(path_first, path_second);<a name="line.807"></a>
+<span class="sourceLineNo">808</span> }<a name="line.808"></a>
+<span class="sourceLineNo">809</span><a name="line.809"></a>
+<span class="sourceLineNo">810</span> /**<a name="line.810"></a>
+<span class="sourceLineNo">811</span> * Utility class used to do the file splitting / reference writing<a name="line.811"></a>
+<span class="sourceLineNo">812</span> * in parallel instead of sequentially.<a name="line.812"></a>
+<span class="sourceLineNo">813</span> */<a name="line.813"></a>
+<span class="sourceLineNo">814</span> private class StoreFileSplitter implements Callable<Pair<Path,Path>> {<a name="line.814"></a>
+<span class="sourceLineNo">815</span> private final HRegionFileSystem regionFs;<a name="line.815"></a>
+<span class="sourceLineNo">816</span> private final byte[] family;<a name="line.816"></a>
+<span class="sourceLineNo">817</span> private final HStoreFile sf;<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span> /**<a name="line.819"></a>
+<span class="sourceLineNo">820</span> * Constructor that takes what it needs to split<a name="line.820"></a>
+<span class="sourceLineNo">821</span> * @param regionFs the file system<a name="line.821"></a>
+<span class="sourceLineNo">822</span> * @param family Family that contains the store file<a name="line.822"></a>
+<span class="sourceLineNo">823</span> * @param sf which file<a name="line.823"></a>
+<span class="sourceLineNo">824</span> */<a name="line.824"></a>
+<span class="sourceLineNo">825</span> public StoreFileSplitter(HRegionFileSystem regionFs, byte[] family, HStoreFile sf) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span> this.regionFs = regionFs;<a name="line.826"></a>
+<span class="sourceLineNo">827</span> this.sf = sf;<a name="line.827"></a>
+<span class="sourceLineNo">828</span> this.family = family;<a name="line.828"></a>
+<span class="sourceLineNo">829</span> }<a name="line.829"></a>
<span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span> /**<a name="line.831"></a>
-<span class="sourceLineNo">832</span> * Post split region actions before the Point-of-No-Return step<a name="line.832"></a>
-<span class="sourceLineNo">833</span> * @param env MasterProcedureEnv<a name="line.833"></a>
-<span class="sourceLineNo">834</span> **/<a name="line.834"></a>
-<span class="sourceLineNo">835</span> private void preSplitRegionBeforeMETA(final MasterProcedureEnv env)<a name="line.835"></a>
-<span class="sourceLineNo">836</span> throws IOException, InterruptedException {<a name="line.836"></a>
-<span class="sourceLineNo">837</span> final List<Mutation> metaEntries = new ArrayList<Mutation>();<a name="line.837"></a>
-<span class="sourceLineNo">838</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.838"></a>
-<span class="sourceLineNo">839</span> if (cpHost != null) {<a name="line.839"></a>
-<span class="sourceLineNo">840</span> cpHost.preSplitBeforeMETAAction(getSplitRow(), metaEntries, getUser());<a name="line.840"></a>
-<span class="sourceLineNo">841</span> try {<a name="line.841"></a>
-<span class="sourceLineNo">842</span> for (Mutation p : metaEntries) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span> RegionInfo.parseRegionName(p.getRow());<a name="line.843"></a>
-<span class="sourceLineNo">844</span> }<a name="line.844"></a>
-<span class="sourceLineNo">845</span> } catch (IOException e) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span> LOG.error("pid=" + getProcId() + " row key of mutation from coprocessor not parsable as "<a name="line.846"></a>
-<span class="sourceLineNo">847</span> + "region name."<a name="line.847"></a>
-<span class="sourceLineNo">848</span> + "Mutations from coprocessor should only for hbase:meta table.");<a name="line.848"></a>
-<span class="sourceLineNo">849</span> throw e;<a name="line.849"></a>
-<span class="sourceLineNo">850</span> }<a name="line.850"></a>
-<span class="sourceLineNo">851</span> }<a name="line.851"></a>
-<span class="sourceLineNo">852</span> }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span> /**<a name="line.854"></a>
-<span class="sourceLineNo">855</span> * Add daughter regions to META<a name="line.855"></a>
-<span class="sourceLineNo">856</span> * @param env MasterProcedureEnv<a name="line.856"></a>
-<span class="sourceLineNo">857</span> */<a name="line.857"></a>
-<span class="sourceLineNo">858</span> private void updateMeta(final MasterProcedureEnv env) throws IOException {<a name="line.858"></a>
-<span class="sourceLineNo">859</span> env.getAssignmentManager().markRegionAsSplit(getParentRegion(), getParentRegionServerName(env),<a name="line.859"></a>
-<span class="sourceLineNo">860</span> daughterOneRI, daughterTwoRI);<a name="line.860"></a>
-<span class="sourceLineNo">861</span> }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span> /**<a name="line.863"></a>
-<span class="sourceLineNo">864</span> * Pre split region actions after the Point-of-No-Return step<a name="line.864"></a>
-<span class="sourceLineNo">865</span> * @param env MasterProcedureEnv<a name="line.865"></a>
-<span class="sourceLineNo">866</span> **/<a name="line.866"></a>
-<span class="sourceLineNo">867</span> private void preSplitRegionAfterMETA(final MasterProcedureEnv env)<a name="line.867"></a>
-<span class="sourceLineNo">868</span> throws IOException, InterruptedException {<a name="line.868"></a>
-<span class="sourceLineNo">869</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.869"></a>
-<span class="sourceLineNo">870</span> if (cpHost != null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span> cpHost.preSplitAfterMETAAction(getUser());<a name="line.871"></a>
-<span class="sourceLineNo">872</span> }<a name="line.872"></a>
-<span class="sourceLineNo">873</span> }<a name="line.873"></a>
-<span class="sourceLineNo">874</span><a name="line.874"></a>
-<span class="sourceLineNo">875</span> /**<a name="line.875"></a>
-<span class="sourceLineNo">876</span> * Post split region actions<a name="line.876"></a>
-<span class="sourceLineNo">877</span> * @param env MasterProcedureEnv<a name="line.877"></a>
-<span class="sourceLineNo">878</span> **/<a name="line.878"></a>
-<span class="sourceLineNo">879</span> private void postSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.879"></a>
-<span class="sourceLineNo">880</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.880"></a>
-<span class="sourceLineNo">881</span> if (cpHost != null) {<a name="line.881"></a>
-<span class="sourceLineNo">882</span> cpHost.postCompletedSplitRegionAction(daughterOneRI, daughterTwoRI, getUser());<a name="line.882"></a>
-<span class="sourceLineNo">883</span> }<a name="line.883"></a>
-<span class="sourceLineNo">884</span> }<a name="line.884"></a>
-<span class="sourceLineNo">885</span><a name="line.885"></a>
-<span class="sourceLineNo">886</span> private ServerName getParentRegionServerName(final MasterProcedureEnv env) {<a name="line.886"></a>
-<span class="sourceLineNo">887</span> return env.getMasterServices().getAssignmentManager().getRegionStates()<a name="line.887"></a>
-<span class="sourceLineNo">888</span> .getRegionServerOfRegion(getParentRegion());<a name="line.888"></a>
-<span class="sourceLineNo">889</span> }<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span> private TransitRegionStateProcedure[] createUnassignProcedures(MasterProcedureEnv env)<a name="line.891"></a>
-<span class="sourceLineNo">892</span> throws IOException {<a name="line.892"></a>
-<span class="sourceLineNo">893</span> return AssignmentManagerUtil.createUnassignProceduresForSplitOrMerge(env,<a name="line.893"></a>
-<span class="sourceLineNo">894</span> Stream.of(getParentRegion()), getRegionReplication(env));<a name="line.894"></a>
+<span class="sourceLineNo">831</span> @Override<a name="line.831"></a>
+<span class="sourceLineNo">832</span> public Pair<Path,Path> call() throws IOException {<a name="line.832"></a>
+<span class="sourceLineNo">833</span> return splitStoreFile(regionFs, family, sf);<a name="line.833"></a>
+<span class="sourceLineNo">834</span> }<a name="line.834"></a>
+<span class="sourceLineNo">835</span> }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span> /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span> * Post split region actions before the Point-of-No-Return step<a name="line.838"></a>
+<span class="sourceLineNo">839</span> * @param env MasterProcedureEnv<a name="line.839"></a>
+<span class="sourceLineNo">840</span> **/<a name="line.840"></a>
+<span class="sourceLineNo">841</span> private void preSplitRegionBeforeMETA(final MasterProcedureEnv env)<a name="line.841"></a>
+<span class="sourceLineNo">842</span> throws IOException, InterruptedException {<a name="line.842"></a>
+<span class="sourceLineNo">843</span> final List<Mutation> metaEntries = new ArrayList<Mutation>();<a name="line.843"></a>
+<span class="sourceLineNo">844</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.844"></a>
+<span class="sourceLineNo">845</span> if (cpHost != null) {<a name="line.845"></a>
+<span class="sourceLineNo">846</span> cpHost.preSplitBeforeMETAAction(getSplitRow(), metaEntries, getUser());<a name="line.846"></a>
+<span class="sourceLineNo">847</span> try {<a name="line.847"></a>
+<span class="sourceLineNo">848</span> for (Mutation p : metaEntries) {<a name="line.848"></a>
+<span class="sourceLineNo">849</span> RegionInfo.parseRegionName(p.getRow());<a name="line.849"></a>
+<span class="sourceLineNo">850</span> }<a name="line.850"></a>
+<span class="sourceLineNo">851</span> } catch (IOException e) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span> LOG.error("pid=" + getProcId() + " row key of mutation from coprocessor not parsable as "<a name="line.852"></a>
+<span class="sourceLineNo">853</span> + "region name."<a name="line.853"></a>
+<span class="sourceLineNo">854</span> + "Mutations from coprocessor should only for hbase:meta table.");<a name="line.854"></a>
+<span class="sourceLineNo">855</span> throw e;<a name="line.855"></a>
+<span class="sourceLineNo">856</span> }<a name="line.856"></a>
+<span class="sourceLineNo">857</span> }<a name="line.857"></a>
+<span class="sourceLineNo">858</span> }<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span> /**<a name="line.860"></a>
+<span class="sourceLineNo">861</span> * Add daughter regions to META<a name="line.861"></a>
+<span class="sourceLineNo">862</span> * @param env MasterProcedureEnv<a name="line.862"></a>
+<span class="sourceLineNo">863</span> */<a name="line.863"></a>
+<span class="sourceLineNo">864</span> private void updateMeta(final MasterProcedureEnv env) throws IOException {<a name="line.864"></a>
+<span class="sourceLineNo">865</span> env.getAssignmentManager().markRegionAsSplit(getParentRegion(), getParentRegionServerName(env),<a name="line.865"></a>
+<span class="sourceLineNo">866</span> daughterOneRI, daughterTwoRI);<a name="line.866"></a>
+<span class="sourceLineNo">867</span> }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span> /**<a name="line.869"></a>
+<span class="sourceLineNo">870</span> * Pre split region actions after the Point-of-No-Return step<a name="line.870"></a>
+<span class="sourceLineNo">871</span> * @param env MasterProcedureEnv<a name="line.871"></a>
+<span class="sourceLineNo">872</span> **/<a name="line.872"></a>
+<span class="sourceLineNo">873</span> private void preSplitRegionAfterMETA(final MasterProcedureEnv env)<a name="line.873"></a>
+<span class="sourceLineNo">874</span> throws IOException, InterruptedException {<a name="line.874"></a>
+<span class="sourceLineNo">875</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.875"></a>
+<span class="sourceLineNo">876</span> if (cpHost != null) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span> cpHost.preSplitAfterMETAAction(getUser());<a name="line.877"></a>
+<span class="sourceLineNo">878</span> }<a name="line.878"></a>
+<span class="sourceLineNo">879</span> }<a name="line.879"></a>
+<span class="sourceLineNo">880</span><a name="line.880"></a>
+<span class="sourceLineNo">881</span> /**<a name="line.881"></a>
+<span class="sourceLineNo">882</span> * Post split region actions<a name="line.882"></a>
+<span class="sourceLineNo">883</span> * @param env MasterProcedureEnv<a name="line.883"></a>
+<span class="sourceLineNo">884</span> **/<a name="line.884"></a>
+<span class="sourceLineNo">885</span> private void postSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.885"></a>
+<span class="sourceLineNo">886</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.886"></a>
+<span class="sourceLineNo">887</span> if (cpHost != null) {<a name="line.887"></a>
+<span class="sourceLineNo">888</span> cpHost.postCompletedSplitRegionAction(daughterOneRI, daughterTwoRI, getUser());<a name="line.888"></a>
+<span class="sourceLineNo">889</span> }<a name="line.889"></a>
+<span class="sourceLineNo">890</span> }<a name="line.890"></a>
+<span class="sourceLineNo">891</span><a name="line.891"></a>
+<span class="sourceLineNo">892</span> private ServerName getParentRegionServerName(final MasterProcedureEnv env) {<a name="line.892"></a>
+<span class="sourceLineNo">893</span> return env.getMasterServices().getAssignmentManager().getRegionStates()<a name="line.893"></a>
+<span class="sourceLineNo">894</span> .getRegionServerOfRegion(getParentRegion());<a name="line.894"></a>
<span class="sourceLineNo">895</span> }<a name="line.895"></a>
<span class="sourceLineNo">896</span><a name="line.896"></a>
-<span class="sourceLineNo">897</span> private TransitRegionStateProcedure[] createAssignProcedures(MasterProcedureEnv env)<a name="line.897"></a>
+<span class="sourceLineNo">897</span> private TransitRegionStateProcedure[] createUnassignProcedures(MasterProcedureEnv env)<a name="line.897"></a>
<span class="sourceLineNo">898</span> throws IOException {<a name="line.898"></a>
-<span class="sourceLineNo">899</span> List<RegionInfo> hris = new ArrayList<RegionInfo>(2);<a name="line.899"></a>
-<span class="sourceLineNo">900</span> hris.add(daughterOneRI);<a name="line.900"></a>
-<span class="sourceLineNo">901</span> hris.add(daughterTwoRI);<a name="line.901"></a>
-<span class="sourceLineNo">902</span> return AssignmentManagerUtil.createAssignProceduresForSplitDaughters(env, hris,<a name="line.902"></a>
-<span class="sourceLineNo">903</span> getRegionReplication(env), getParentRegionServerName(env));<a name="line.903"></a>
-<span class="sourceLineNo">904</span> }<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span> private int getRegionReplication(final MasterProcedureEnv env) throws IOException {<a name="line.906"></a>
-<span class="sourceLineNo">907</span> final TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.907"></a>
-<span class="sourceLineNo">908</span> return htd.getRegionReplication();<a name="line.908"></a>
-<span class="sourceLineNo">909</span> }<a name="line.909"></a>
-<span class="sourceLineNo">910</span><a name="line.910"></a>
-<span class="sourceLineNo">911</span> private void writeMaxSequenceIdFile(MasterProcedureEnv env) throws IOException {<a name="line.911"></a>
-<span class="sourceLineNo">912</span> MasterFileSystem fs = env.getMasterFileSystem();<a name="line.912"></a>
-<span class="sourceLineNo">913</span> long maxSequenceId = WALSplitUtil.getMaxRegionSequenceId(env.getMasterConfiguration(),<a name="line.913"></a>
-<span class="sourceLineNo">914</span> getParentRegion(), fs::getFileSystem, fs::getWALFileSystem);<a name="line.914"></a>
-<span class="sourceLineNo">915</span> if (maxSequenceId > 0) {<a name="line.915"></a>
-<span class="sourceLineNo">916</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.916"></a>
-<span class="sourceLineNo">917</span> getWALRegionDir(env, daughterOneRI), maxSequenceId);<a name="line.917"></a>
-<span class="sourceLineNo">918</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.918"></a>
-<span class="sourceLineNo">919</span> getWALRegionDir(env, daughterTwoRI), maxSequenceId);<a name="line.919"></a>
-<span class="sourceLineNo">920</span> }<a name="line.920"></a>
-<span class="sourceLineNo">921</span> }<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span> @Override<a name="line.923"></a>
-<span class="sourceLineNo">924</span> protected boolean abort(MasterProcedureEnv env) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span> // Abort means rollback. We can't rollback all steps. HBASE-18018 added abort to all<a name="line.925"></a>
-<span class="sourceLineNo">926</span> // Procedures. Here is a Procedure that has a PONR and cannot be aborted wants it enters this<a name="line.926"></a>
-<span class="sourceLineNo">927</span> // range of steps; what do we do for these should an operator want to cancel them? HBASE-20022.<a name="line.927"></a>
-<span class="sourceLineNo">928</span> return isRollbackSupported(getCurrentState())? super.abort(env): false;<a name="line.928"></a>
-<span class="sourceLineNo">929</span> }<a name="line.929"></a>
-<span class="sourceLineNo">930</span>}<a name="line.930"></a>
+<span class="sourceLineNo">899</span> return AssignmentManagerUtil.createUnassignProceduresForSplitOrMerge(env,<a name="line.899"></a>
+<span class="sourceLineNo">900</span> Stream.of(getParentRegion()), getRegionReplication(env));<a name="line.900"></a>
+<span class="sourceLineNo">901</span> }<a name="line.901"></a>
+<span class="sourceLineNo">902</span><a name="line.902"></a>
+<span class="sourceLineNo">903</span> private TransitRegionStateProcedure[] createAssignProcedures(MasterProcedureEnv env)<a name="line.903"></a>
+<span class="sourceLineNo">904</span> throws IOException {<a name="line.904"></a>
+<span class="sourceLineNo">905</span> List<RegionInfo> hris = new ArrayList<RegionInfo>(2);<a name="line.905"></a>
+<span class="sourceLineNo">906</span> hris.add(daughterOneRI);<a name="line.906"></a>
+<span class="sourceLineNo">907</span> hris.add(daughterTwoRI);<a name="line.907"></a>
+<span class="sourceLineNo">908</span> return AssignmentManagerUtil.createAssignProceduresForSplitDaughters(env, hris,<a name="line.908"></a>
+<span class="sourceLineNo">909</span> getRegionReplication(env), getParentRegionServerName(env));<a name="line.909"></a>
+<span class="sourceLineNo">910</span> }<a name="line.910"></a>
+<span class="sourceLineNo">911</span><a name="line.911"></a>
+<span class="sourceLineNo">912</span> private int getRegionReplication(final MasterProcedureEnv env) throws IOException {<a name="line.912"></a>
+<span class="sourceLineNo">913</span> final TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.913"></a>
+<span class="sourceLineNo">914</span> return htd.getRegionReplication();<a name="line.914"></a>
+<span class="sourceLineNo">915</span> }<a name="line.915"></a>
+<span class="sourceLineNo">916</span><a name="line.916"></a>
+<span class="sourceLineNo">917</span> private void writeMaxSequenceIdFile(MasterProcedureEnv env) throws IOException {<a name="line.917"></a>
+<span class="sourceLineNo">918</span> MasterFileSystem fs = env.getMasterFileSystem();<a name="line.918"></a>
+<span class="sourceLineNo">919</span> long maxSequenceId = WALSplitUtil.getMaxRegionSequenceId(env.getMasterConfiguration(),<a name="line.919"></a>
+<span class="sourceLineNo">920</span> getParentRegion(), fs::getFileSystem, fs::getWALFileSystem);<a name="line.920"></a>
+<span class="sourceLineNo">921</span> if (maxSequenceId > 0) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.922"></a>
+<span class="sourceLineNo">923</span> getWALRegionDir(env, daughterOneRI), maxSequenceId);<a name="line.923"></a>
+<span class="sourceLineNo">924</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.924"></a>
+<span class="sourceLineNo">925</span> getWALRegionDir(env, daughterTwoRI), maxSequenceId);<a name="line.925"></a>
+<span class="sourceLineNo">926</span> }<a name="line.926"></a>
+<span class="sourceLineNo">927</span> }<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span> @Override<a name="line.929"></a>
+<span class="sourceLineNo">930</span> protected boolean abort(MasterProcedureEnv env) {<a name="line.930"></a>
+<span class="sourceLineNo">931</span> // Abort means rollback. We can't rollback all steps. HBASE-18018 added abort to all<a name="line.931"></a>
+<span class="sourceLineNo">932</span> // Procedures. Here is a Procedure that has a PONR and cannot be aborted wants it enters this<a name="line.932"></a>
+<span class="sourceLineNo">933</span> // range of steps; what do we do for these should an operator want to cancel them? HBASE-20022.<a name="line.933"></a>
+<span class="sourceLineNo">934</span> return isRollbackSupported(getCurrentState())? super.abort(env): false;<a name="line.934"></a>
+<span class="sourceLineNo">935</span> }<a name="line.935"></a>
+<span class="sourceLineNo">936</span>}<a name="line.936"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
index 6cc457d..76e2819 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
@@ -41,901 +41,907 @@
<span class="sourceLineNo">033</span>import java.util.concurrent.Future;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import java.util.concurrent.TimeUnit;<a name="line.34"></a>
<span class="sourceLineNo">035</span>import java.util.stream.Stream;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.fs.FileSystem;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.fs.Path;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.RegionSplitRestriction;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.regionserver.StoreFileInfo;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.regionserver.StoreUtils;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.CommonFSUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.wal.WALSplitUtil;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ReflectionUtils;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>/**<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * The procedure to split a region in a table.<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Takes lock on the parent region.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It holds the lock for the life of the procedure.<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * <p>Throws exception on construction if determines context hostile to spllt (cluster going<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * down or master is shutting down or table is disabled).</p><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 class SplitTableRegionProcedure<a name="line.95"></a>
-<span class="sourceLineNo">096</span> extends AbstractStateMachineRegionProcedure<SplitTableRegionState> {<a name="line.96"></a>
-<span class="sourceLineNo">097</span> private static final Logger LOG = LoggerFactory.getLogger(SplitTableRegionProcedure.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span> private RegionInfo daughterOneRI;<a name="line.98"></a>
-<span class="sourceLineNo">099</span> private RegionInfo daughterTwoRI;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> private byte[] bestSplitRow;<a name="line.100"></a>
-<span class="sourceLineNo">101</span> private RegionSplitPolicy splitPolicy;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span> public SplitTableRegionProcedure() {<a name="line.103"></a>
-<span class="sourceLineNo">104</span> // Required by the Procedure framework to create the procedure on replay<a name="line.104"></a>
-<span class="sourceLineNo">105</span> }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span> public SplitTableRegionProcedure(final MasterProcedureEnv env,<a name="line.107"></a>
-<span class="sourceLineNo">108</span> final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.108"></a>
-<span class="sourceLineNo">109</span> super(env, regionToSplit);<a name="line.109"></a>
-<span class="sourceLineNo">110</span> preflightChecks(env, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span> // When procedure goes to run in its prepare step, it also does these checkOnline checks. Here<a name="line.111"></a>
-<span class="sourceLineNo">112</span> // we fail-fast on construction. There it skips the split with just a warning.<a name="line.112"></a>
-<span class="sourceLineNo">113</span> checkOnline(env, regionToSplit);<a name="line.113"></a>
-<span class="sourceLineNo">114</span> this.bestSplitRow = splitRow;<a name="line.114"></a>
-<span class="sourceLineNo">115</span> TableDescriptor tableDescriptor = env.getMasterServices().getTableDescriptors()<a name="line.115"></a>
-<span class="sourceLineNo">116</span> .get(getTableName());<a name="line.116"></a>
-<span class="sourceLineNo">117</span> Configuration conf = env.getMasterConfiguration();<a name="line.117"></a>
-<span class="sourceLineNo">118</span> if (hasBestSplitRow()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // Apply the split restriction for the table to the user-specified split point<a name="line.119"></a>
-<span class="sourceLineNo">120</span> RegionSplitRestriction splitRestriction =<a name="line.120"></a>
-<span class="sourceLineNo">121</span> RegionSplitRestriction.create(tableDescriptor, conf);<a name="line.121"></a>
-<span class="sourceLineNo">122</span> byte[] restrictedSplitRow = splitRestriction.getRestrictedSplitPoint(bestSplitRow);<a name="line.122"></a>
-<span class="sourceLineNo">123</span> if (!Bytes.equals(bestSplitRow, restrictedSplitRow)) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> LOG.warn("The specified split point {} violates the split restriction of the table. "<a name="line.124"></a>
-<span class="sourceLineNo">125</span> + "Using {} as a split point.", Bytes.toStringBinary(bestSplitRow),<a name="line.125"></a>
-<span class="sourceLineNo">126</span> Bytes.toStringBinary(restrictedSplitRow));<a name="line.126"></a>
-<span class="sourceLineNo">127</span> bestSplitRow = restrictedSplitRow;<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> checkSplittable(env, regionToSplit);<a name="line.130"></a>
-<span class="sourceLineNo">131</span> final TableName table = regionToSplit.getTable();<a name="line.131"></a>
-<span class="sourceLineNo">132</span> final long rid = getDaughterRegionIdTimestamp(regionToSplit);<a name="line.132"></a>
-<span class="sourceLineNo">133</span> this.daughterOneRI = RegionInfoBuilder.newBuilder(table)<a name="line.133"></a>
-<span class="sourceLineNo">134</span> .setStartKey(regionToSplit.getStartKey())<a name="line.134"></a>
-<span class="sourceLineNo">135</span> .setEndKey(bestSplitRow)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> .setSplit(false)<a name="line.136"></a>
-<span class="sourceLineNo">137</span> .setRegionId(rid)<a name="line.137"></a>
-<span class="sourceLineNo">138</span> .build();<a name="line.138"></a>
-<span class="sourceLineNo">139</span> this.daughterTwoRI = RegionInfoBuilder.newBuilder(table)<a name="line.139"></a>
-<span class="sourceLineNo">140</span> .setStartKey(bestSplitRow)<a name="line.140"></a>
-<span class="sourceLineNo">141</span> .setEndKey(regionToSplit.getEndKey())<a name="line.141"></a>
-<span class="sourceLineNo">142</span> .setSplit(false)<a name="line.142"></a>
-<span class="sourceLineNo">143</span> .setRegionId(rid)<a name="line.143"></a>
-<span class="sourceLineNo">144</span> .build();<a name="line.144"></a>
-<span class="sourceLineNo">145</span> if(tableDescriptor.getRegionSplitPolicyClassName() != null) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span> // Since we don't have region reference here, creating the split policy instance without it.<a name="line.146"></a>
-<span class="sourceLineNo">147</span> // This can be used to invoke methods which don't require Region reference. This instantiation<a name="line.147"></a>
-<span class="sourceLineNo">148</span> // of a class on Master-side though it only makes sense on the RegionServer-side is<a name="line.148"></a>
-<span class="sourceLineNo">149</span> // for Phoenix Local Indexing. Refer HBASE-12583 for more information.<a name="line.149"></a>
-<span class="sourceLineNo">150</span> Class<? extends RegionSplitPolicy> clazz =<a name="line.150"></a>
-<span class="sourceLineNo">151</span> RegionSplitPolicy.getSplitPolicyClass(tableDescriptor, conf);<a name="line.151"></a>
-<span class="sourceLineNo">152</span> this.splitPolicy = ReflectionUtils.newInstance(clazz, conf);<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>
-<span class="sourceLineNo">156</span> @Override<a name="line.156"></a>
-<span class="sourceLineNo">157</span> protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span> if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(),<a name="line.158"></a>
-<span class="sourceLineNo">159</span> daughterOneRI, daughterTwoRI)) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span> try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span> LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());<a name="line.161"></a>
-<span class="sourceLineNo">162</span> } catch (IOException e) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span> // Ignore, just for logging<a name="line.163"></a>
-<span class="sourceLineNo">164</span> }<a name="line.164"></a>
-<span class="sourceLineNo">165</span> return LockState.LOCK_EVENT_WAIT;<a name="line.165"></a>
-<span class="sourceLineNo">166</span> }<a name="line.166"></a>
-<span class="sourceLineNo">167</span> return LockState.LOCK_ACQUIRED;<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> @Override<a name="line.170"></a>
-<span class="sourceLineNo">171</span> protected void releaseLock(final MasterProcedureEnv env) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span> env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughterOneRI,<a name="line.172"></a>
-<span class="sourceLineNo">173</span> daughterTwoRI);<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> public RegionInfo getDaughterOneRI() {<a name="line.176"></a>
-<span class="sourceLineNo">177</span> return daughterOneRI;<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> public RegionInfo getDaughterTwoRI() {<a name="line.180"></a>
-<span class="sourceLineNo">181</span> return daughterTwoRI;<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> private boolean hasBestSplitRow() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span> return bestSplitRow != null && bestSplitRow.length > 0;<a name="line.185"></a>
-<span class="sourceLineNo">186</span> }<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> * Check whether the region is splittable<a name="line.189"></a>
-<span class="sourceLineNo">190</span> * @param env MasterProcedureEnv<a name="line.190"></a>
-<span class="sourceLineNo">191</span> * @param regionToSplit parent Region to be split<a name="line.191"></a>
-<span class="sourceLineNo">192</span> */<a name="line.192"></a>
-<span class="sourceLineNo">193</span> private void checkSplittable(final MasterProcedureEnv env,<a name="line.193"></a>
-<span class="sourceLineNo">194</span> final RegionInfo regionToSplit) throws IOException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span> // Ask the remote RS if this region is splittable.<a name="line.195"></a>
-<span class="sourceLineNo">196</span> // If we get an IOE, report it along w/ the failure so can see why we are not splittable at<a name="line.196"></a>
-<span class="sourceLineNo">197</span> // this time.<a name="line.197"></a>
-<span class="sourceLineNo">198</span> if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span> throw new IllegalArgumentException("Can't invoke split on non-default regions directly");<a name="line.199"></a>
-<span class="sourceLineNo">200</span> }<a name="line.200"></a>
-<span class="sourceLineNo">201</span> RegionStateNode node =<a name="line.201"></a>
-<span class="sourceLineNo">202</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.202"></a>
-<span class="sourceLineNo">203</span> IOException splittableCheckIOE = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span> boolean splittable = false;<a name="line.204"></a>
-<span class="sourceLineNo">205</span> if (node != null) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span> try {<a name="line.206"></a>
-<span class="sourceLineNo">207</span> GetRegionInfoResponse response;<a name="line.207"></a>
-<span class="sourceLineNo">208</span> if (!hasBestSplitRow()) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span> LOG.info(<a name="line.209"></a>
-<span class="sourceLineNo">210</span> "{} splitKey isn't explicitly specified, will try to find a best split key from RS {}",<a name="line.210"></a>
-<span class="sourceLineNo">211</span> node.getRegionInfo().getRegionNameAsString(), node.getRegionLocation());<a name="line.211"></a>
-<span class="sourceLineNo">212</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.212"></a>
-<span class="sourceLineNo">213</span> node.getRegionInfo(), true);<a name="line.213"></a>
-<span class="sourceLineNo">214</span> bestSplitRow =<a name="line.214"></a>
-<span class="sourceLineNo">215</span> response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.215"></a>
-<span class="sourceLineNo">216</span> } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.217"></a>
-<span class="sourceLineNo">218</span> node.getRegionInfo(), false);<a name="line.218"></a>
-<span class="sourceLineNo">219</span> }<a name="line.219"></a>
-<span class="sourceLineNo">220</span> splittable = response.hasSplittable() && response.getSplittable();<a name="line.220"></a>
-<span class="sourceLineNo">221</span> if (LOG.isDebugEnabled()) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span> LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.222"></a>
-<span class="sourceLineNo">223</span> }<a name="line.223"></a>
-<span class="sourceLineNo">224</span> } catch (IOException e) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span> splittableCheckIOE = e;<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> if (!splittable) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span> IOException e =<a name="line.230"></a>
-<span class="sourceLineNo">231</span> new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.231"></a>
-<span class="sourceLineNo">232</span> if (splittableCheckIOE != null) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span> e.initCause(splittableCheckIOE);<a name="line.233"></a>
-<span class="sourceLineNo">234</span> }<a name="line.234"></a>
-<span class="sourceLineNo">235</span> throw e;<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> if (!hasBestSplitRow()) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span> throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, " +<a name="line.239"></a>
-<span class="sourceLineNo">240</span> "maybe table is too small for auto split. For force split, try specifying split row");<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> if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span> throw new DoNotRetryIOException(<a name="line.244"></a>
-<span class="sourceLineNo">245</span> "Split row is equal to startkey: " + Bytes.toStringBinary(bestSplitRow));<a name="line.245"></a>
-<span class="sourceLineNo">246</span> }<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span> if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span> throw new DoNotRetryIOException("Split row is not inside region key range splitKey:" +<a name="line.249"></a>
-<span class="sourceLineNo">250</span> Bytes.toStringBinary(bestSplitRow) + " region: " + regionToSplit);<a name="line.250"></a>
-<span class="sourceLineNo">251</span> }<a name="line.251"></a>
-<span class="sourceLineNo">252</span> }<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> * Calculate daughter regionid to use.<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * @param hri Parent {@link RegionInfo}<a name="line.256"></a>
-<span class="sourceLineNo">257</span> * @return Daughter region id (timestamp) to use.<a name="line.257"></a>
-<span class="sourceLineNo">258</span> */<a name="line.258"></a>
-<span class="sourceLineNo">259</span> private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span> long rid = EnvironmentEdgeManager.currentTime();<a name="line.260"></a>
-<span class="sourceLineNo">261</span> // Regionid is timestamp. Can't be less than that of parent else will insert<a name="line.261"></a>
-<span class="sourceLineNo">262</span> // at wrong location in hbase:meta (See HBASE-710).<a name="line.262"></a>
-<span class="sourceLineNo">263</span> if (rid < hri.getRegionId()) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span> LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.264"></a>
-<span class="sourceLineNo">265</span> " but current time here is " + rid);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> rid = hri.getRegionId() + 1;<a name="line.266"></a>
-<span class="sourceLineNo">267</span> }<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return rid;<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> private void removeNonDefaultReplicas(MasterProcedureEnv env) throws IOException {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> AssignmentManagerUtil.removeNonDefaultReplicas(env, Stream.of(getParentRegion()),<a name="line.272"></a>
-<span class="sourceLineNo">273</span> getRegionReplication(env));<a name="line.273"></a>
-<span class="sourceLineNo">274</span> }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span> private void checkClosedRegions(MasterProcedureEnv env) throws IOException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> // theoretically this should not happen any more after we use TRSP, but anyway let's add a check<a name="line.277"></a>
-<span class="sourceLineNo">278</span> // here<a name="line.278"></a>
-<span class="sourceLineNo">279</span> AssignmentManagerUtil.checkClosedRegion(env, getParentRegion());<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> @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span> protected Flow executeFromState(MasterProcedureEnv env, SplitTableRegionState state)<a name="line.283"></a>
-<span class="sourceLineNo">284</span> throws InterruptedException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span> LOG.trace("{} execute state={}", this, state);<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span> try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> switch (state) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.289"></a>
-<span class="sourceLineNo">290</span> if (prepareSplitRegion(env)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.291"></a>
-<span class="sourceLineNo">292</span> break;<a name="line.292"></a>
-<span class="sourceLineNo">293</span> } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span> return Flow.NO_MORE_STATE;<a name="line.294"></a>
-<span class="sourceLineNo">295</span> }<a name="line.295"></a>
-<span class="sourceLineNo">296</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.296"></a>
-<span class="sourceLineNo">297</span> preSplitRegion(env);<a name="line.297"></a>
-<span class="sourceLineNo">298</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.298"></a>
-<span class="sourceLineNo">299</span> break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.300"></a>
-<span class="sourceLineNo">301</span> addChildProcedure(createUnassignProcedures(env));<a name="line.301"></a>
-<span class="sourceLineNo">302</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.302"></a>
-<span class="sourceLineNo">303</span> break;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.304"></a>
-<span class="sourceLineNo">305</span> checkClosedRegions(env);<a name="line.305"></a>
-<span class="sourceLineNo">306</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.306"></a>
-<span class="sourceLineNo">307</span> break;<a name="line.307"></a>
-<span class="sourceLineNo">308</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.308"></a>
-<span class="sourceLineNo">309</span> removeNonDefaultReplicas(env);<a name="line.309"></a>
-<span class="sourceLineNo">310</span> createDaughterRegions(env);<a name="line.310"></a>
-<span class="sourceLineNo">311</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.311"></a>
-<span class="sourceLineNo">312</span> break;<a name="line.312"></a>
-<span class="sourceLineNo">313</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.313"></a>
-<span class="sourceLineNo">314</span> writeMaxSequenceIdFile(env);<a name="line.314"></a>
-<span class="sourceLineNo">315</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.315"></a>
-<span class="sourceLineNo">316</span> break;<a name="line.316"></a>
-<span class="sourceLineNo">317</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.317"></a>
-<span class="sourceLineNo">318</span> preSplitRegionBeforeMETA(env);<a name="line.318"></a>
-<span class="sourceLineNo">319</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.319"></a>
-<span class="sourceLineNo">320</span> break;<a name="line.320"></a>
-<span class="sourceLineNo">321</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.321"></a>
-<span class="sourceLineNo">322</span> updateMeta(env);<a name="line.322"></a>
-<span class="sourceLineNo">323</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.323"></a>
-<span class="sourceLineNo">324</span> break;<a name="line.324"></a>
-<span class="sourceLineNo">325</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.325"></a>
-<span class="sourceLineNo">326</span> preSplitRegionAfterMETA(env);<a name="line.326"></a>
-<span class="sourceLineNo">327</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.327"></a>
-<span class="sourceLineNo">328</span> break;<a name="line.328"></a>
-<span class="sourceLineNo">329</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.329"></a>
-<span class="sourceLineNo">330</span> addChildProcedure(createAssignProcedures(env));<a name="line.330"></a>
-<span class="sourceLineNo">331</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.331"></a>
-<span class="sourceLineNo">332</span> break;<a name="line.332"></a>
-<span class="sourceLineNo">333</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.333"></a>
-<span class="sourceLineNo">334</span> postSplitRegion(env);<a name="line.334"></a>
-<span class="sourceLineNo">335</span> return Flow.NO_MORE_STATE;<a name="line.335"></a>
-<span class="sourceLineNo">336</span> default:<a name="line.336"></a>
-<span class="sourceLineNo">337</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.337"></a>
-<span class="sourceLineNo">338</span> }<a name="line.338"></a>
-<span class="sourceLineNo">339</span> } catch (IOException e) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span> String msg = "Splitting " + getParentRegion().getEncodedName() + ", " + this;<a name="line.340"></a>
-<span class="sourceLineNo">341</span> if (!isRollbackSupported(state)) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span> // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.342"></a>
-<span class="sourceLineNo">343</span> LOG.warn(msg, e);<a name="line.343"></a>
-<span class="sourceLineNo">344</span> } else {<a name="line.344"></a>
-<span class="sourceLineNo">345</span> LOG.error(msg, e);<a name="line.345"></a>
-<span class="sourceLineNo">346</span> setFailure("master-split-regions", e);<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> // if split fails, need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.349"></a>
-<span class="sourceLineNo">350</span> return Flow.HAS_MORE_STATE;<a name="line.350"></a>
-<span class="sourceLineNo">351</span> }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span> /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span> * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.354"></a>
-<span class="sourceLineNo">355</span> * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.355"></a>
-<span class="sourceLineNo">356</span> * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.356"></a>
-<span class="sourceLineNo">357</span> * See HBASE-19851 for details.<a name="line.357"></a>
-<span class="sourceLineNo">358</span> */<a name="line.358"></a>
-<span class="sourceLineNo">359</span> @Override<a name="line.359"></a>
-<span class="sourceLineNo">360</span> protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.360"></a>
-<span class="sourceLineNo">361</span> throws IOException, InterruptedException {<a name="line.361"></a>
-<span class="sourceLineNo">362</span> LOG.trace("{} rollback state={}", this, state);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span> try {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> switch (state) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.366"></a>
-<span class="sourceLineNo">367</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.367"></a>
-<span class="sourceLineNo">368</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.368"></a>
-<span class="sourceLineNo">369</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.369"></a>
-<span class="sourceLineNo">370</span> // PONR<a name="line.370"></a>
-<span class="sourceLineNo">371</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.371"></a>
-<span class="sourceLineNo">372</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.372"></a>
-<span class="sourceLineNo">373</span> break;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.374"></a>
-<span class="sourceLineNo">375</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.375"></a>
-<span class="sourceLineNo">376</span> deleteDaughterRegions(env);<a name="line.376"></a>
-<span class="sourceLineNo">377</span> break;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.378"></a>
-<span class="sourceLineNo">379</span> // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.379"></a>
-<span class="sourceLineNo">380</span> // we will bring parent region online<a name="line.380"></a>
-<span class="sourceLineNo">381</span> break;<a name="line.381"></a>
-<span class="sourceLineNo">382</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.382"></a>
-<span class="sourceLineNo">383</span> openParentRegion(env);<a name="line.383"></a>
-<span class="sourceLineNo">384</span> break;<a name="line.384"></a>
-<span class="sourceLineNo">385</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.385"></a>
-<span class="sourceLineNo">386</span> postRollBackSplitRegion(env);<a name="line.386"></a>
-<span class="sourceLineNo">387</span> break;<a name="line.387"></a>
-<span class="sourceLineNo">388</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.388"></a>
-<span class="sourceLineNo">389</span> break; // nothing to do<a name="line.389"></a>
-<span class="sourceLineNo">390</span> default:<a name="line.390"></a>
-<span class="sourceLineNo">391</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.391"></a>
-<span class="sourceLineNo">392</span> }<a name="line.392"></a>
-<span class="sourceLineNo">393</span> } catch (IOException e) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span> // This will be retried. Unless there is a bug in the code,<a name="line.394"></a>
-<span class="sourceLineNo">395</span> // this should be just a "temporary error" (e.g. network down)<a name="line.395"></a>
-<span class="sourceLineNo">396</span> LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.396"></a>
-<span class="sourceLineNo">397</span> " for splitting the region "<a name="line.397"></a>
-<span class="sourceLineNo">398</span> + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span> throw e;<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> /*<a name="line.403"></a>
-<span class="sourceLineNo">404</span> * Check whether we are in the state that can be rollback<a name="line.404"></a>
-<span class="sourceLineNo">405</span> */<a name="line.405"></a>
-<span class="sourceLineNo">406</span> @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span> protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span> switch (state) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.409"></a>
-<span class="sourceLineNo">410</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.410"></a>
-<span class="sourceLineNo">411</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.411"></a>
-<span class="sourceLineNo">412</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.412"></a>
-<span class="sourceLineNo">413</span> // It is not safe to rollback if we reach to these states.<a name="line.413"></a>
-<span class="sourceLineNo">414</span> return false;<a name="line.414"></a>
-<span class="sourceLineNo">415</span> default:<a name="line.415"></a>
-<span class="sourceLineNo">416</span> break;<a name="line.416"></a>
-<span class="sourceLineNo">417</span> }<a name="line.417"></a>
-<span class="sourceLineNo">418</span> return true;<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> @Override<a name="line.421"></a>
-<span class="sourceLineNo">422</span> protected SplitTableRegionState getState(final int stateId) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span> return SplitTableRegionState.forNumber(stateId);<a name="line.423"></a>
-<span class="sourceLineNo">424</span> }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span> @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span> protected int getStateId(final SplitTableRegionState state) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span> return state.getNumber();<a name="line.428"></a>
-<span class="sourceLineNo">429</span> }<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span> @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span> protected SplitTableRegionState getInitialState() {<a name="line.432"></a>
-<span class="sourceLineNo">433</span> return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<a name="line.433"></a>
-<span class="sourceLineNo">434</span> }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span> @Override<a name="line.436"></a>
-<span class="sourceLineNo">437</span> protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.437"></a>
-<span class="sourceLineNo">438</span> throws IOException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span> super.serializeStateData(serializer);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span> final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.441"></a>
-<span class="sourceLineNo">442</span> MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.442"></a>
-<span class="sourceLineNo">443</span> .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.443"></a>
-<span class="sourceLineNo">444</span> .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.444"></a>
-<span class="sourceLineNo">445</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterOneRI))<a name="line.445"></a>
-<span class="sourceLineNo">446</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterTwoRI));<a name="line.446"></a>
-<span class="sourceLineNo">447</span> serializer.serialize(splitTableRegionMsg.build());<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> @Override<a name="line.450"></a>
-<span class="sourceLineNo">451</span> protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.451"></a>
-<span class="sourceLineNo">452</span> throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span> super.deserializeStateData(serializer);<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span> final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.455"></a>
-<span class="sourceLineNo">456</span> serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.456"></a>
-<span class="sourceLineNo">457</span> setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.457"></a>
-<span class="sourceLineNo">458</span> setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.458"></a>
-<span class="sourceLineNo">459</span> assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span> daughterOneRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.460"></a>
-<span class="sourceLineNo">461</span> daughterTwoRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<a name="line.461"></a>
-<span class="sourceLineNo">462</span> }<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span> @Override<a name="line.464"></a>
-<span class="sourceLineNo">465</span> public void toStringClassDetails(StringBuilder sb) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span> sb.append(getClass().getSimpleName());<a name="line.466"></a>
-<span class="sourceLineNo">467</span> sb.append(" table=");<a name="line.467"></a>
-<span class="sourceLineNo">468</span> sb.append(getTableName());<a name="line.468"></a>
-<span class="sourceLineNo">469</span> sb.append(", parent=");<a name="line.469"></a>
-<span class="sourceLineNo">470</span> sb.append(getParentRegion().getShortNameToLog());<a name="line.470"></a>
-<span class="sourceLineNo">471</span> sb.append(", daughterA=");<a name="line.471"></a>
-<span class="sourceLineNo">472</span> sb.append(daughterOneRI.getShortNameToLog());<a name="line.472"></a>
-<span class="sourceLineNo">473</span> sb.append(", daughterB=");<a name="line.473"></a>
-<span class="sourceLineNo">474</span> sb.append(daughterTwoRI.getShortNameToLog());<a name="line.474"></a>
-<span class="sourceLineNo">475</span> }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span> private RegionInfo getParentRegion() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> return getRegion();<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> @Override<a name="line.481"></a>
-<span class="sourceLineNo">482</span> public TableOperationType getTableOperationType() {<a name="line.482"></a>
-<span class="sourceLineNo">483</span> return TableOperationType.REGION_SPLIT;<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> @Override<a name="line.486"></a>
-<span class="sourceLineNo">487</span> protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<a name="line.488"></a>
-<span class="sourceLineNo">489</span> }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span> private byte[] getSplitRow() {<a name="line.491"></a>
-<span class="sourceLineNo">492</span> return daughterTwoRI.getStartKey();<a name="line.492"></a>
-<span class="sourceLineNo">493</span> }<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span> private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.495"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.conf.Configuration;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.fs.FileSystem;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.fs.Path;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HConstants;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.ServerName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.TableName;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.regionserver.RegionSplitRestriction;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.regionserver.StoreFileInfo;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.regionserver.StoreUtils;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.CommonFSUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.WALSplitUtil;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.util.ReflectionUtils;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState;<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> * The procedure to split a region in a table.<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * Takes lock on the parent region.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * It holds the lock for the life of the procedure.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * <p>Throws exception on construction if determines context hostile to spllt (cluster going<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * down or master is shutting down or table is disabled).</p><a name="line.93"></a>
+<span class="sourceLineNo">094</span> */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>@InterfaceAudience.Private<a name="line.95"></a>
+<span class="sourceLineNo">096</span>public class SplitTableRegionProcedure<a name="line.96"></a>
+<span class="sourceLineNo">097</span> extends AbstractStateMachineRegionProcedure<SplitTableRegionState> {<a name="line.97"></a>
+<span class="sourceLineNo">098</span> private static final Logger LOG = LoggerFactory.getLogger(SplitTableRegionProcedure.class);<a name="line.98"></a>
+<span class="sourceLineNo">099</span> private RegionInfo daughterOneRI;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> private RegionInfo daughterTwoRI;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> private byte[] bestSplitRow;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> private RegionSplitPolicy splitPolicy;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span> public SplitTableRegionProcedure() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span> // Required by the Procedure framework to create the procedure on replay<a name="line.105"></a>
+<span class="sourceLineNo">106</span> }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span> public SplitTableRegionProcedure(final MasterProcedureEnv env,<a name="line.108"></a>
+<span class="sourceLineNo">109</span> final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span> super(env, regionToSplit);<a name="line.110"></a>
+<span class="sourceLineNo">111</span> preflightChecks(env, true);<a name="line.111"></a>
+<span class="sourceLineNo">112</span> // When procedure goes to run in its prepare step, it also does these checkOnline checks. Here<a name="line.112"></a>
+<span class="sourceLineNo">113</span> // we fail-fast on construction. There it skips the split with just a warning.<a name="line.113"></a>
+<span class="sourceLineNo">114</span> checkOnline(env, regionToSplit);<a name="line.114"></a>
+<span class="sourceLineNo">115</span> this.bestSplitRow = splitRow;<a name="line.115"></a>
+<span class="sourceLineNo">116</span> TableDescriptor tableDescriptor = env.getMasterServices().getTableDescriptors()<a name="line.116"></a>
+<span class="sourceLineNo">117</span> .get(getTableName());<a name="line.117"></a>
+<span class="sourceLineNo">118</span> Configuration conf = env.getMasterConfiguration();<a name="line.118"></a>
+<span class="sourceLineNo">119</span> if (hasBestSplitRow()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span> // Apply the split restriction for the table to the user-specified split point<a name="line.120"></a>
+<span class="sourceLineNo">121</span> RegionSplitRestriction splitRestriction =<a name="line.121"></a>
+<span class="sourceLineNo">122</span> RegionSplitRestriction.create(tableDescriptor, conf);<a name="line.122"></a>
+<span class="sourceLineNo">123</span> byte[] restrictedSplitRow = splitRestriction.getRestrictedSplitPoint(bestSplitRow);<a name="line.123"></a>
+<span class="sourceLineNo">124</span> if (!Bytes.equals(bestSplitRow, restrictedSplitRow)) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span> LOG.warn("The specified split point {} violates the split restriction of the table. "<a name="line.125"></a>
+<span class="sourceLineNo">126</span> + "Using {} as a split point.", Bytes.toStringBinary(bestSplitRow),<a name="line.126"></a>
+<span class="sourceLineNo">127</span> Bytes.toStringBinary(restrictedSplitRow));<a name="line.127"></a>
+<span class="sourceLineNo">128</span> bestSplitRow = restrictedSplitRow;<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> checkSplittable(env, regionToSplit);<a name="line.131"></a>
+<span class="sourceLineNo">132</span> final TableName table = regionToSplit.getTable();<a name="line.132"></a>
+<span class="sourceLineNo">133</span> final long rid = getDaughterRegionIdTimestamp(regionToSplit);<a name="line.133"></a>
+<span class="sourceLineNo">134</span> this.daughterOneRI = RegionInfoBuilder.newBuilder(table)<a name="line.134"></a>
+<span class="sourceLineNo">135</span> .setStartKey(regionToSplit.getStartKey())<a name="line.135"></a>
+<span class="sourceLineNo">136</span> .setEndKey(bestSplitRow)<a name="line.136"></a>
+<span class="sourceLineNo">137</span> .setSplit(false)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> .setRegionId(rid)<a name="line.138"></a>
+<span class="sourceLineNo">139</span> .build();<a name="line.139"></a>
+<span class="sourceLineNo">140</span> this.daughterTwoRI = RegionInfoBuilder.newBuilder(table)<a name="line.140"></a>
+<span class="sourceLineNo">141</span> .setStartKey(bestSplitRow)<a name="line.141"></a>
+<span class="sourceLineNo">142</span> .setEndKey(regionToSplit.getEndKey())<a name="line.142"></a>
+<span class="sourceLineNo">143</span> .setSplit(false)<a name="line.143"></a>
+<span class="sourceLineNo">144</span> .setRegionId(rid)<a name="line.144"></a>
+<span class="sourceLineNo">145</span> .build();<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span> if (tableDescriptor.getRegionSplitPolicyClassName() != null) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span> // Since we don't have region reference here, creating the split policy instance without it.<a name="line.148"></a>
+<span class="sourceLineNo">149</span> // This can be used to invoke methods which don't require Region reference. This instantiation<a name="line.149"></a>
+<span class="sourceLineNo">150</span> // of a class on Master-side though it only makes sense on the RegionServer-side is<a name="line.150"></a>
+<span class="sourceLineNo">151</span> // for Phoenix Local Indexing. Refer HBASE-12583 for more information.<a name="line.151"></a>
+<span class="sourceLineNo">152</span> Class<? extends RegionSplitPolicy> clazz =<a name="line.152"></a>
+<span class="sourceLineNo">153</span> RegionSplitPolicy.getSplitPolicyClass(tableDescriptor, conf);<a name="line.153"></a>
+<span class="sourceLineNo">154</span> this.splitPolicy = ReflectionUtils.newInstance(clazz, conf);<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> @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span> protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span> if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(),<a name="line.160"></a>
+<span class="sourceLineNo">161</span> daughterOneRI, daughterTwoRI)) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span> try {<a name="line.162"></a>
+<span class="sourceLineNo">163</span> LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());<a name="line.163"></a>
+<span class="sourceLineNo">164</span> } catch (IOException e) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span> // Ignore, just for logging<a name="line.165"></a>
+<span class="sourceLineNo">166</span> }<a name="line.166"></a>
+<span class="sourceLineNo">167</span> return LockState.LOCK_EVENT_WAIT;<a name="line.167"></a>
+<span class="sourceLineNo">168</span> }<a name="line.168"></a>
+<span class="sourceLineNo">169</span> return LockState.LOCK_ACQUIRED;<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> @Override<a name="line.172"></a>
+<span class="sourceLineNo">173</span> protected void releaseLock(final MasterProcedureEnv env) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span> env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughterOneRI,<a name="line.174"></a>
+<span class="sourceLineNo">175</span> daughterTwoRI);<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> public RegionInfo getDaughterOneRI() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span> return daughterOneRI;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span> public RegionInfo getDaughterTwoRI() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span> return daughterTwoRI;<a name="line.183"></a>
+<span class="sourceLineNo">184</span> }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span> private boolean hasBestSplitRow() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span> return bestSplitRow != null && bestSplitRow.length > 0;<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> * Check whether the region is splittable<a name="line.191"></a>
+<span class="sourceLineNo">192</span> * @param env MasterProcedureEnv<a name="line.192"></a>
+<span class="sourceLineNo">193</span> * @param regionToSplit parent Region to be split<a name="line.193"></a>
+<span class="sourceLineNo">194</span> */<a name="line.194"></a>
+<span class="sourceLineNo">195</span> private void checkSplittable(final MasterProcedureEnv env,<a name="line.195"></a>
+<span class="sourceLineNo">196</span> final RegionInfo regionToSplit) throws IOException {<a name="line.196"></a>
+<span class="sourceLineNo">197</span> // Ask the remote RS if this region is splittable.<a name="line.197"></a>
+<span class="sourceLineNo">198</span> // If we get an IOE, report it along w/ the failure so can see why we are not splittable at<a name="line.198"></a>
+<span class="sourceLineNo">199</span> // this time.<a name="line.199"></a>
+<span class="sourceLineNo">200</span> if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span> throw new IllegalArgumentException("Can't invoke split on non-default regions directly");<a name="line.201"></a>
+<span class="sourceLineNo">202</span> }<a name="line.202"></a>
+<span class="sourceLineNo">203</span> RegionStateNode node =<a name="line.203"></a>
+<span class="sourceLineNo">204</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.204"></a>
+<span class="sourceLineNo">205</span> IOException splittableCheckIOE = null;<a name="line.205"></a>
+<span class="sourceLineNo">206</span> boolean splittable = false;<a name="line.206"></a>
+<span class="sourceLineNo">207</span> if (node != null) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span> try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span> GetRegionInfoResponse response;<a name="line.209"></a>
+<span class="sourceLineNo">210</span> if (!hasBestSplitRow()) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span> LOG.info(<a name="line.211"></a>
+<span class="sourceLineNo">212</span> "{} splitKey isn't explicitly specified, will try to find a best split key from RS {}",<a name="line.212"></a>
+<span class="sourceLineNo">213</span> node.getRegionInfo().getRegionNameAsString(), node.getRegionLocation());<a name="line.213"></a>
+<span class="sourceLineNo">214</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.214"></a>
+<span class="sourceLineNo">215</span> node.getRegionInfo(), true);<a name="line.215"></a>
+<span class="sourceLineNo">216</span> bestSplitRow =<a name="line.216"></a>
+<span class="sourceLineNo">217</span> response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.217"></a>
+<span class="sourceLineNo">218</span> } else {<a name="line.218"></a>
+<span class="sourceLineNo">219</span> response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(),<a name="line.219"></a>
+<span class="sourceLineNo">220</span> node.getRegionInfo(), false);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> }<a name="line.221"></a>
+<span class="sourceLineNo">222</span> splittable = response.hasSplittable() && response.getSplittable();<a name="line.222"></a>
+<span class="sourceLineNo">223</span> if (LOG.isDebugEnabled()) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span> LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.224"></a>
+<span class="sourceLineNo">225</span> }<a name="line.225"></a>
+<span class="sourceLineNo">226</span> } catch (IOException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span> splittableCheckIOE = e;<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> if (!splittable) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span> IOException e =<a name="line.232"></a>
+<span class="sourceLineNo">233</span> new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.233"></a>
+<span class="sourceLineNo">234</span> if (splittableCheckIOE != null) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span> e.initCause(splittableCheckIOE);<a name="line.235"></a>
+<span class="sourceLineNo">236</span> }<a name="line.236"></a>
+<span class="sourceLineNo">237</span> throw e;<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> if (!hasBestSplitRow()) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, " +<a name="line.241"></a>
+<span class="sourceLineNo">242</span> "maybe table is too small for auto split. For force split, try specifying split row");<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> if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span> throw new DoNotRetryIOException(<a name="line.246"></a>
+<span class="sourceLineNo">247</span> "Split row is equal to startkey: " + Bytes.toStringBinary(bestSplitRow));<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> if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span> throw new DoNotRetryIOException("Split row is not inside region key range splitKey:" +<a name="line.251"></a>
+<span class="sourceLineNo">252</span> Bytes.toStringBinary(bestSplitRow) + " region: " + regionToSplit);<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> /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span> * Calculate daughter regionid to use.<a name="line.257"></a>
+<span class="sourceLineNo">258</span> * @param hri Parent {@link RegionInfo}<a name="line.258"></a>
+<span class="sourceLineNo">259</span> * @return Daughter region id (timestamp) to use.<a name="line.259"></a>
+<span class="sourceLineNo">260</span> */<a name="line.260"></a>
+<span class="sourceLineNo">261</span> private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span> long rid = EnvironmentEdgeManager.currentTime();<a name="line.262"></a>
+<span class="sourceLineNo">263</span> // Regionid is timestamp. Can't be less than that of parent else will insert<a name="line.263"></a>
+<span class="sourceLineNo">264</span> // at wrong location in hbase:meta (See HBASE-710).<a name="line.264"></a>
+<span class="sourceLineNo">265</span> if (rid < hri.getRegionId()) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span> LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.266"></a>
+<span class="sourceLineNo">267</span> " but current time here is " + rid);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> rid = hri.getRegionId() + 1;<a name="line.268"></a>
+<span class="sourceLineNo">269</span> }<a name="line.269"></a>
+<span class="sourceLineNo">270</span> return rid;<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> private void removeNonDefaultReplicas(MasterProcedureEnv env) throws IOException {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> AssignmentManagerUtil.removeNonDefaultReplicas(env, Stream.of(getParentRegion()),<a name="line.274"></a>
+<span class="sourceLineNo">275</span> getRegionReplication(env));<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> private void checkClosedRegions(MasterProcedureEnv env) throws IOException {<a name="line.278"></a>
+<span class="sourceLineNo">279</span> // theoretically this should not happen any more after we use TRSP, but anyway let's add a check<a name="line.279"></a>
+<span class="sourceLineNo">280</span> // here<a name="line.280"></a>
+<span class="sourceLineNo">281</span> AssignmentManagerUtil.checkClosedRegion(env, getParentRegion());<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> @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span> protected Flow executeFromState(MasterProcedureEnv env, SplitTableRegionState state)<a name="line.285"></a>
+<span class="sourceLineNo">286</span> throws InterruptedException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span> LOG.trace("{} execute state={}", this, state);<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span> try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> switch (state) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.291"></a>
+<span class="sourceLineNo">292</span> if (prepareSplitRegion(env)) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.293"></a>
+<span class="sourceLineNo">294</span> break;<a name="line.294"></a>
+<span class="sourceLineNo">295</span> } else {<a name="line.295"></a>
+<span class="sourceLineNo">296</span> return Flow.NO_MORE_STATE;<a name="line.296"></a>
+<span class="sourceLineNo">297</span> }<a name="line.297"></a>
+<span class="sourceLineNo">298</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.298"></a>
+<span class="sourceLineNo">299</span> preSplitRegion(env);<a name="line.299"></a>
+<span class="sourceLineNo">300</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.300"></a>
+<span class="sourceLineNo">301</span> break;<a name="line.301"></a>
+<span class="sourceLineNo">302</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.302"></a>
+<span class="sourceLineNo">303</span> addChildProcedure(createUnassignProcedures(env));<a name="line.303"></a>
+<span class="sourceLineNo">304</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.304"></a>
+<span class="sourceLineNo">305</span> break;<a name="line.305"></a>
+<span class="sourceLineNo">306</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.306"></a>
+<span class="sourceLineNo">307</span> checkClosedRegions(env);<a name="line.307"></a>
+<span class="sourceLineNo">308</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.308"></a>
+<span class="sourceLineNo">309</span> break;<a name="line.309"></a>
+<span class="sourceLineNo">310</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.310"></a>
+<span class="sourceLineNo">311</span> removeNonDefaultReplicas(env);<a name="line.311"></a>
+<span class="sourceLineNo">312</span> createDaughterRegions(env);<a name="line.312"></a>
+<span class="sourceLineNo">313</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.313"></a>
+<span class="sourceLineNo">314</span> break;<a name="line.314"></a>
+<span class="sourceLineNo">315</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.315"></a>
+<span class="sourceLineNo">316</span> writeMaxSequenceIdFile(env);<a name="line.316"></a>
+<span class="sourceLineNo">317</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.317"></a>
+<span class="sourceLineNo">318</span> break;<a name="line.318"></a>
+<span class="sourceLineNo">319</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.319"></a>
+<span class="sourceLineNo">320</span> preSplitRegionBeforeMETA(env);<a name="line.320"></a>
+<span class="sourceLineNo">321</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.321"></a>
+<span class="sourceLineNo">322</span> break;<a name="line.322"></a>
+<span class="sourceLineNo">323</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.323"></a>
+<span class="sourceLineNo">324</span> updateMeta(env);<a name="line.324"></a>
+<span class="sourceLineNo">325</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.325"></a>
+<span class="sourceLineNo">326</span> break;<a name="line.326"></a>
+<span class="sourceLineNo">327</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.327"></a>
+<span class="sourceLineNo">328</span> preSplitRegionAfterMETA(env);<a name="line.328"></a>
+<span class="sourceLineNo">329</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.329"></a>
+<span class="sourceLineNo">330</span> break;<a name="line.330"></a>
+<span class="sourceLineNo">331</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.331"></a>
+<span class="sourceLineNo">332</span> addChildProcedure(createAssignProcedures(env));<a name="line.332"></a>
+<span class="sourceLineNo">333</span> setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.333"></a>
+<span class="sourceLineNo">334</span> break;<a name="line.334"></a>
+<span class="sourceLineNo">335</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.335"></a>
+<span class="sourceLineNo">336</span> postSplitRegion(env);<a name="line.336"></a>
+<span class="sourceLineNo">337</span> return Flow.NO_MORE_STATE;<a name="line.337"></a>
+<span class="sourceLineNo">338</span> default:<a name="line.338"></a>
+<span class="sourceLineNo">339</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.339"></a>
+<span class="sourceLineNo">340</span> }<a name="line.340"></a>
+<span class="sourceLineNo">341</span> } catch (IOException e) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span> String msg = "Splitting " + getParentRegion().getEncodedName() + ", " + this;<a name="line.342"></a>
+<span class="sourceLineNo">343</span> if (!isRollbackSupported(state)) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> LOG.warn(msg, e);<a name="line.345"></a>
+<span class="sourceLineNo">346</span> } else {<a name="line.346"></a>
+<span class="sourceLineNo">347</span> LOG.error(msg, e);<a name="line.347"></a>
+<span class="sourceLineNo">348</span> setFailure("master-split-regions", e);<a name="line.348"></a>
+<span class="sourceLineNo">349</span> }<a name="line.349"></a>
+<span class="sourceLineNo">350</span> }<a name="line.350"></a>
+<span class="sourceLineNo">351</span> // if split fails, need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.351"></a>
+<span class="sourceLineNo">352</span> return Flow.HAS_MORE_STATE;<a name="line.352"></a>
+<span class="sourceLineNo">353</span> }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span> /**<a name="line.355"></a>
+<span class="sourceLineNo">356</span> * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.356"></a>
+<span class="sourceLineNo">357</span> * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.357"></a>
+<span class="sourceLineNo">358</span> * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.358"></a>
+<span class="sourceLineNo">359</span> * See HBASE-19851 for details.<a name="line.359"></a>
+<span class="sourceLineNo">360</span> */<a name="line.360"></a>
+<span class="sourceLineNo">361</span> @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span> protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.362"></a>
+<span class="sourceLineNo">363</span> throws IOException, InterruptedException {<a name="line.363"></a>
+<span class="sourceLineNo">364</span> LOG.trace("{} rollback state={}", this, state);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span> try {<a name="line.366"></a>
+<span class="sourceLineNo">367</span> switch (state) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.368"></a>
+<span class="sourceLineNo">369</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.369"></a>
+<span class="sourceLineNo">370</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.370"></a>
+<span class="sourceLineNo">371</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.371"></a>
+<span class="sourceLineNo">372</span> // PONR<a name="line.372"></a>
+<span class="sourceLineNo">373</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.373"></a>
+<span class="sourceLineNo">374</span> case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.374"></a>
+<span class="sourceLineNo">375</span> break;<a name="line.375"></a>
+<span class="sourceLineNo">376</span> case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.376"></a>
+<span class="sourceLineNo">377</span> case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.377"></a>
+<span class="sourceLineNo">378</span> deleteDaughterRegions(env);<a name="line.378"></a>
+<span class="sourceLineNo">379</span> break;<a name="line.379"></a>
+<span class="sourceLineNo">380</span> case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.380"></a>
+<span class="sourceLineNo">381</span> // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.381"></a>
+<span class="sourceLineNo">382</span> // we will bring parent region online<a name="line.382"></a>
+<span class="sourceLineNo">383</span> break;<a name="line.383"></a>
+<span class="sourceLineNo">384</span> case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.384"></a>
+<span class="sourceLineNo">385</span> openParentRegion(env);<a name="line.385"></a>
+<span class="sourceLineNo">386</span> break;<a name="line.386"></a>
+<span class="sourceLineNo">387</span> case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.387"></a>
+<span class="sourceLineNo">388</span> postRollBackSplitRegion(env);<a name="line.388"></a>
+<span class="sourceLineNo">389</span> break;<a name="line.389"></a>
+<span class="sourceLineNo">390</span> case SPLIT_TABLE_REGION_PREPARE:<a name="line.390"></a>
+<span class="sourceLineNo">391</span> break; // nothing to do<a name="line.391"></a>
+<span class="sourceLineNo">392</span> default:<a name="line.392"></a>
+<span class="sourceLineNo">393</span> throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.393"></a>
+<span class="sourceLineNo">394</span> }<a name="line.394"></a>
+<span class="sourceLineNo">395</span> } catch (IOException e) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span> // This will be retried. Unless there is a bug in the code,<a name="line.396"></a>
+<span class="sourceLineNo">397</span> // this should be just a "temporary error" (e.g. network down)<a name="line.397"></a>
+<span class="sourceLineNo">398</span> LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.398"></a>
+<span class="sourceLineNo">399</span> " for splitting the region "<a name="line.399"></a>
+<span class="sourceLineNo">400</span> + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.400"></a>
+<span class="sourceLineNo">401</span> throw e;<a name="line.401"></a>
+<span class="sourceLineNo">402</span> }<a name="line.402"></a>
+<span class="sourceLineNo">403</span> }<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span> /*<a name="line.405"></a>
+<span class="sourceLineNo">406</span> * Check whether we are in the state that can be rollback<a name="line.406"></a>
+<span class="sourceLineNo">407</span> */<a name="line.407"></a>
+<span class="sourceLineNo">408</span> @Override<a name="line.408"></a>
+<span class="sourceLineNo">409</span> protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> switch (state) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span> case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.411"></a>
+<span class="sourceLineNo">412</span> case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.412"></a>
+<span class="sourceLineNo">413</span> case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.413"></a>
+<span class="sourceLineNo">414</span> case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.414"></a>
+<span class="sourceLineNo">415</span> // It is not safe to rollback if we reach to these states.<a name="line.415"></a>
+<span class="sourceLineNo">416</span> return false;<a name="line.416"></a>
+<span class="sourceLineNo">417</span> default:<a name="line.417"></a>
+<span class="sourceLineNo">418</span> break;<a name="line.418"></a>
+<span class="sourceLineNo">419</span> }<a name="line.419"></a>
+<span class="sourceLineNo">420</span> return true;<a name="line.420"></a>
+<span class="sourceLineNo">421</span> }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span> @Override<a name="line.423"></a>
+<span class="sourceLineNo">424</span> protected SplitTableRegionState getState(final int stateId) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span> return SplitTableRegionState.forNumber(stateId);<a name="line.425"></a>
+<span class="sourceLineNo">426</span> }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span> @Override<a name="line.428"></a>
+<span class="sourceLineNo">429</span> protected int getStateId(final SplitTableRegionState state) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span> return state.getNumber();<a name="line.430"></a>
+<span class="sourceLineNo">431</span> }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span> @Override<a name="line.433"></a>
+<span class="sourceLineNo">434</span> protected SplitTableRegionState getInitialState() {<a name="line.434"></a>
+<span class="sourceLineNo">435</span> return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<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> @Override<a name="line.438"></a>
+<span class="sourceLineNo">439</span> protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.439"></a>
+<span class="sourceLineNo">440</span> throws IOException {<a name="line.440"></a>
+<span class="sourceLineNo">441</span> super.serializeStateData(serializer);<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span> final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.443"></a>
+<span class="sourceLineNo">444</span> MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.444"></a>
+<span class="sourceLineNo">445</span> .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.445"></a>
+<span class="sourceLineNo">446</span> .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.446"></a>
+<span class="sourceLineNo">447</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterOneRI))<a name="line.447"></a>
+<span class="sourceLineNo">448</span> .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughterTwoRI));<a name="line.448"></a>
+<span class="sourceLineNo">449</span> serializer.serialize(splitTableRegionMsg.build());<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> @Override<a name="line.452"></a>
+<span class="sourceLineNo">453</span> protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.453"></a>
+<span class="sourceLineNo">454</span> throws IOException {<a name="line.454"></a>
+<span class="sourceLineNo">455</span> super.deserializeStateData(serializer);<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span> final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.457"></a>
+<span class="sourceLineNo">458</span> serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.458"></a>
+<span class="sourceLineNo">459</span> setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.459"></a>
+<span class="sourceLineNo">460</span> setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.460"></a>
+<span class="sourceLineNo">461</span> assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.461"></a>
+<span class="sourceLineNo">462</span> daughterOneRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.462"></a>
+<span class="sourceLineNo">463</span> daughterTwoRI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<a name="line.463"></a>
+<span class="sourceLineNo">464</span> }<a name="line.464"></a>
+<span class="sourceLineNo">465</span><a name="line.465"></a>
+<span class="sourceLineNo">466</span> @Override<a name="line.466"></a>
+<span class="sourceLineNo">467</span> public void toStringClassDetails(StringBuilder sb) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span> sb.append(getClass().getSimpleName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span> sb.append(" table=");<a name="line.469"></a>
+<span class="sourceLineNo">470</span> sb.append(getTableName());<a name="line.470"></a>
+<span class="sourceLineNo">471</span> sb.append(", parent=");<a name="line.471"></a>
+<span class="sourceLineNo">472</span> sb.append(getParentRegion().getShortNameToLog());<a name="line.472"></a>
+<span class="sourceLineNo">473</span> sb.append(", daughterA=");<a name="line.473"></a>
+<span class="sourceLineNo">474</span> sb.append(daughterOneRI.getShortNameToLog());<a name="line.474"></a>
+<span class="sourceLineNo">475</span> sb.append(", daughterB=");<a name="line.475"></a>
+<span class="sourceLineNo">476</span> sb.append(daughterTwoRI.getShortNameToLog());<a name="line.476"></a>
+<span class="sourceLineNo">477</span> }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span> private RegionInfo getParentRegion() {<a name="line.479"></a>
+<span class="sourceLineNo">480</span> return getRegion();<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> @Override<a name="line.483"></a>
+<span class="sourceLineNo">484</span> public TableOperationType getTableOperationType() {<a name="line.484"></a>
+<span class="sourceLineNo">485</span> return TableOperationType.REGION_SPLIT;<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> @Override<a name="line.488"></a>
+<span class="sourceLineNo">489</span> protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span> return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<a name="line.490"></a>
+<span class="sourceLineNo">491</span> }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span> private byte[] getSplitRow() {<a name="line.493"></a>
+<span class="sourceLineNo">494</span> return daughterTwoRI.getStartKey();<a name="line.494"></a>
+<span class="sourceLineNo">495</span> }<a name="line.495"></a>
<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span> /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span> * Prepare to Split region.<a name="line.498"></a>
-<span class="sourceLineNo">499</span> * @param env MasterProcedureEnv<a name="line.499"></a>
-<span class="sourceLineNo">500</span> */<a name="line.500"></a>
-<span class="sourceLineNo">501</span> public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.501"></a>
-<span class="sourceLineNo">502</span> // Fail if we are taking snapshot for the given table<a name="line.502"></a>
-<span class="sourceLineNo">503</span> if (env.getMasterServices().getSnapshotManager()<a name="line.503"></a>
-<span class="sourceLineNo">504</span> .isTakingSnapshot(getParentRegion().getTable())) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span> setFailure(new IOException("Skip splitting region " + getParentRegion().getShortNameToLog() +<a name="line.505"></a>
-<span class="sourceLineNo">506</span> ", because we are taking snapshot for the table " + getParentRegion().getTable()));<a name="line.506"></a>
-<span class="sourceLineNo">507</span> return false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span> }<a name="line.508"></a>
-<span class="sourceLineNo">509</span> // Check whether the region is splittable<a name="line.509"></a>
-<span class="sourceLineNo">510</span> RegionStateNode node =<a name="line.510"></a>
-<span class="sourceLineNo">511</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span> if (node == null) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span> throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<a name="line.514"></a>
-<span class="sourceLineNo">515</span> }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span> RegionInfo parentHRI = node.getRegionInfo();<a name="line.517"></a>
-<span class="sourceLineNo">518</span> if (parentHRI == null) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span> LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.519"></a>
-<span class="sourceLineNo">520</span> return false;<a name="line.520"></a>
-<span class="sourceLineNo">521</span> }<a name="line.521"></a>
-<span class="sourceLineNo">522</span> // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.522"></a>
-<span class="sourceLineNo">523</span> // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.523"></a>
-<span class="sourceLineNo">524</span> // just before us.<a name="line.524"></a>
-<span class="sourceLineNo">525</span> if (node.isInState(State.SPLIT)) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span> LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.526"></a>
-<span class="sourceLineNo">527</span> return false;<a name="line.527"></a>
-<span class="sourceLineNo">528</span> }<a name="line.528"></a>
-<span class="sourceLineNo">529</span> if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span> LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.530"></a>
-<span class="sourceLineNo">531</span> return false;<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> // expected parent to be online or closed<a name="line.534"></a>
-<span class="sourceLineNo">535</span> if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span> // We may have SPLIT already?<a name="line.536"></a>
-<span class="sourceLineNo">537</span> setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.537"></a>
-<span class="sourceLineNo">538</span> " FAILED because state=" + node.getState() + "; expected " +<a name="line.538"></a>
-<span class="sourceLineNo">539</span> Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.539"></a>
-<span class="sourceLineNo">540</span> return false;<a name="line.540"></a>
-<span class="sourceLineNo">541</span> }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span> // Mostly this check is not used because we already check the switch before submit a split<a name="line.543"></a>
-<span class="sourceLineNo">544</span> // procedure. Just for safe, check the switch again. This procedure can be rollbacked if<a name="line.544"></a>
-<span class="sourceLineNo">545</span> // the switch was set to false after submit.<a name="line.545"></a>
-<span class="sourceLineNo">546</span> if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span> LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.547"></a>
-<span class="sourceLineNo">548</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.548"></a>
-<span class="sourceLineNo">549</span> " failed due to split switch off"));<a name="line.549"></a>
-<span class="sourceLineNo">550</span> return false;<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> if (!env.getMasterServices().getTableDescriptors().get(getTableName()).isSplitEnabled()) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span> LOG.warn("pid={}, split is disabled for the table! Skipping split of {}", getProcId(),<a name="line.554"></a>
-<span class="sourceLineNo">555</span> parentHRI);<a name="line.555"></a>
-<span class="sourceLineNo">556</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString()<a name="line.556"></a>
-<span class="sourceLineNo">557</span> + " failed as region split is disabled for the table"));<a name="line.557"></a>
-<span class="sourceLineNo">558</span> return false;<a name="line.558"></a>
-<span class="sourceLineNo">559</span> }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span> // set node state as SPLITTING<a name="line.561"></a>
-<span class="sourceLineNo">562</span> node.setState(State.SPLITTING);<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span> // Since we have the lock and the master is coordinating the operation<a name="line.564"></a>
-<span class="sourceLineNo">565</span> // we are always able to split the region<a name="line.565"></a>
-<span class="sourceLineNo">566</span> return true;<a name="line.566"></a>
-<span class="sourceLineNo">567</span> }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> /**<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * Action before splitting region in a table.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> * @param env MasterProcedureEnv<a name="line.571"></a>
-<span class="sourceLineNo">572</span> */<a name="line.572"></a>
-<span class="sourceLineNo">573</span> private void preSplitRegion(final MasterProcedureEnv env)<a name="line.573"></a>
-<span class="sourceLineNo">574</span> throws IOException, InterruptedException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.575"></a>
-<span class="sourceLineNo">576</span> if (cpHost != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span> cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.577"></a>
-<span class="sourceLineNo">578</span> }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span> // TODO: Clean up split and merge. Currently all over the place.<a name="line.580"></a>
-<span class="sourceLineNo">581</span> // Notify QuotaManager and RegionNormalizer<a name="line.581"></a>
-<span class="sourceLineNo">582</span> try {<a name="line.582"></a>
-<span class="sourceLineNo">583</span> env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.583"></a>
-<span class="sourceLineNo">584</span> } catch (QuotaExceededException e) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span> // TODO: why is this here? split requests can be submitted by actors other than the normalizer<a name="line.585"></a>
-<span class="sourceLineNo">586</span> env.getMasterServices()<a name="line.586"></a>
-<span class="sourceLineNo">587</span> .getRegionNormalizerManager()<a name="line.587"></a>
-<span class="sourceLineNo">588</span> .planSkipped(NormalizationPlan.PlanType.SPLIT);<a name="line.588"></a>
-<span class="sourceLineNo">589</span> throw e;<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><a name="line.592"></a>
-<span class="sourceLineNo">593</span> /**<a name="line.593"></a>
-<span class="sourceLineNo">594</span> * Action after rollback a split table region action.<a name="line.594"></a>
-<span class="sourceLineNo">595</span> * @param env MasterProcedureEnv<a name="line.595"></a>
-<span class="sourceLineNo">596</span> */<a name="line.596"></a>
-<span class="sourceLineNo">597</span> private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.597"></a>
-<span class="sourceLineNo">598</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.598"></a>
-<span class="sourceLineNo">599</span> if (cpHost != null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span> cpHost.postRollBackSplitRegionAction(getUser());<a name="line.600"></a>
-<span class="sourceLineNo">601</span> }<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> /**<a name="line.604"></a>
-<span class="sourceLineNo">605</span> * Rollback close parent region<a name="line.605"></a>
-<span class="sourceLineNo">606</span> */<a name="line.606"></a>
-<span class="sourceLineNo">607</span> private void openParentRegion(MasterProcedureEnv env) throws IOException {<a name="line.607"></a>
-<span class="sourceLineNo">608</span> AssignmentManagerUtil.reopenRegionsForRollback(env,<a name="line.608"></a>
-<span class="sourceLineNo">609</span> Collections.singletonList((getParentRegion())), getRegionReplication(env),<a name="line.609"></a>
-<span class="sourceLineNo">610</span> getParentRegionServerName(env));<a name="line.610"></a>
-<span class="sourceLineNo">611</span> }<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> * Create daughter regions<a name="line.614"></a>
-<span class="sourceLineNo">615</span> */<a name="line.615"></a>
-<span class="sourceLineNo">616</span> public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.616"></a>
-<span class="sourceLineNo">617</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.617"></a>
-<span class="sourceLineNo">618</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.618"></a>
-<span class="sourceLineNo">619</span> final FileSystem fs = mfs.getFileSystem();<a name="line.619"></a>
-<span class="sourceLineNo">620</span> HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.620"></a>
-<span class="sourceLineNo">621</span> env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span> regionFs.createSplitsDir(daughterOneRI, daughterTwoRI);<a name="line.623"></a>
+<span class="sourceLineNo">497</span> private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span> /**<a name="line.499"></a>
+<span class="sourceLineNo">500</span> * Prepare to Split region.<a name="line.500"></a>
+<span class="sourceLineNo">501</span> * @param env MasterProcedureEnv<a name="line.501"></a>
+<span class="sourceLineNo">502</span> */<a name="line.502"></a>
+<span class="sourceLineNo">503</span> public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.503"></a>
+<span class="sourceLineNo">504</span> // Fail if we are taking snapshot for the given table<a name="line.504"></a>
+<span class="sourceLineNo">505</span> if (env.getMasterServices().getSnapshotManager()<a name="line.505"></a>
+<span class="sourceLineNo">506</span> .isTakingSnapshot(getParentRegion().getTable())) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span> setFailure(new IOException("Skip splitting region " + getParentRegion().getShortNameToLog() +<a name="line.507"></a>
+<span class="sourceLineNo">508</span> ", because we are taking snapshot for the table " + getParentRegion().getTable()));<a name="line.508"></a>
+<span class="sourceLineNo">509</span> return false;<a name="line.509"></a>
+<span class="sourceLineNo">510</span> }<a name="line.510"></a>
+<span class="sourceLineNo">511</span> // Check whether the region is splittable<a name="line.511"></a>
+<span class="sourceLineNo">512</span> RegionStateNode node =<a name="line.512"></a>
+<span class="sourceLineNo">513</span> env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span> if (node == null) {<a name="line.515"></a>
+<span class="sourceLineNo">516</span> throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<a name="line.516"></a>
+<span class="sourceLineNo">517</span> }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span> RegionInfo parentHRI = node.getRegionInfo();<a name="line.519"></a>
+<span class="sourceLineNo">520</span> if (parentHRI == null) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span> LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.521"></a>
+<span class="sourceLineNo">522</span> return false;<a name="line.522"></a>
+<span class="sourceLineNo">523</span> }<a name="line.523"></a>
+<span class="sourceLineNo">524</span> // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.524"></a>
+<span class="sourceLineNo">525</span> // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.525"></a>
+<span class="sourceLineNo">526</span> // just before us.<a name="line.526"></a>
+<span class="sourceLineNo">527</span> if (node.isInState(State.SPLIT)) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span> LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.528"></a>
+<span class="sourceLineNo">529</span> return false;<a name="line.529"></a>
+<span class="sourceLineNo">530</span> }<a name="line.530"></a>
+<span class="sourceLineNo">531</span> if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span> LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.532"></a>
+<span class="sourceLineNo">533</span> return false;<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> // expected parent to be online or closed<a name="line.536"></a>
+<span class="sourceLineNo">537</span> if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.537"></a>
+<span class="sourceLineNo">538</span> // We may have SPLIT already?<a name="line.538"></a>
+<span class="sourceLineNo">539</span> setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.539"></a>
+<span class="sourceLineNo">540</span> " FAILED because state=" + node.getState() + "; expected " +<a name="line.540"></a>
+<span class="sourceLineNo">541</span> Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.541"></a>
+<span class="sourceLineNo">542</span> return false;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span> // Mostly this check is not used because we already check the switch before submit a split<a name="line.545"></a>
+<span class="sourceLineNo">546</span> // procedure. Just for safe, check the switch again. This procedure can be rollbacked if<a name="line.546"></a>
+<span class="sourceLineNo">547</span> // the switch was set to false after submit.<a name="line.547"></a>
+<span class="sourceLineNo">548</span> if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span> LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.549"></a>
+<span class="sourceLineNo">550</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.550"></a>
+<span class="sourceLineNo">551</span> " failed due to split switch off"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span> return false;<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> if (!env.getMasterServices().getTableDescriptors().get(getTableName()).isSplitEnabled()) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span> LOG.warn("pid={}, split is disabled for the table! Skipping split of {}", getProcId(),<a name="line.556"></a>
+<span class="sourceLineNo">557</span> parentHRI);<a name="line.557"></a>
+<span class="sourceLineNo">558</span> setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString()<a name="line.558"></a>
+<span class="sourceLineNo">559</span> + " failed as region split is disabled for the table"));<a name="line.559"></a>
+<span class="sourceLineNo">560</span> return false;<a name="line.560"></a>
+<span class="sourceLineNo">561</span> }<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span> // set node state as SPLITTING<a name="line.563"></a>
+<span class="sourceLineNo">564</span> node.setState(State.SPLITTING);<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span> // Since we have the lock and the master is coordinating the operation<a name="line.566"></a>
+<span class="sourceLineNo">567</span> // we are always able to split the region<a name="line.567"></a>
+<span class="sourceLineNo">568</span> return true;<a name="line.568"></a>
+<span class="sourceLineNo">569</span> }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span> /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span> * Action before splitting region in a table.<a name="line.572"></a>
+<span class="sourceLineNo">573</span> * @param env MasterProcedureEnv<a name="line.573"></a>
+<span class="sourceLineNo">574</span> */<a name="line.574"></a>
+<span class="sourceLineNo">575</span> private void preSplitRegion(final MasterProcedureEnv env)<a name="line.575"></a>
+<span class="sourceLineNo">576</span> throws IOException, InterruptedException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.577"></a>
+<span class="sourceLineNo">578</span> if (cpHost != null) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.579"></a>
+<span class="sourceLineNo">580</span> }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span> // TODO: Clean up split and merge. Currently all over the place.<a name="line.582"></a>
+<span class="sourceLineNo">583</span> // Notify QuotaManager and RegionNormalizer<a name="line.583"></a>
+<span class="sourceLineNo">584</span> try {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.585"></a>
+<span class="sourceLineNo">586</span> } catch (QuotaExceededException e) {<a name="line.586"></a>
+<span class="sourceLineNo">587</span> // TODO: why is this here? split requests can be submitted by actors other than the normalizer<a name="line.587"></a>
+<span class="sourceLineNo">588</span> env.getMasterServices()<a name="line.588"></a>
+<span class="sourceLineNo">589</span> .getRegionNormalizerManager()<a name="line.589"></a>
+<span class="sourceLineNo">590</span> .planSkipped(NormalizationPlan.PlanType.SPLIT);<a name="line.590"></a>
+<span class="sourceLineNo">591</span> throw e;<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><a name="line.594"></a>
+<span class="sourceLineNo">595</span> /**<a name="line.595"></a>
+<span class="sourceLineNo">596</span> * Action after rollback a split table region action.<a name="line.596"></a>
+<span class="sourceLineNo">597</span> * @param env MasterProcedureEnv<a name="line.597"></a>
+<span class="sourceLineNo">598</span> */<a name="line.598"></a>
+<span class="sourceLineNo">599</span> private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.599"></a>
+<span class="sourceLineNo">600</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.600"></a>
+<span class="sourceLineNo">601</span> if (cpHost != null) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span> cpHost.postRollBackSplitRegionAction(getUser());<a name="line.602"></a>
+<span class="sourceLineNo">603</span> }<a name="line.603"></a>
+<span class="sourceLineNo">604</span> }<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> * Rollback close parent region<a name="line.607"></a>
+<span class="sourceLineNo">608</span> */<a name="line.608"></a>
+<span class="sourceLineNo">609</span> private void openParentRegion(MasterProcedureEnv env) throws IOException {<a name="line.609"></a>
+<span class="sourceLineNo">610</span> AssignmentManagerUtil.reopenRegionsForRollback(env,<a name="line.610"></a>
+<span class="sourceLineNo">611</span> Collections.singletonList((getParentRegion())), getRegionReplication(env),<a name="line.611"></a>
+<span class="sourceLineNo">612</span> getParentRegionServerName(env));<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> /**<a name="line.615"></a>
+<span class="sourceLineNo">616</span> * Create daughter regions<a name="line.616"></a>
+<span class="sourceLineNo">617</span> */<a name="line.617"></a>
+<span class="sourceLineNo">618</span> public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.618"></a>
+<span class="sourceLineNo">619</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.619"></a>
+<span class="sourceLineNo">620</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.620"></a>
+<span class="sourceLineNo">621</span> final FileSystem fs = mfs.getFileSystem();<a name="line.621"></a>
+<span class="sourceLineNo">622</span> HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.622"></a>
+<span class="sourceLineNo">623</span> env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.623"></a>
<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span> Pair<Integer, Integer> expectedReferences = splitStoreFiles(env, regionFs);<a name="line.625"></a>
+<span class="sourceLineNo">625</span> regionFs.createSplitsDir(daughterOneRI, daughterTwoRI);<a name="line.625"></a>
<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span> assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.627"></a>
-<span class="sourceLineNo">628</span> regionFs.getSplitsDir(daughterOneRI));<a name="line.628"></a>
-<span class="sourceLineNo">629</span> regionFs.commitDaughterRegion(daughterOneRI);<a name="line.629"></a>
-<span class="sourceLineNo">630</span> assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.630"></a>
-<span class="sourceLineNo">631</span> new Path(tabledir, daughterOneRI.getEncodedName()));<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span> assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.633"></a>
-<span class="sourceLineNo">634</span> regionFs.getSplitsDir(daughterTwoRI));<a name="line.634"></a>
-<span class="sourceLineNo">635</span> regionFs.commitDaughterRegion(daughterTwoRI);<a name="line.635"></a>
-<span class="sourceLineNo">636</span> assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.636"></a>
-<span class="sourceLineNo">637</span> new Path(tabledir, daughterTwoRI.getEncodedName()));<a name="line.637"></a>
-<span class="sourceLineNo">638</span> }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span> private void deleteDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.640"></a>
-<span class="sourceLineNo">641</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.641"></a>
-<span class="sourceLineNo">642</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span> HRegionFileSystem.deleteRegionFromFileSystem(env.getMasterConfiguration(),<a name="line.643"></a>
-<span class="sourceLineNo">644</span> mfs.getFileSystem(), tabledir, daughterOneRI);<a name="line.644"></a>
+<span class="sourceLineNo">627</span> Pair<Integer, Integer> expectedReferences = splitStoreFiles(env, regionFs);<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span> assertSplitResultFilesCount(fs, expectedReferences.getFirst(),<a name="line.629"></a>
+<span class="sourceLineNo">630</span> regionFs.getSplitsDir(daughterOneRI));<a name="line.630"></a>
+<span class="sourceLineNo">631</span> regionFs.commitDaughterRegion(daughterOneRI);<a name="line.631"></a>
+<span class="sourceLineNo">632</span> assertSplitResultFilesCount(fs, expectedReferences.getFirst(),<a name="line.632"></a>
+<span class="sourceLineNo">633</span> new Path(tabledir, daughterOneRI.getEncodedName()));<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span> assertSplitResultFilesCount(fs, expectedReferences.getSecond(),<a name="line.635"></a>
+<span class="sourceLineNo">636</span> regionFs.getSplitsDir(daughterTwoRI));<a name="line.636"></a>
+<span class="sourceLineNo">637</span> regionFs.commitDaughterRegion(daughterTwoRI);<a name="line.637"></a>
+<span class="sourceLineNo">638</span> assertSplitResultFilesCount(fs, expectedReferences.getSecond(),<a name="line.638"></a>
+<span class="sourceLineNo">639</span> new Path(tabledir, daughterTwoRI.getEncodedName()));<a name="line.639"></a>
+<span class="sourceLineNo">640</span> }<a name="line.640"></a>
+<span class="sourceLineNo">641</span><a name="line.641"></a>
+<span class="sourceLineNo">642</span> private void deleteDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.642"></a>
+<span class="sourceLineNo">643</span> final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.643"></a>
+<span class="sourceLineNo">644</span> final Path tabledir = CommonFSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.644"></a>
<span class="sourceLineNo">645</span> HRegionFileSystem.deleteRegionFromFileSystem(env.getMasterConfiguration(),<a name="line.645"></a>
-<span class="sourceLineNo">646</span> mfs.getFileSystem(), tabledir, daughterTwoRI);<a name="line.646"></a>
-<span class="sourceLineNo">647</span> }<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span> /**<a name="line.649"></a>
-<span class="sourceLineNo">650</span> * Create Split directory<a name="line.650"></a>
-<span class="sourceLineNo">651</span> * @param env MasterProcedureEnv<a name="line.651"></a>
-<span class="sourceLineNo">652</span> */<a name="line.652"></a>
-<span class="sourceLineNo">653</span> private Pair<Integer, Integer> splitStoreFiles(final MasterProcedureEnv env,<a name="line.653"></a>
-<span class="sourceLineNo">654</span> final HRegionFileSystem regionFs) throws IOException {<a name="line.654"></a>
-<span class="sourceLineNo">655</span> final Configuration conf = env.getMasterConfiguration();<a name="line.655"></a>
-<span class="sourceLineNo">656</span> TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.656"></a>
-<span class="sourceLineNo">657</span> // The following code sets up a thread pool executor with as many slots as<a name="line.657"></a>
-<span class="sourceLineNo">658</span> // there's files to split. It then fires up everything, waits for<a name="line.658"></a>
-<span class="sourceLineNo">659</span> // completion and finally checks for any exception<a name="line.659"></a>
-<span class="sourceLineNo">660</span> //<a name="line.660"></a>
-<span class="sourceLineNo">661</span> // Note: From HBASE-26187, splitStoreFiles now creates daughter region dirs straight under the<a name="line.661"></a>
-<span class="sourceLineNo">662</span> // table dir. In case of failure, the proc would go through this again, already existing<a name="line.662"></a>
-<span class="sourceLineNo">663</span> // region dirs and split files would just be ignored, new split files should get created.<a name="line.663"></a>
-<span class="sourceLineNo">664</span> int nbFiles = 0;<a name="line.664"></a>
-<span class="sourceLineNo">665</span> final Map<String, Collection<StoreFileInfo>> files =<a name="line.665"></a>
-<span class="sourceLineNo">666</span> new HashMap<String, Collection<StoreFileInfo>>(htd.getColumnFamilyCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span> for (ColumnFamilyDescriptor cfd : htd.getColumnFamilies()) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span> String family = cfd.getNameAsString();<a name="line.668"></a>
-<span class="sourceLineNo">669</span> Collection<StoreFileInfo> sfis = regionFs.getStoreFiles(family);<a name="line.669"></a>
-<span class="sourceLineNo">670</span> if (sfis == null) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span> continue;<a name="line.671"></a>
-<span class="sourceLineNo">672</span> }<a name="line.672"></a>
-<span class="sourceLineNo">673</span> Collection<StoreFileInfo> filteredSfis = null;<a name="line.673"></a>
-<span class="sourceLineNo">674</span> for (StoreFileInfo sfi : sfis) {<a name="line.674"></a>
-<span class="sourceLineNo">675</span> // Filter. There is a lag cleaning up compacted reference files. They get cleared<a name="line.675"></a>
-<span class="sourceLineNo">676</span> // after a delay in case outstanding Scanners still have references. Because of this,<a name="line.676"></a>
-<span class="sourceLineNo">677</span> // the listing of the Store content may have straggler reference files. Skip these.<a name="line.677"></a>
-<span class="sourceLineNo">678</span> // It should be safe to skip references at this point because we checked above with<a name="line.678"></a>
-<span class="sourceLineNo">679</span> // the region if it thinks it is splittable and if we are here, it thinks it is<a name="line.679"></a>
-<span class="sourceLineNo">680</span> // splitable.<a name="line.680"></a>
-<span class="sourceLineNo">681</span> if (sfi.isReference()) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span> LOG.info("Skipping split of " + sfi + "; presuming ready for archiving.");<a name="line.682"></a>
-<span class="sourceLineNo">683</span> continue;<a name="line.683"></a>
-<span class="sourceLineNo">684</span> }<a name="line.684"></a>
-<span class="sourceLineNo">685</span> if (filteredSfis == null) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span> filteredSfis = new ArrayList<StoreFileInfo>(sfis.size());<a name="line.686"></a>
-<span class="sourceLineNo">687</span> files.put(family, filteredSfis);<a name="line.687"></a>
-<span class="sourceLineNo">688</span> }<a name="line.688"></a>
-<span class="sourceLineNo">689</span> filteredSfis.add(sfi);<a name="line.689"></a>
-<span class="sourceLineNo">690</span> nbFiles++;<a name="line.690"></a>
-<span class="sourceLineNo">691</span> }<a name="line.691"></a>
-<span class="sourceLineNo">692</span> }<a name="line.692"></a>
-<span class="sourceLineNo">693</span> if (nbFiles == 0) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span> // no file needs to be splitted.<a name="line.694"></a>
-<span class="sourceLineNo">695</span> return new Pair<Integer, Integer>(0, 0);<a name="line.695"></a>
-<span class="sourceLineNo">696</span> }<a name="line.696"></a>
-<span class="sourceLineNo">697</span> // Max #threads is the smaller of the number of storefiles or the default max determined above.<a name="line.697"></a>
-<span class="sourceLineNo">698</span> int maxThreads = Math.min(<a name="line.698"></a>
-<span class="sourceLineNo">699</span> conf.getInt(HConstants.REGION_SPLIT_THREADS_MAX,<a name="line.699"></a>
-<span class="sourceLineNo">700</span> conf.getInt(HStore.BLOCKING_STOREFILES_KEY, HStore.DEFAULT_BLOCKING_STOREFILE_COUNT)),<a name="line.700"></a>
-<span class="sourceLineNo">701</span> nbFiles);<a name="line.701"></a>
-<span class="sourceLineNo">702</span> LOG.info("pid=" + getProcId() + " splitting " + nbFiles + " storefiles, region=" +<a name="line.702"></a>
-<span class="sourceLineNo">703</span> getParentRegion().getShortNameToLog() + ", threads=" + maxThreads);<a name="line.703"></a>
-<span class="sourceLineNo">704</span> final ExecutorService threadPool = Executors.newFixedThreadPool(maxThreads,<a name="line.704"></a>
-<span class="sourceLineNo">705</span> new ThreadFactoryBuilder().setNameFormat("StoreFileSplitter-pool-%d").setDaemon(true)<a name="line.705"></a>
-<span class="sourceLineNo">706</span> .setUncaughtExceptionHandler(Threads.LOGGING_EXCEPTION_HANDLER).build());<a name="line.706"></a>
-<span class="sourceLineNo">707</span> final List<Future<Pair<Path, Path>>> futures = new ArrayList<Future<Pair<Path, Path>>>(nbFiles);<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span> // Split each store file.<a name="line.709"></a>
-<span class="sourceLineNo">710</span> for (Map.Entry<String, Collection<StoreFileInfo>> e : files.entrySet()) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span> byte[] familyName = Bytes.toBytes(e.getKey());<a name="line.711"></a>
-<span class="sourceLineNo">712</span> final ColumnFamilyDescriptor hcd = htd.getColumnFamily(familyName);<a name="line.712"></a>
-<span class="sourceLineNo">713</span> final Collection<StoreFileInfo> storeFiles = e.getValue();<a name="line.713"></a>
-<span class="sourceLineNo">714</span> if (storeFiles != null && storeFiles.size() > 0) {<a name="line.714"></a>
-<span class="sourceLineNo">715</span> final Configuration storeConfiguration =<a name="line.715"></a>
-<span class="sourceLineNo">716</span> StoreUtils.createStoreConfiguration(env.getMasterConfiguration(), htd, hcd);<a name="line.716"></a>
-<span class="sourceLineNo">717</span> for (StoreFileInfo storeFileInfo : storeFiles) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span> // As this procedure is running on master, use CacheConfig.DISABLED means<a name="line.718"></a>
-<span class="sourceLineNo">719</span> // don't cache any block.<a name="line.719"></a>
-<span class="sourceLineNo">720</span> // We also need to pass through a suitable CompoundConfiguration as if this<a name="line.720"></a>
-<span class="sourceLineNo">721</span> // is running in a regionserver's Store context, or we might not be able<a name="line.721"></a>
-<span class="sourceLineNo">722</span> // to read the hfiles.<a name="line.722"></a>
-<span class="sourceLineNo">723</span> storeFileInfo.setConf(storeConfiguration);<a name="line.723"></a>
-<span class="sourceLineNo">724</span> StoreFileSplitter sfs = new StoreFileSplitter(regionFs, familyName,<a name="line.724"></a>
-<span class="sourceLineNo">725</span> new HStoreFile(storeFileInfo, hcd.getBloomFilterType(), CacheConfig.DISABLED));<a name="line.725"></a>
-<span class="sourceLineNo">726</span> futures.add(threadPool.submit(sfs));<a name="line.726"></a>
-<span class="sourceLineNo">727</span> }<a name="line.727"></a>
-<span class="sourceLineNo">728</span> }<a name="line.728"></a>
-<span class="sourceLineNo">729</span> }<a name="line.729"></a>
-<span class="sourceLineNo">730</span> // Shutdown the pool<a name="line.730"></a>
-<span class="sourceLineNo">731</span> threadPool.shutdown();<a name="line.731"></a>
-<span class="sourceLineNo">732</span><a name="line.732"></a>
-<span class="sourceLineNo">733</span> // Wait for all the tasks to finish.<a name="line.733"></a>
-<span class="sourceLineNo">734</span> // When splits ran on the RegionServer, how-long-to-wait-configuration was named<a name="line.734"></a>
-<span class="sourceLineNo">735</span> // hbase.regionserver.fileSplitTimeout. If set, use its value.<a name="line.735"></a>
-<span class="sourceLineNo">736</span> long fileSplitTimeout = conf.getLong("hbase.master.fileSplitTimeout",<a name="line.736"></a>
-<span class="sourceLineNo">737</span> conf.getLong("hbase.regionserver.fileSplitTimeout", 600000));<a name="line.737"></a>
-<span class="sourceLineNo">738</span> try {<a name="line.738"></a>
-<span class="sourceLineNo">739</span> boolean stillRunning = !threadPool.awaitTermination(fileSplitTimeout, TimeUnit.MILLISECONDS);<a name="line.739"></a>
-<span class="sourceLineNo">740</span> if (stillRunning) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span> threadPool.shutdownNow();<a name="line.741"></a>
-<span class="sourceLineNo">742</span> // wait for the thread to shutdown completely.<a name="line.742"></a>
-<span class="sourceLineNo">743</span> while (!threadPool.isTerminated()) {<a name="line.743"></a>
-<span class="sourceLineNo">744</span> Thread.sleep(50);<a name="line.744"></a>
-<span class="sourceLineNo">745</span> }<a name="line.745"></a>
-<span class="sourceLineNo">746</span> throw new IOException(<a name="line.746"></a>
-<span class="sourceLineNo">747</span> "Took too long to split the" + " files and create the references, aborting split");<a name="line.747"></a>
-<span class="sourceLineNo">748</span> }<a name="line.748"></a>
-<span class="sourceLineNo">749</span> } catch (InterruptedException e) {<a name="line.749"></a>
-<span class="sourceLineNo">750</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.750"></a>
-<span class="sourceLineNo">751</span> }<a name="line.751"></a>
-<span class="sourceLineNo">752</span><a name="line.752"></a>
-<span class="sourceLineNo">753</span> int daughterA = 0;<a name="line.753"></a>
-<span class="sourceLineNo">754</span> int daughterB = 0;<a name="line.754"></a>
-<span class="sourceLineNo">755</span> // Look for any exception<a name="line.755"></a>
-<span class="sourceLineNo">756</span> for (Future<Pair<Path, Path>> future : futures) {<a name="line.756"></a>
-<span class="sourceLineNo">757</span> try {<a name="line.757"></a>
-<span class="sourceLineNo">758</span> Pair<Path, Path> p = future.get();<a name="line.758"></a>
-<span class="sourceLineNo">759</span> daughterA += p.getFirst() != null ? 1 : 0;<a name="line.759"></a>
-<span class="sourceLineNo">760</span> daughterB += p.getSecond() != null ? 1 : 0;<a name="line.760"></a>
-<span class="sourceLineNo">761</span> } catch (InterruptedException e) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.762"></a>
-<span class="sourceLineNo">763</span> } catch (ExecutionException e) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span> throw new IOException(e);<a name="line.764"></a>
-<span class="sourceLineNo">765</span> }<a name="line.765"></a>
-<span class="sourceLineNo">766</span> }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span> if (LOG.isDebugEnabled()) {<a name="line.768"></a>
-<span class="sourceLineNo">769</span> LOG.debug("pid=" + getProcId() + " split storefiles for region " +<a name="line.769"></a>
-<span class="sourceLineNo">770</span> getParentRegion().getShortNameToLog() + " Daughter A: " + daughterA +<a name="line.770"></a>
-<span class="sourceLineNo">771</span> " storefiles, Daughter B: " + daughterB + " storefiles.");<a name="line.771"></a>
-<span class="sourceLineNo">772</span> }<a name="line.772"></a>
-<span class="sourceLineNo">773</span> return new Pair<Integer, Integer>(daughterA, daughterB);<a name="line.773"></a>
-<span class="sourceLineNo">774</span> }<a name="line.774"></a>
-<span class="sourceLineNo">775</span><a name="line.775"></a>
-<span class="sourceLineNo">776</span> private void assertReferenceFileCount(final FileSystem fs, final int expectedReferenceFileCount,<a name="line.776"></a>
-<span class="sourceLineNo">777</span> final Path dir) throws IOException {<a name="line.777"></a>
-<span class="sourceLineNo">778</span> if (expectedReferenceFileCount != 0 &&<a name="line.778"></a>
-<span class="sourceLineNo">779</span> expectedReferenceFileCount != FSUtils.getRegionReferenceFileCount(fs, dir)) {<a name="line.779"></a>
-<span class="sourceLineNo">780</span> throw new IOException("Failing split. Expected reference file count isn't equal.");<a name="line.780"></a>
-<span class="sourceLineNo">781</span> }<a name="line.781"></a>
-<span class="sourceLineNo">782</span> }<a name="line.782"></a>
-<span class="sourceLineNo">783</span><a name="line.783"></a>
-<span class="sourceLineNo">784</span> private Pair<Path, Path> splitStoreFile(HRegionFileSystem regionFs, byte[] family, HStoreFile sf)<a name="line.784"></a>
-<span class="sourceLineNo">785</span> throws IOException {<a name="line.785"></a>
-<span class="sourceLineNo">786</span> if (LOG.isDebugEnabled()) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span> LOG.debug("pid=" + getProcId() + " splitting started for store file: " +<a name="line.787"></a>
-<span class="sourceLineNo">788</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.788"></a>
-<span class="sourceLineNo">789</span> }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span> final byte[] splitRow = getSplitRow();<a name="line.791"></a>
-<span class="sourceLineNo">792</span> final String familyName = Bytes.toString(family);<a name="line.792"></a>
-<span class="sourceLineNo">793</span> final Path path_first = regionFs.splitStoreFile(this.daughterOneRI, familyName, sf, splitRow,<a name="line.793"></a>
-<span class="sourceLineNo">794</span> false, splitPolicy);<a name="line.794"></a>
-<span class="sourceLineNo">795</span> final Path path_second = regionFs.splitStoreFile(this.daughterTwoRI, familyName, sf, splitRow,<a name="line.795"></a>
-<span class="sourceLineNo">796</span> true, splitPolicy);<a name="line.796"></a>
-<span class="sourceLineNo">797</span> if (LOG.isDebugEnabled()) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span> LOG.debug("pid=" + getProcId() + " splitting complete for store file: " +<a name="line.798"></a>
-<span class="sourceLineNo">799</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.799"></a>
-<span class="sourceLineNo">800</span> }<a name="line.800"></a>
-<span class="sourceLineNo">801</span> return new Pair<Path,Path>(path_first, path_second);<a name="line.801"></a>
-<span class="sourceLineNo">802</span> }<a name="line.802"></a>
-<span class="sourceLineNo">803</span><a name="line.803"></a>
-<span class="sourceLineNo">804</span> /**<a name="line.804"></a>
-<span class="sourceLineNo">805</span> * Utility class used to do the file splitting / reference writing<a name="line.805"></a>
-<span class="sourceLineNo">806</span> * in parallel instead of sequentially.<a name="line.806"></a>
-<span class="sourceLineNo">807</span> */<a name="line.807"></a>
-<span class="sourceLineNo">808</span> private class StoreFileSplitter implements Callable<Pair<Path,Path>> {<a name="line.808"></a>
-<span class="sourceLineNo">809</span> private final HRegionFileSystem regionFs;<a name="line.809"></a>
-<span class="sourceLineNo">810</span> private final byte[] family;<a name="line.810"></a>
-<span class="sourceLineNo">811</span> private final HStoreFile sf;<a name="line.811"></a>
-<span class="sourceLineNo">812</span><a name="line.812"></a>
-<span class="sourceLineNo">813</span> /**<a name="line.813"></a>
-<span class="sourceLineNo">814</span> * Constructor that takes what it needs to split<a name="line.814"></a>
-<span class="sourceLineNo">815</span> * @param regionFs the file system<a name="line.815"></a>
-<span class="sourceLineNo">816</span> * @param family Family that contains the store file<a name="line.816"></a>
-<span class="sourceLineNo">817</span> * @param sf which file<a name="line.817"></a>
-<span class="sourceLineNo">818</span> */<a name="line.818"></a>
-<span class="sourceLineNo">819</span> public StoreFileSplitter(HRegionFileSystem regionFs, byte[] family, HStoreFile sf) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span> this.regionFs = regionFs;<a name="line.820"></a>
-<span class="sourceLineNo">821</span> this.sf = sf;<a name="line.821"></a>
-<span class="sourceLineNo">822</span> this.family = family;<a name="line.822"></a>
-<span class="sourceLineNo">823</span> }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span> @Override<a name="line.825"></a>
-<span class="sourceLineNo">826</span> public Pair<Path,Path> call() throws IOException {<a name="line.826"></a>
-<span class="sourceLineNo">827</span> return splitStoreFile(regionFs, family, sf);<a name="line.827"></a>
-<span class="sourceLineNo">828</span> }<a name="line.828"></a>
-<span class="sourceLineNo">829</span> }<a name="line.829"></a>
+<span class="sourceLineNo">646</span> mfs.getFileSystem(), tabledir, daughterOneRI);<a name="line.646"></a>
+<span class="sourceLineNo">647</span> HRegionFileSystem.deleteRegionFromFileSystem(env.getMasterConfiguration(),<a name="line.647"></a>
+<span class="sourceLineNo">648</span> mfs.getFileSystem(), tabledir, daughterTwoRI);<a name="line.648"></a>
+<span class="sourceLineNo">649</span> }<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span> /**<a name="line.651"></a>
+<span class="sourceLineNo">652</span> * Create Split directory<a name="line.652"></a>
+<span class="sourceLineNo">653</span> * @param env MasterProcedureEnv<a name="line.653"></a>
+<span class="sourceLineNo">654</span> */<a name="line.654"></a>
+<span class="sourceLineNo">655</span> private Pair<Integer, Integer> splitStoreFiles(final MasterProcedureEnv env,<a name="line.655"></a>
+<span class="sourceLineNo">656</span> final HRegionFileSystem regionFs) throws IOException {<a name="line.656"></a>
+<span class="sourceLineNo">657</span> final Configuration conf = env.getMasterConfiguration();<a name="line.657"></a>
+<span class="sourceLineNo">658</span> TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.658"></a>
+<span class="sourceLineNo">659</span> // The following code sets up a thread pool executor with as many slots as<a name="line.659"></a>
+<span class="sourceLineNo">660</span> // there's files to split. It then fires up everything, waits for<a name="line.660"></a>
+<span class="sourceLineNo">661</span> // completion and finally checks for any exception<a name="line.661"></a>
+<span class="sourceLineNo">662</span> //<a name="line.662"></a>
+<span class="sourceLineNo">663</span> // Note: From HBASE-26187, splitStoreFiles now creates daughter region dirs straight under the<a name="line.663"></a>
+<span class="sourceLineNo">664</span> // table dir. In case of failure, the proc would go through this again, already existing<a name="line.664"></a>
+<span class="sourceLineNo">665</span> // region dirs and split files would just be ignored, new split files should get created.<a name="line.665"></a>
+<span class="sourceLineNo">666</span> int nbFiles = 0;<a name="line.666"></a>
+<span class="sourceLineNo">667</span> final Map<String, Collection<StoreFileInfo>> files =<a name="line.667"></a>
+<span class="sourceLineNo">668</span> new HashMap<String, Collection<StoreFileInfo>>(htd.getColumnFamilyCount());<a name="line.668"></a>
+<span class="sourceLineNo">669</span> for (ColumnFamilyDescriptor cfd : htd.getColumnFamilies()) {<a name="line.669"></a>
+<span class="sourceLineNo">670</span> String family = cfd.getNameAsString();<a name="line.670"></a>
+<span class="sourceLineNo">671</span> Collection<StoreFileInfo> sfis = regionFs.getStoreFiles(family);<a name="line.671"></a>
+<span class="sourceLineNo">672</span> if (sfis == null) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span> continue;<a name="line.673"></a>
+<span class="sourceLineNo">674</span> }<a name="line.674"></a>
+<span class="sourceLineNo">675</span> Collection<StoreFileInfo> filteredSfis = null;<a name="line.675"></a>
+<span class="sourceLineNo">676</span> for (StoreFileInfo sfi : sfis) {<a name="line.676"></a>
+<span class="sourceLineNo">677</span> // Filter. There is a lag cleaning up compacted reference files. They get cleared<a name="line.677"></a>
+<span class="sourceLineNo">678</span> // after a delay in case outstanding Scanners still have references. Because of this,<a name="line.678"></a>
+<span class="sourceLineNo">679</span> // the listing of the Store content may have straggler reference files. Skip these.<a name="line.679"></a>
+<span class="sourceLineNo">680</span> // It should be safe to skip references at this point because we checked above with<a name="line.680"></a>
+<span class="sourceLineNo">681</span> // the region if it thinks it is splittable and if we are here, it thinks it is<a name="line.681"></a>
+<span class="sourceLineNo">682</span> // splitable.<a name="line.682"></a>
+<span class="sourceLineNo">683</span> if (sfi.isReference()) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span> LOG.info("Skipping split of " + sfi + "; presuming ready for archiving.");<a name="line.684"></a>
+<span class="sourceLineNo">685</span> continue;<a name="line.685"></a>
+<span class="sourceLineNo">686</span> }<a name="line.686"></a>
+<span class="sourceLineNo">687</span> if (filteredSfis == null) {<a name="line.687"></a>
+<span class="sourceLineNo">688</span> filteredSfis = new ArrayList<StoreFileInfo>(sfis.size());<a name="line.688"></a>
+<span class="sourceLineNo">689</span> files.put(family, filteredSfis);<a name="line.689"></a>
+<span class="sourceLineNo">690</span> }<a name="line.690"></a>
+<span class="sourceLineNo">691</span> filteredSfis.add(sfi);<a name="line.691"></a>
+<span class="sourceLineNo">692</span> nbFiles++;<a name="line.692"></a>
+<span class="sourceLineNo">693</span> }<a name="line.693"></a>
+<span class="sourceLineNo">694</span> }<a name="line.694"></a>
+<span class="sourceLineNo">695</span> if (nbFiles == 0) {<a name="line.695"></a>
+<span class="sourceLineNo">696</span> // no file needs to be splitted.<a name="line.696"></a>
+<span class="sourceLineNo">697</span> return new Pair<Integer, Integer>(0, 0);<a name="line.697"></a>
+<span class="sourceLineNo">698</span> }<a name="line.698"></a>
+<span class="sourceLineNo">699</span> // Max #threads is the smaller of the number of storefiles or the default max determined above.<a name="line.699"></a>
+<span class="sourceLineNo">700</span> int maxThreads = Math.min(<a name="line.700"></a>
+<span class="sourceLineNo">701</span> conf.getInt(HConstants.REGION_SPLIT_THREADS_MAX,<a name="line.701"></a>
+<span class="sourceLineNo">702</span> conf.getInt(HStore.BLOCKING_STOREFILES_KEY, HStore.DEFAULT_BLOCKING_STOREFILE_COUNT)),<a name="line.702"></a>
+<span class="sourceLineNo">703</span> nbFiles);<a name="line.703"></a>
+<span class="sourceLineNo">704</span> LOG.info("pid=" + getProcId() + " splitting " + nbFiles + " storefiles, region=" +<a name="line.704"></a>
+<span class="sourceLineNo">705</span> getParentRegion().getShortNameToLog() + ", threads=" + maxThreads);<a name="line.705"></a>
+<span class="sourceLineNo">706</span> final ExecutorService threadPool = Executors.newFixedThreadPool(maxThreads,<a name="line.706"></a>
+<span class="sourceLineNo">707</span> new ThreadFactoryBuilder().setNameFormat("StoreFileSplitter-pool-%d").setDaemon(true)<a name="line.707"></a>
+<span class="sourceLineNo">708</span> .setUncaughtExceptionHandler(Threads.LOGGING_EXCEPTION_HANDLER).build());<a name="line.708"></a>
+<span class="sourceLineNo">709</span> final List<Future<Pair<Path, Path>>> futures = new ArrayList<Future<Pair<Path, Path>>>(nbFiles);<a name="line.709"></a>
+<span class="sourceLineNo">710</span><a name="line.710"></a>
+<span class="sourceLineNo">711</span> // Split each store file.<a name="line.711"></a>
+<span class="sourceLineNo">712</span> for (Map.Entry<String, Collection<StoreFileInfo>> e : files.entrySet()) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span> byte[] familyName = Bytes.toBytes(e.getKey());<a name="line.713"></a>
+<span class="sourceLineNo">714</span> final ColumnFamilyDescriptor hcd = htd.getColumnFamily(familyName);<a name="line.714"></a>
+<span class="sourceLineNo">715</span> final Collection<StoreFileInfo> storeFiles = e.getValue();<a name="line.715"></a>
+<span class="sourceLineNo">716</span> if (storeFiles != null && storeFiles.size() > 0) {<a name="line.716"></a>
+<span class="sourceLineNo">717</span> final Configuration storeConfiguration =<a name="line.717"></a>
+<span class="sourceLineNo">718</span> StoreUtils.createStoreConfiguration(env.getMasterConfiguration(), htd, hcd);<a name="line.718"></a>
+<span class="sourceLineNo">719</span> for (StoreFileInfo storeFileInfo : storeFiles) {<a name="line.719"></a>
+<span class="sourceLineNo">720</span> // As this procedure is running on master, use CacheConfig.DISABLED means<a name="line.720"></a>
+<span class="sourceLineNo">721</span> // don't cache any block.<a name="line.721"></a>
+<span class="sourceLineNo">722</span> // We also need to pass through a suitable CompoundConfiguration as if this<a name="line.722"></a>
+<span class="sourceLineNo">723</span> // is running in a regionserver's Store context, or we might not be able<a name="line.723"></a>
+<span class="sourceLineNo">724</span> // to read the hfiles.<a name="line.724"></a>
+<span class="sourceLineNo">725</span> storeFileInfo.setConf(storeConfiguration);<a name="line.725"></a>
+<span class="sourceLineNo">726</span> StoreFileSplitter sfs = new StoreFileSplitter(regionFs, familyName,<a name="line.726"></a>
+<span class="sourceLineNo">727</span> new HStoreFile(storeFileInfo, hcd.getBloomFilterType(), CacheConfig.DISABLED));<a name="line.727"></a>
+<span class="sourceLineNo">728</span> futures.add(threadPool.submit(sfs));<a name="line.728"></a>
+<span class="sourceLineNo">729</span> }<a name="line.729"></a>
+<span class="sourceLineNo">730</span> }<a name="line.730"></a>
+<span class="sourceLineNo">731</span> }<a name="line.731"></a>
+<span class="sourceLineNo">732</span> // Shutdown the pool<a name="line.732"></a>
+<span class="sourceLineNo">733</span> threadPool.shutdown();<a name="line.733"></a>
+<span class="sourceLineNo">734</span><a name="line.734"></a>
+<span class="sourceLineNo">735</span> // Wait for all the tasks to finish.<a name="line.735"></a>
+<span class="sourceLineNo">736</span> // When splits ran on the RegionServer, how-long-to-wait-configuration was named<a name="line.736"></a>
+<span class="sourceLineNo">737</span> // hbase.regionserver.fileSplitTimeout. If set, use its value.<a name="line.737"></a>
+<span class="sourceLineNo">738</span> long fileSplitTimeout = conf.getLong("hbase.master.fileSplitTimeout",<a name="line.738"></a>
+<span class="sourceLineNo">739</span> conf.getLong("hbase.regionserver.fileSplitTimeout", 600000));<a name="line.739"></a>
+<span class="sourceLineNo">740</span> try {<a name="line.740"></a>
+<span class="sourceLineNo">741</span> boolean stillRunning = !threadPool.awaitTermination(fileSplitTimeout, TimeUnit.MILLISECONDS);<a name="line.741"></a>
+<span class="sourceLineNo">742</span> if (stillRunning) {<a name="line.742"></a>
+<span class="sourceLineNo">743</span> threadPool.shutdownNow();<a name="line.743"></a>
+<span class="sourceLineNo">744</span> // wait for the thread to shutdown completely.<a name="line.744"></a>
+<span class="sourceLineNo">745</span> while (!threadPool.isTerminated()) {<a name="line.745"></a>
+<span class="sourceLineNo">746</span> Thread.sleep(50);<a name="line.746"></a>
+<span class="sourceLineNo">747</span> }<a name="line.747"></a>
+<span class="sourceLineNo">748</span> throw new IOException(<a name="line.748"></a>
+<span class="sourceLineNo">749</span> "Took too long to split the" + " files and create the references, aborting split");<a name="line.749"></a>
+<span class="sourceLineNo">750</span> }<a name="line.750"></a>
+<span class="sourceLineNo">751</span> } catch (InterruptedException e) {<a name="line.751"></a>
+<span class="sourceLineNo">752</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.752"></a>
+<span class="sourceLineNo">753</span> }<a name="line.753"></a>
+<span class="sourceLineNo">754</span><a name="line.754"></a>
+<span class="sourceLineNo">755</span> int daughterA = 0;<a name="line.755"></a>
+<span class="sourceLineNo">756</span> int daughterB = 0;<a name="line.756"></a>
+<span class="sourceLineNo">757</span> // Look for any exception<a name="line.757"></a>
+<span class="sourceLineNo">758</span> for (Future<Pair<Path, Path>> future : futures) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span> try {<a name="line.759"></a>
+<span class="sourceLineNo">760</span> Pair<Path, Path> p = future.get();<a name="line.760"></a>
+<span class="sourceLineNo">761</span> daughterA += p.getFirst() != null ? 1 : 0;<a name="line.761"></a>
+<span class="sourceLineNo">762</span> daughterB += p.getSecond() != null ? 1 : 0;<a name="line.762"></a>
+<span class="sourceLineNo">763</span> } catch (InterruptedException e) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.764"></a>
+<span class="sourceLineNo">765</span> } catch (ExecutionException e) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span> throw new IOException(e);<a name="line.766"></a>
+<span class="sourceLineNo">767</span> }<a name="line.767"></a>
+<span class="sourceLineNo">768</span> }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span> if (LOG.isDebugEnabled()) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span> LOG.debug("pid=" + getProcId() + " split storefiles for region " +<a name="line.771"></a>
+<span class="sourceLineNo">772</span> getParentRegion().getShortNameToLog() + " Daughter A: " + daughterA +<a name="line.772"></a>
+<span class="sourceLineNo">773</span> " storefiles, Daughter B: " + daughterB + " storefiles.");<a name="line.773"></a>
+<span class="sourceLineNo">774</span> }<a name="line.774"></a>
+<span class="sourceLineNo">775</span> return new Pair<Integer, Integer>(daughterA, daughterB);<a name="line.775"></a>
+<span class="sourceLineNo">776</span> }<a name="line.776"></a>
+<span class="sourceLineNo">777</span><a name="line.777"></a>
+<span class="sourceLineNo">778</span> private void assertSplitResultFilesCount(final FileSystem fs,<a name="line.778"></a>
+<span class="sourceLineNo">779</span> final int expectedSplitResultFileCount, Path dir)<a name="line.779"></a>
+<span class="sourceLineNo">780</span> throws IOException {<a name="line.780"></a>
+<span class="sourceLineNo">781</span> if (expectedSplitResultFileCount != 0) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span> int resultFileCount = FSUtils.getRegionReferenceAndLinkFileCount(fs, dir);<a name="line.782"></a>
+<span class="sourceLineNo">783</span> if (expectedSplitResultFileCount != resultFileCount) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span> throw new IOException("Failing split. Didn't have expected reference and HFileLink files"<a name="line.784"></a>
+<span class="sourceLineNo">785</span> + ", expected=" + expectedSplitResultFileCount + ", actual=" + resultFileCount);<a name="line.785"></a>
+<span class="sourceLineNo">786</span> }<a name="line.786"></a>
+<span class="sourceLineNo">787</span> }<a name="line.787"></a>
+<span class="sourceLineNo">788</span> }<a name="line.788"></a>
+<span class="sourceLineNo">789</span><a name="line.789"></a>
+<span class="sourceLineNo">790</span> private Pair<Path, Path> splitStoreFile(HRegionFileSystem regionFs, byte[] family, HStoreFile sf)<a name="line.790"></a>
+<span class="sourceLineNo">791</span> throws IOException {<a name="line.791"></a>
+<span class="sourceLineNo">792</span> if (LOG.isDebugEnabled()) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span> LOG.debug("pid=" + getProcId() + " splitting started for store file: " +<a name="line.793"></a>
+<span class="sourceLineNo">794</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.794"></a>
+<span class="sourceLineNo">795</span> }<a name="line.795"></a>
+<span class="sourceLineNo">796</span><a name="line.796"></a>
+<span class="sourceLineNo">797</span> final byte[] splitRow = getSplitRow();<a name="line.797"></a>
+<span class="sourceLineNo">798</span> final String familyName = Bytes.toString(family);<a name="line.798"></a>
+<span class="sourceLineNo">799</span> final Path path_first = regionFs.splitStoreFile(this.daughterOneRI, familyName, sf, splitRow,<a name="line.799"></a>
+<span class="sourceLineNo">800</span> false, splitPolicy);<a name="line.800"></a>
+<span class="sourceLineNo">801</span> final Path path_second = regionFs.splitStoreFile(this.daughterTwoRI, familyName, sf, splitRow,<a name="line.801"></a>
+<span class="sourceLineNo">802</span> true, splitPolicy);<a name="line.802"></a>
+<span class="sourceLineNo">803</span> if (LOG.isDebugEnabled()) {<a name="line.803"></a>
+<span class="sourceLineNo">804</span> LOG.debug("pid=" + getProcId() + " splitting complete for store file: " +<a name="line.804"></a>
+<span class="sourceLineNo">805</span> sf.getPath() + " for region: " + getParentRegion().getShortNameToLog());<a name="line.805"></a>
+<span class="sourceLineNo">806</span> }<a name="line.806"></a>
+<span class="sourceLineNo">807</span> return new Pair<Path,Path>(path_first, path_second);<a name="line.807"></a>
+<span class="sourceLineNo">808</span> }<a name="line.808"></a>
+<span class="sourceLineNo">809</span><a name="line.809"></a>
+<span class="sourceLineNo">810</span> /**<a name="line.810"></a>
+<span class="sourceLineNo">811</span> * Utility class used to do the file splitting / reference writing<a name="line.811"></a>
+<span class="sourceLineNo">812</span> * in parallel instead of sequentially.<a name="line.812"></a>
+<span class="sourceLineNo">813</span> */<a name="line.813"></a>
+<span class="sourceLineNo">814</span> private class StoreFileSplitter implements Callable<Pair<Path,Path>> {<a name="line.814"></a>
+<span class="sourceLineNo">815</span> private final HRegionFileSystem regionFs;<a name="line.815"></a>
+<span class="sourceLineNo">816</span> private final byte[] family;<a name="line.816"></a>
+<span class="sourceLineNo">817</span> private final HStoreFile sf;<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span> /**<a name="line.819"></a>
+<span class="sourceLineNo">820</span> * Constructor that takes what it needs to split<a name="line.820"></a>
+<span class="sourceLineNo">821</span> * @param regionFs the file system<a name="line.821"></a>
+<span class="sourceLineNo">822</span> * @param family Family that contains the store file<a name="line.822"></a>
+<span class="sourceLineNo">823</span> * @param sf which file<a name="line.823"></a>
+<span class="sourceLineNo">824</span> */<a name="line.824"></a>
+<span class="sourceLineNo">825</span> public StoreFileSplitter(HRegionFileSystem regionFs, byte[] family, HStoreFile sf) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span> this.regionFs = regionFs;<a name="line.826"></a>
+<span class="sourceLineNo">827</span> this.sf = sf;<a name="line.827"></a>
+<span class="sourceLineNo">828</span> this.family = family;<a name="line.828"></a>
+<span class="sourceLineNo">829</span> }<a name="line.829"></a>
<span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span> /**<a name="line.831"></a>
-<span class="sourceLineNo">832</span> * Post split region actions before the Point-of-No-Return step<a name="line.832"></a>
-<span class="sourceLineNo">833</span> * @param env MasterProcedureEnv<a name="line.833"></a>
-<span class="sourceLineNo">834</span> **/<a name="line.834"></a>
-<span class="sourceLineNo">835</span> private void preSplitRegionBeforeMETA(final MasterProcedureEnv env)<a name="line.835"></a>
-<span class="sourceLineNo">836</span> throws IOException, InterruptedException {<a name="line.836"></a>
-<span class="sourceLineNo">837</span> final List<Mutation> metaEntries = new ArrayList<Mutation>();<a name="line.837"></a>
-<span class="sourceLineNo">838</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.838"></a>
-<span class="sourceLineNo">839</span> if (cpHost != null) {<a name="line.839"></a>
-<span class="sourceLineNo">840</span> cpHost.preSplitBeforeMETAAction(getSplitRow(), metaEntries, getUser());<a name="line.840"></a>
-<span class="sourceLineNo">841</span> try {<a name="line.841"></a>
-<span class="sourceLineNo">842</span> for (Mutation p : metaEntries) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span> RegionInfo.parseRegionName(p.getRow());<a name="line.843"></a>
-<span class="sourceLineNo">844</span> }<a name="line.844"></a>
-<span class="sourceLineNo">845</span> } catch (IOException e) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span> LOG.error("pid=" + getProcId() + " row key of mutation from coprocessor not parsable as "<a name="line.846"></a>
-<span class="sourceLineNo">847</span> + "region name."<a name="line.847"></a>
-<span class="sourceLineNo">848</span> + "Mutations from coprocessor should only for hbase:meta table.");<a name="line.848"></a>
-<span class="sourceLineNo">849</span> throw e;<a name="line.849"></a>
-<span class="sourceLineNo">850</span> }<a name="line.850"></a>
-<span class="sourceLineNo">851</span> }<a name="line.851"></a>
-<span class="sourceLineNo">852</span> }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span> /**<a name="line.854"></a>
-<span class="sourceLineNo">855</span> * Add daughter regions to META<a name="line.855"></a>
-<span class="sourceLineNo">856</span> * @param env MasterProcedureEnv<a name="line.856"></a>
-<span class="sourceLineNo">857</span> */<a name="line.857"></a>
-<span class="sourceLineNo">858</span> private void updateMeta(final MasterProcedureEnv env) throws IOException {<a name="line.858"></a>
-<span class="sourceLineNo">859</span> env.getAssignmentManager().markRegionAsSplit(getParentRegion(), getParentRegionServerName(env),<a name="line.859"></a>
-<span class="sourceLineNo">860</span> daughterOneRI, daughterTwoRI);<a name="line.860"></a>
-<span class="sourceLineNo">861</span> }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span> /**<a name="line.863"></a>
-<span class="sourceLineNo">864</span> * Pre split region actions after the Point-of-No-Return step<a name="line.864"></a>
-<span class="sourceLineNo">865</span> * @param env MasterProcedureEnv<a name="line.865"></a>
-<span class="sourceLineNo">866</span> **/<a name="line.866"></a>
-<span class="sourceLineNo">867</span> private void preSplitRegionAfterMETA(final MasterProcedureEnv env)<a name="line.867"></a>
-<span class="sourceLineNo">868</span> throws IOException, InterruptedException {<a name="line.868"></a>
-<span class="sourceLineNo">869</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.869"></a>
-<span class="sourceLineNo">870</span> if (cpHost != null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span> cpHost.preSplitAfterMETAAction(getUser());<a name="line.871"></a>
-<span class="sourceLineNo">872</span> }<a name="line.872"></a>
-<span class="sourceLineNo">873</span> }<a name="line.873"></a>
-<span class="sourceLineNo">874</span><a name="line.874"></a>
-<span class="sourceLineNo">875</span> /**<a name="line.875"></a>
-<span class="sourceLineNo">876</span> * Post split region actions<a name="line.876"></a>
-<span class="sourceLineNo">877</span> * @param env MasterProcedureEnv<a name="line.877"></a>
-<span class="sourceLineNo">878</span> **/<a name="line.878"></a>
-<span class="sourceLineNo">879</span> private void postSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.879"></a>
-<span class="sourceLineNo">880</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.880"></a>
-<span class="sourceLineNo">881</span> if (cpHost != null) {<a name="line.881"></a>
-<span class="sourceLineNo">882</span> cpHost.postCompletedSplitRegionAction(daughterOneRI, daughterTwoRI, getUser());<a name="line.882"></a>
-<span class="sourceLineNo">883</span> }<a name="line.883"></a>
-<span class="sourceLineNo">884</span> }<a name="line.884"></a>
-<span class="sourceLineNo">885</span><a name="line.885"></a>
-<span class="sourceLineNo">886</span> private ServerName getParentRegionServerName(final MasterProcedureEnv env) {<a name="line.886"></a>
-<span class="sourceLineNo">887</span> return env.getMasterServices().getAssignmentManager().getRegionStates()<a name="line.887"></a>
-<span class="sourceLineNo">888</span> .getRegionServerOfRegion(getParentRegion());<a name="line.888"></a>
-<span class="sourceLineNo">889</span> }<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span> private TransitRegionStateProcedure[] createUnassignProcedures(MasterProcedureEnv env)<a name="line.891"></a>
-<span class="sourceLineNo">892</span> throws IOException {<a name="line.892"></a>
-<span class="sourceLineNo">893</span> return AssignmentManagerUtil.createUnassignProceduresForSplitOrMerge(env,<a name="line.893"></a>
-<span class="sourceLineNo">894</span> Stream.of(getParentRegion()), getRegionReplication(env));<a name="line.894"></a>
+<span class="sourceLineNo">831</span> @Override<a name="line.831"></a>
+<span class="sourceLineNo">832</span> public Pair<Path,Path> call() throws IOException {<a name="line.832"></a>
+<span class="sourceLineNo">833</span> return splitStoreFile(regionFs, family, sf);<a name="line.833"></a>
+<span class="sourceLineNo">834</span> }<a name="line.834"></a>
+<span class="sourceLineNo">835</span> }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span> /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span> * Post split region actions before the Point-of-No-Return step<a name="line.838"></a>
+<span class="sourceLineNo">839</span> * @param env MasterProcedureEnv<a name="line.839"></a>
+<span class="sourceLineNo">840</span> **/<a name="line.840"></a>
+<span class="sourceLineNo">841</span> private void preSplitRegionBeforeMETA(final MasterProcedureEnv env)<a name="line.841"></a>
+<span class="sourceLineNo">842</span> throws IOException, InterruptedException {<a name="line.842"></a>
+<span class="sourceLineNo">843</span> final List<Mutation> metaEntries = new ArrayList<Mutation>();<a name="line.843"></a>
+<span class="sourceLineNo">844</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.844"></a>
+<span class="sourceLineNo">845</span> if (cpHost != null) {<a name="line.845"></a>
+<span class="sourceLineNo">846</span> cpHost.preSplitBeforeMETAAction(getSplitRow(), metaEntries, getUser());<a name="line.846"></a>
+<span class="sourceLineNo">847</span> try {<a name="line.847"></a>
+<span class="sourceLineNo">848</span> for (Mutation p : metaEntries) {<a name="line.848"></a>
+<span class="sourceLineNo">849</span> RegionInfo.parseRegionName(p.getRow());<a name="line.849"></a>
+<span class="sourceLineNo">850</span> }<a name="line.850"></a>
+<span class="sourceLineNo">851</span> } catch (IOException e) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span> LOG.error("pid=" + getProcId() + " row key of mutation from coprocessor not parsable as "<a name="line.852"></a>
+<span class="sourceLineNo">853</span> + "region name."<a name="line.853"></a>
+<span class="sourceLineNo">854</span> + "Mutations from coprocessor should only for hbase:meta table.");<a name="line.854"></a>
+<span class="sourceLineNo">855</span> throw e;<a name="line.855"></a>
+<span class="sourceLineNo">856</span> }<a name="line.856"></a>
+<span class="sourceLineNo">857</span> }<a name="line.857"></a>
+<span class="sourceLineNo">858</span> }<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span> /**<a name="line.860"></a>
+<span class="sourceLineNo">861</span> * Add daughter regions to META<a name="line.861"></a>
+<span class="sourceLineNo">862</span> * @param env MasterProcedureEnv<a name="line.862"></a>
+<span class="sourceLineNo">863</span> */<a name="line.863"></a>
+<span class="sourceLineNo">864</span> private void updateMeta(final MasterProcedureEnv env) throws IOException {<a name="line.864"></a>
+<span class="sourceLineNo">865</span> env.getAssignmentManager().markRegionAsSplit(getParentRegion(), getParentRegionServerName(env),<a name="line.865"></a>
+<span class="sourceLineNo">866</span> daughterOneRI, daughterTwoRI);<a name="line.866"></a>
+<span class="sourceLineNo">867</span> }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span> /**<a name="line.869"></a>
+<span class="sourceLineNo">870</span> * Pre split region actions after the Point-of-No-Return step<a name="line.870"></a>
+<span class="sourceLineNo">871</span> * @param env MasterProcedureEnv<a name="line.871"></a>
+<span class="sourceLineNo">872</span> **/<a name="line.872"></a>
+<span class="sourceLineNo">873</span> private void preSplitRegionAfterMETA(final MasterProcedureEnv env)<a name="line.873"></a>
+<span class="sourceLineNo">874</span> throws IOException, InterruptedException {<a name="line.874"></a>
+<span class="sourceLineNo">875</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.875"></a>
+<span class="sourceLineNo">876</span> if (cpHost != null) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span> cpHost.preSplitAfterMETAAction(getUser());<a name="line.877"></a>
+<span class="sourceLineNo">878</span> }<a name="line.878"></a>
+<span class="sourceLineNo">879</span> }<a name="line.879"></a>
+<span class="sourceLineNo">880</span><a name="line.880"></a>
+<span class="sourceLineNo">881</span> /**<a name="line.881"></a>
+<span class="sourceLineNo">882</span> * Post split region actions<a name="line.882"></a>
+<span class="sourceLineNo">883</span> * @param env MasterProcedureEnv<a name="line.883"></a>
+<span class="sourceLineNo">884</span> **/<a name="line.884"></a>
+<span class="sourceLineNo">885</span> private void postSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.885"></a>
+<span class="sourceLineNo">886</span> final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.886"></a>
+<span class="sourceLineNo">887</span> if (cpHost != null) {<a name="line.887"></a>
+<span class="sourceLineNo">888</span> cpHost.postCompletedSplitRegionAction(daughterOneRI, daughterTwoRI, getUser());<a name="line.888"></a>
+<span class="sourceLineNo">889</span> }<a name="line.889"></a>
+<span class="sourceLineNo">890</span> }<a name="line.890"></a>
+<span class="sourceLineNo">891</span><a name="line.891"></a>
+<span class="sourceLineNo">892</span> private ServerName getParentRegionServerName(final MasterProcedureEnv env) {<a name="line.892"></a>
+<span class="sourceLineNo">893</span> return env.getMasterServices().getAssignmentManager().getRegionStates()<a name="line.893"></a>
+<span class="sourceLineNo">894</span> .getRegionServerOfRegion(getParentRegion());<a name="line.894"></a>
<span class="sourceLineNo">895</span> }<a name="line.895"></a>
<span class="sourceLineNo">896</span><a name="line.896"></a>
-<span class="sourceLineNo">897</span> private TransitRegionStateProcedure[] createAssignProcedures(MasterProcedureEnv env)<a name="line.897"></a>
+<span class="sourceLineNo">897</span> private TransitRegionStateProcedure[] createUnassignProcedures(MasterProcedureEnv env)<a name="line.897"></a>
<span class="sourceLineNo">898</span> throws IOException {<a name="line.898"></a>
-<span class="sourceLineNo">899</span> List<RegionInfo> hris = new ArrayList<RegionInfo>(2);<a name="line.899"></a>
-<span class="sourceLineNo">900</span> hris.add(daughterOneRI);<a name="line.900"></a>
-<span class="sourceLineNo">901</span> hris.add(daughterTwoRI);<a name="line.901"></a>
-<span class="sourceLineNo">902</span> return AssignmentManagerUtil.createAssignProceduresForSplitDaughters(env, hris,<a name="line.902"></a>
-<span class="sourceLineNo">903</span> getRegionReplication(env), getParentRegionServerName(env));<a name="line.903"></a>
-<span class="sourceLineNo">904</span> }<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span> private int getRegionReplication(final MasterProcedureEnv env) throws IOException {<a name="line.906"></a>
-<span class="sourceLineNo">907</span> final TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.907"></a>
-<span class="sourceLineNo">908</span> return htd.getRegionReplication();<a name="line.908"></a>
-<span class="sourceLineNo">909</span> }<a name="line.909"></a>
-<span class="sourceLineNo">910</span><a name="line.910"></a>
-<span class="sourceLineNo">911</span> private void writeMaxSequenceIdFile(MasterProcedureEnv env) throws IOException {<a name="line.911"></a>
-<span class="sourceLineNo">912</span> MasterFileSystem fs = env.getMasterFileSystem();<a name="line.912"></a>
-<span class="sourceLineNo">913</span> long maxSequenceId = WALSplitUtil.getMaxRegionSequenceId(env.getMasterConfiguration(),<a name="line.913"></a>
-<span class="sourceLineNo">914</span> getParentRegion(), fs::getFileSystem, fs::getWALFileSystem);<a name="line.914"></a>
-<span class="sourceLineNo">915</span> if (maxSequenceId > 0) {<a name="line.915"></a>
-<span class="sourceLineNo">916</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.916"></a>
-<span class="sourceLineNo">917</span> getWALRegionDir(env, daughterOneRI), maxSequenceId);<a name="line.917"></a>
-<span class="sourceLineNo">918</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.918"></a>
-<span class="sourceLineNo">919</span> getWALRegionDir(env, daughterTwoRI), maxSequenceId);<a name="line.919"></a>
-<span class="sourceLineNo">920</span> }<a name="line.920"></a>
-<span class="sourceLineNo">921</span> }<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span> @Override<a name="line.923"></a>
-<span class="sourceLineNo">924</span> protected boolean abort(MasterProcedureEnv env) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span> // Abort means rollback. We can't rollback all steps. HBASE-18018 added abort to all<a name="line.925"></a>
-<span class="sourceLineNo">926</span> // Procedures. Here is a Procedure that has a PONR and cannot be aborted wants it enters this<a name="line.926"></a>
-<span class="sourceLineNo">927</span> // range of steps; what do we do for these should an operator want to cancel them? HBASE-20022.<a name="line.927"></a>
-<span class="sourceLineNo">928</span> return isRollbackSupported(getCurrentState())? super.abort(env): false;<a name="line.928"></a>
-<span class="sourceLineNo">929</span> }<a name="line.929"></a>
-<span class="sourceLineNo">930</span>}<a name="line.930"></a>
+<span class="sourceLineNo">899</span> return AssignmentManagerUtil.createUnassignProceduresForSplitOrMerge(env,<a name="line.899"></a>
+<span class="sourceLineNo">900</span> Stream.of(getParentRegion()), getRegionReplication(env));<a name="line.900"></a>
+<span class="sourceLineNo">901</span> }<a name="line.901"></a>
+<span class="sourceLineNo">902</span><a name="line.902"></a>
+<span class="sourceLineNo">903</span> private TransitRegionStateProcedure[] createAssignProcedures(MasterProcedureEnv env)<a name="line.903"></a>
+<span class="sourceLineNo">904</span> throws IOException {<a name="line.904"></a>
+<span class="sourceLineNo">905</span> List<RegionInfo> hris = new ArrayList<RegionInfo>(2);<a name="line.905"></a>
+<span class="sourceLineNo">906</span> hris.add(daughterOneRI);<a name="line.906"></a>
+<span class="sourceLineNo">907</span> hris.add(daughterTwoRI);<a name="line.907"></a>
+<span class="sourceLineNo">908</span> return AssignmentManagerUtil.createAssignProceduresForSplitDaughters(env, hris,<a name="line.908"></a>
+<span class="sourceLineNo">909</span> getRegionReplication(env), getParentRegionServerName(env));<a name="line.909"></a>
+<span class="sourceLineNo">910</span> }<a name="line.910"></a>
+<span class="sourceLineNo">911</span><a name="line.911"></a>
+<span class="sourceLineNo">912</span> private int getRegionReplication(final MasterProcedureEnv env) throws IOException {<a name="line.912"></a>
+<span class="sourceLineNo">913</span> final TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.913"></a>
+<span class="sourceLineNo">914</span> return htd.getRegionReplication();<a name="line.914"></a>
+<span class="sourceLineNo">915</span> }<a name="line.915"></a>
+<span class="sourceLineNo">916</span><a name="line.916"></a>
+<span class="sourceLineNo">917</span> private void writeMaxSequenceIdFile(MasterProcedureEnv env) throws IOException {<a name="line.917"></a>
+<span class="sourceLineNo">918</span> MasterFileSystem fs = env.getMasterFileSystem();<a name="line.918"></a>
+<span class="sourceLineNo">919</span> long maxSequenceId = WALSplitUtil.getMaxRegionSequenceId(env.getMasterConfiguration(),<a name="line.919"></a>
+<span class="sourceLineNo">920</span> getParentRegion(), fs::getFileSystem, fs::getWALFileSystem);<a name="line.920"></a>
+<span class="sourceLineNo">921</span> if (maxSequenceId > 0) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.922"></a>
+<span class="sourceLineNo">923</span> getWALRegionDir(env, daughterOneRI), maxSequenceId);<a name="line.923"></a>
+<span class="sourceLineNo">924</span> WALSplitUtil.writeRegionSequenceIdFile(fs.getWALFileSystem(),<a name="line.924"></a>
+<span class="sourceLineNo">925</span> getWALRegionDir(env, daughterTwoRI), maxSequenceId);<a name="line.925"></a>
+<span class="sourceLineNo">926</span> }<a name="line.926"></a>
+<span class="sourceLineNo">927</span> }<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span> @Override<a name="line.929"></a>
+<span class="sourceLineNo">930</span> protected boolean abort(MasterProcedureEnv env) {<a name="line.930"></a>
+<span class="sourceLineNo">931</span> // Abort means rollback. We can't rollback all steps. HBASE-18018 added abort to all<a name="line.931"></a>
+<span class="sourceLineNo">932</span> // Procedures. Here is a Procedure that has a PONR and cannot be aborted wants it enters this<a name="line.932"></a>
+<span class="sourceLineNo">933</span> // range of steps; what do we do for these should an operator want to cancel them? HBASE-20022.<a name="line.933"></a>
+<span class="sourceLineNo">934</span> return isRollbackSupported(getCurrentState())? super.abort(env): false;<a name="line.934"></a>
+<span class="sourceLineNo">935</span> }<a name="line.935"></a>
+<span class="sourceLineNo">936</span>}<a name="line.936"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index fda150e..e5a9aa7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -1076,8 +1076,8 @@
<span class="sourceLineNo">1068</span> }<a name="line.1068"></a>
<span class="sourceLineNo">1069</span> }<a name="line.1069"></a>
<span class="sourceLineNo">1070</span><a name="line.1070"></a>
-<span class="sourceLineNo">1071</span> LOG.info("Opened {}; next sequenceid={}; {}, {}",<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span> this.getRegionInfo().getShortNameToLog(), nextSeqId, this.splitPolicy, this.flushPolicy);<a name="line.1072"></a>
+<span class="sourceLineNo">1071</span> LOG.info("Opened {}; next sequenceid={}; {}, {}", this.getRegionInfo().getShortNameToLog(),<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span> nextSeqId, this.splitPolicy, this.flushPolicy);<a name="line.1072"></a>
<span class="sourceLineNo">1073</span><a name="line.1073"></a>
<span class="sourceLineNo">1074</span> // A region can be reopened if failed a split; reset flags<a name="line.1074"></a>
<span class="sourceLineNo">1075</span> this.closing.set(false);<a name="line.1075"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index fda150e..e5a9aa7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -1076,8 +1076,8 @@
<span class="sourceLineNo">1068</span> }<a name="line.1068"></a>
<span class="sourceLineNo">1069</span> }<a name="line.1069"></a>
<span class="sourceLineNo">1070</span><a name="line.1070"></a>
-<span class="sourceLineNo">1071</span> LOG.info("Opened {}; next sequenceid={}; {}, {}",<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span> this.getRegionInfo().getShortNameToLog(), nextSeqId, this.splitPolicy, this.flushPolicy);<a name="line.1072"></a>
+<span class="sourceLineNo">1071</span> LOG.info("Opened {}; next sequenceid={}; {}, {}", this.getRegionInfo().getShortNameToLog(),<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span> nextSeqId, this.splitPolicy, this.flushPolicy);<a name="line.1072"></a>
<span class="sourceLineNo">1073</span><a name="line.1073"></a>
<span class="sourceLineNo">1074</span> // A region can be reopened if failed a split; reset flags<a name="line.1074"></a>
<span class="sourceLineNo">1075</span> this.closing.set(false);<a name="line.1075"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index fda150e..e5a9aa7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
... 37329 lines suppressed ...