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 2025/08/05 14:51:37 UTC
(hbase-site) branch asf-site updated: Published site at 55cf6e22d6cb328f43f1ee9a7a1d41fa0d26ef1f.
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 c0484e2f5cf Published site at 55cf6e22d6cb328f43f1ee9a7a1d41fa0d26ef1f.
c0484e2f5cf is described below
commit c0484e2f5cf92dcbd1f811ef5954150d992ec845
Author: jenkins <bu...@apache.org>
AuthorDate: Tue Aug 5 14:50:56 2025 +0000
Published site at 55cf6e22d6cb328f43f1ee9a7a1d41fa0d26ef1f.
---
acid-semantics.html | 2 +-
apache_hbase_reference_guide.pdf | 4 +-
apidocs/index-all.html | 6 +
apidocs/member-search-index.js | 2 +-
.../TableOutputFormat.TableRecordWriter.html | 502 +-
.../hadoop/hbase/mapreduce/TableOutputFormat.html | 502 +-
book.html | 2 +-
bulk-loads.html | 2 +-
checkstyle-aggregate.html | 6 +-
checkstyle.rss | 30 +-
coc.html | 2 +-
dependencies.html | 2 +-
dependency-convergence.html | 2 +-
dependency-info.html | 2 +-
dependency-management.html | 2 +-
devapidocs/constant-values.html | 57 +-
devapidocs/index-all.html | 8 +-
devapidocs/member-search-index.js | 2 +-
.../backup/impl/IncrementalTableBackupClient.html | 50 +-
.../hadoop/hbase/backup/util/RestoreTool.html | 50 +-
.../apache/hadoop/hbase/class-use/TableName.html | 2 +-
.../TableOutputFormat.TableRecordWriter.html | 14 +-
.../hadoop/hbase/mapreduce/TableOutputFormat.html | 108 +-
.../hbase/master/assignment/AssignmentManager.html | 4 +-
.../class-use/TransitRegionStateProcedure.html | 2 +-
.../hbase/master/procedure/SnapshotProcedure.html | 96 +-
.../hbase/master/snapshot/TakeSnapshotHandler.html | 76 +-
.../backup/impl/IncrementalTableBackupClient.html | 1022 +--
.../hadoop/hbase/backup/util/RestoreTool.html | 1000 +--
.../TableOutputFormat.TableRecordWriter.html | 502 +-
.../hadoop/hbase/mapreduce/TableOutputFormat.html | 502 +-
...ignmentManager.DeadServerMetricRegionChore.html | 2 +-
.../AssignmentManager.RegionInTransitionChore.html | 2 +-
.../AssignmentManager.RegionInTransitionStat.html | 2 +-
...AssignmentManager.RegionMetaLoadingVisitor.html | 2 +-
.../hbase/master/assignment/AssignmentManager.html | 2 +-
.../hbase/master/procedure/SnapshotProcedure.html | 774 +--
.../hbase/master/snapshot/TakeSnapshotHandler.html | 548 +-
downloads.html | 2 +-
export_control.html | 2 +-
index.html | 2 +-
issue-management.html | 2 +-
licenses.html | 2 +-
mailing-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 +-
pseudo-distributed.html | 2 +-
replication.html | 2 +-
resources.html | 2 +-
scm.html | 2 +-
sponsors.html | 2 +-
summary.html | 2 +-
supportingprojects.html | 2 +-
team.html | 2 +-
testapidocs/allclasses-index.html | 4678 ++++++-------
testapidocs/index-all.html | 32 +
testapidocs/member-search-index.js | 2 +-
.../hbase/backup/class-use/TestBackupBase.html | 53 +-
.../backup/class-use/TestBackupRestoreExpiry.html | 62 +
.../hadoop/hbase/backup/package-summary.html | 70 +-
.../apache/hadoop/hbase/backup/package-tree.html | 1 +
.../hadoop/hbase/class-use/HBaseClassTestRule.html | 55 +-
.../TestTableOutputFormat.DummyCommitter.html | 62 +
.../hadoop/hbase/mapreduce/package-summary.html | 38 +-
.../hadoop/hbase/mapreduce/package-tree.html | 5 +
testapidocs/overview-tree.html | 6 +
.../hbase/backup/TestBackupRestoreExpiry.html | 310 +
.../client/TestSnapshotWithTTLFromClient.html | 8 +-
.../TestTableOutputFormat.DummyCommitter.html | 249 +
.../hbase/mapreduce/TestTableOutputFormat.html | 231 +-
testapidocs/type-search-index.js | 2 +-
testdevapidocs/allclasses-index.html | 7226 ++++++++++----------
testdevapidocs/index-all.html | 46 +
testdevapidocs/member-search-index.js | 2 +-
.../apache/hadoop/hbase/backup/TestBackupBase.html | 2 +-
.../TestBackupRestoreExpiry.html} | 180 +-
.../hbase/backup/class-use/TestBackupBase.html | 53 +-
.../backup/class-use/TestBackupRestoreExpiry.html | 62 +
.../hadoop/hbase/backup/package-summary.html | 80 +-
.../apache/hadoop/hbase/backup/package-tree.html | 1 +
.../hadoop/hbase/class-use/HBaseClassTestRule.html | 88 +-
.../TestTableOutputFormat.DummyCommitter.html | 176 +-
.../hbase/mapreduce/TestTableOutputFormat.html | 67 +-
.../TestTableOutputFormat.DummyCommitter.html | 62 +
.../hadoop/hbase/mapreduce/package-summary.html | 40 +-
.../hadoop/hbase/mapreduce/package-tree.html | 5 +
.../master/procedure/TestSnapshotProcedure.html | 2 +-
.../TestSnapshotProcedureEarlyExpiration.html} | 120 +-
.../procedure/class-use/TestSnapshotProcedure.html | 11 +-
.../TestSnapshotProcedureEarlyExpiration.html | 62 +
.../hbase/master/procedure/package-summary.html | 54 +-
.../hbase/master/procedure/package-tree.html | 1 +
.../master/snapshot/TestTakeSnapshotHandler.html | 34 +-
testdevapidocs/overview-tree.html | 7 +
.../hbase/backup/TestBackupRestoreExpiry.html | 310 +
.../client/TestSnapshotWithTTLFromClient.html | 8 +-
.../TestTableOutputFormat.DummyCommitter.html | 249 +
.../hbase/mapreduce/TestTableOutputFormat.html | 231 +-
.../TestSnapshotProcedureEarlyExpiration.html | 180 +
.../master/snapshot/TestTakeSnapshotHandler.html | 161 +-
testdevapidocs/type-search-index.js | 2 +-
106 files changed, 11643 insertions(+), 9680 deletions(-)
diff --git a/acid-semantics.html b/acid-semantics.html
index b3b5ca14b38..9086b45f345 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -469,7 +469,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 dafc511f210..0077d61a122 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
/Author (Apache HBase Team)
/Creator (Asciidoctor PDF 2.0.6, based on Prawn 2.4.0)
/Producer (Apache HBase Team)
-/ModDate (D:20250801143126+00'00')
-/CreationDate (D:20250801144709+00'00')
+/ModDate (D:20250805143155+00'00')
+/CreationDate (D:20250805144732+00'00')
>>
endobj
2 0 obj
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 74ebc3fede3..d3c42d8e16a 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -51568,6 +51568,12 @@ service.</div>
<dd>
<div class="block">Optional job parameter to specify a peer cluster.</div>
</dd>
+<dt>OUTPUT_COMMITTER_CLASS - Static variable in class org.apache.hadoop.hbase.mapreduce.TableOutputFormat</dt>
+<dd>
+<div class="block">The configuration key for specifying a custom
+ <code>OutputCommitter</code> implementation to be used by
+ <code>TableOutputFormat</code>.</div>
+</dd>
<dt>OUTPUT_CONF_PREFIX - Static variable in class org.apache.hadoop.hbase.mapreduce.TableOutputFormat</dt>
<dd>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
diff --git a/apidocs/member-search-index.js b/apidocs/member-search-index.js
index 24326699100..e7f55ca0af9 100644
--- a/apidocs/member-search-index.js
+++ b/apidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
index 213251c5981..bfa12d75fa7 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
@@ -49,251 +49,273 @@
<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Durability;</span>
<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Mutation;</span>
<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.mapreduce.JobContext;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputFormat;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.RecordWriter;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.slf4j.Logger;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">047</span><span id="line-47"></span>
-<span class="source-line-no">048</span><span id="line-48">/**</span>
-<span class="source-line-no">049</span><span id="line-49"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
-<span class="source-line-no">050</span><span id="line-50"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
-<span class="source-line-no">051</span><span id="line-51"> */</span>
-<span class="source-line-no">052</span><span id="line-52">@InterfaceAudience.Public</span>
-<span class="source-line-no">053</span><span id="line-53">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57"> /** Job parameter that specifies the output table. */</span>
-<span class="source-line-no">058</span><span id="line-58"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60"> /** Property value to use write-ahead logging */</span>
-<span class="source-line-no">061</span><span id="line-61"> public static final boolean WAL_ON = true;</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63"> /** Property value to disable write-ahead logging */</span>
-<span class="source-line-no">064</span><span id="line-64"> public static final boolean WAL_OFF = false;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
-<span class="source-line-no">067</span><span id="line-67"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69"> /**</span>
-<span class="source-line-no">070</span><span id="line-70"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">071</span><span id="line-71"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">072</span><span id="line-72"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">073</span><span id="line-73"> * Class, java.net.URI)</span>
-<span class="source-line-no">074</span><span id="line-74"> */</span>
-<span class="source-line-no">075</span><span id="line-75"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> /**</span>
-<span class="source-line-no">078</span><span id="line-78"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
-<span class="source-line-no">079</span><span id="line-79"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
-<span class="source-line-no">080</span><span id="line-80"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
-<span class="source-line-no">081</span><span id="line-81"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
-<span class="source-line-no">082</span><span id="line-82"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
-<span class="source-line-no">083</span><span id="line-83"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">084</span><span id="line-84"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">085</span><span id="line-85"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">086</span><span id="line-86"> */</span>
-<span class="source-line-no">087</span><span id="line-87"> @Deprecated</span>
-<span class="source-line-no">088</span><span id="line-88"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90"> /**</span>
-<span class="source-line-no">091</span><span id="line-91"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">092</span><span id="line-92"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">093</span><span id="line-93"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">094</span><span id="line-94"> * Class, String)</span>
-<span class="source-line-no">095</span><span id="line-95"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
-<span class="source-line-no">096</span><span id="line-96"> * peer cluster instead.</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.ReflectionUtils;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.JobContext;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.OutputFormat;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.RecordWriter;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.slf4j.Logger;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">/**</span>
+<span class="source-line-no">050</span><span id="line-50"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
+<span class="source-line-no">051</span><span id="line-51"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
+<span class="source-line-no">052</span><span id="line-52"> */</span>
+<span class="source-line-no">053</span><span id="line-53">@InterfaceAudience.Public</span>
+<span class="source-line-no">054</span><span id="line-54">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58"> /** Job parameter that specifies the output table. */</span>
+<span class="source-line-no">059</span><span id="line-59"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61"> /** Property value to use write-ahead logging */</span>
+<span class="source-line-no">062</span><span id="line-62"> public static final boolean WAL_ON = true;</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64"> /** Property value to disable write-ahead logging */</span>
+<span class="source-line-no">065</span><span id="line-65"> public static final boolean WAL_OFF = false;</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
+<span class="source-line-no">068</span><span id="line-68"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70"> /**</span>
+<span class="source-line-no">071</span><span id="line-71"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">072</span><span id="line-72"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">073</span><span id="line-73"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">074</span><span id="line-74"> * Class, java.net.URI)</span>
+<span class="source-line-no">075</span><span id="line-75"> */</span>
+<span class="source-line-no">076</span><span id="line-76"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78"> /**</span>
+<span class="source-line-no">079</span><span id="line-79"> * The configuration key for specifying a custom</span>
+<span class="source-line-no">080</span><span id="line-80"> * {@link org.apache.hadoop.mapreduce.OutputCommitter} implementation to be used by</span>
+<span class="source-line-no">081</span><span id="line-81"> * {@link TableOutputFormat}. The value for this property should be the fully qualified class name</span>
+<span class="source-line-no">082</span><span id="line-82"> * of the custom committer. If this property is not set, {@link TableOutputCommitter} will be used</span>
+<span class="source-line-no">083</span><span id="line-83"> * by default.</span>
+<span class="source-line-no">084</span><span id="line-84"> */</span>
+<span class="source-line-no">085</span><span id="line-85"> public static final String OUTPUT_COMMITTER_CLASS =</span>
+<span class="source-line-no">086</span><span id="line-86"> "hbase.mapreduce.tableoutputformat.output.committer.class";</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88"> /**</span>
+<span class="source-line-no">089</span><span id="line-89"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
+<span class="source-line-no">090</span><span id="line-90"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
+<span class="source-line-no">091</span><span id="line-91"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
+<span class="source-line-no">092</span><span id="line-92"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
+<span class="source-line-no">093</span><span id="line-93"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
+<span class="source-line-no">094</span><span id="line-94"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">095</span><span id="line-95"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">096</span><span id="line-96"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
<span class="source-line-no">097</span><span id="line-97"> */</span>
<span class="source-line-no">098</span><span id="line-98"> @Deprecated</span>
-<span class="source-line-no">099</span><span id="line-99"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">099</span><span id="line-99"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
<span class="source-line-no">100</span><span id="line-100"></span>
<span class="source-line-no">101</span><span id="line-101"> /**</span>
-<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify peer cluster's ZK client port.</span>
-<span class="source-line-no">103</span><span id="line-103"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">104</span><span id="line-104"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">105</span><span id="line-105"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">106</span><span id="line-106"> */</span>
-<span class="source-line-no">107</span><span id="line-107"> @Deprecated</span>
-<span class="source-line-no">108</span><span id="line-108"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
-<span class="source-line-no">109</span><span id="line-109"></span>
-<span class="source-line-no">110</span><span id="line-110"> /**</span>
-<span class="source-line-no">111</span><span id="line-111"> * Optional specification of the rs class name of the peer cluster.</span>
-<span class="source-line-no">112</span><span id="line-112"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">113</span><span id="line-113"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">114</span><span id="line-114"> */</span>
-<span class="source-line-no">115</span><span id="line-115"> @Deprecated</span>
-<span class="source-line-no">116</span><span id="line-116"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
-<span class="source-line-no">117</span><span id="line-117"> /**</span>
-<span class="source-line-no">118</span><span id="line-118"> * Optional specification of the rs impl name of the peer cluster</span>
-<span class="source-line-no">119</span><span id="line-119"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">120</span><span id="line-120"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">121</span><span id="line-121"> */</span>
-<span class="source-line-no">122</span><span id="line-122"> @Deprecated</span>
-<span class="source-line-no">123</span><span id="line-123"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125"> /** The configuration. */</span>
-<span class="source-line-no">126</span><span id="line-126"> private Configuration conf = null;</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128"> private static Connection createConnection(Configuration conf) throws IOException {</span>
-<span class="source-line-no">129</span><span id="line-129"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
-<span class="source-line-no">130</span><span id="line-130"> if (!StringUtils.isBlank(outputCluster)) {</span>
-<span class="source-line-no">131</span><span id="line-131"> URI uri;</span>
-<span class="source-line-no">132</span><span id="line-132"> try {</span>
-<span class="source-line-no">133</span><span id="line-133"> uri = new URI(outputCluster);</span>
-<span class="source-line-no">134</span><span id="line-134"> } catch (URISyntaxException e) {</span>
-<span class="source-line-no">135</span><span id="line-135"> throw new IOException(</span>
-<span class="source-line-no">136</span><span id="line-136"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
-<span class="source-line-no">137</span><span id="line-137"> e);</span>
-<span class="source-line-no">138</span><span id="line-138"> }</span>
-<span class="source-line-no">139</span><span id="line-139"> return ConnectionFactory.createConnection(uri, conf);</span>
-<span class="source-line-no">140</span><span id="line-140"> } else {</span>
-<span class="source-line-no">141</span><span id="line-141"> return ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">142</span><span id="line-142"> }</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> /**</span>
-<span class="source-line-no">146</span><span id="line-146"> * Writes the reducer output to an HBase table.</span>
-<span class="source-line-no">147</span><span id="line-147"> */</span>
-<span class="source-line-no">148</span><span id="line-148"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150"> private Connection connection;</span>
-<span class="source-line-no">151</span><span id="line-151"> private BufferedMutator mutator;</span>
-<span class="source-line-no">152</span><span id="line-152"> boolean useWriteAheadLogging;</span>
-<span class="source-line-no">153</span><span id="line-153"></span>
-<span class="source-line-no">154</span><span id="line-154"> public TableRecordWriter() throws IOException {</span>
-<span class="source-line-no">155</span><span id="line-155"> this.connection = createConnection(conf);</span>
-<span class="source-line-no">156</span><span id="line-156"> String tableName = conf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">157</span><span id="line-157"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
-<span class="source-line-no">158</span><span id="line-158"> LOG.info("Created table instance for " + tableName);</span>
-<span class="source-line-no">159</span><span id="line-159"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
-<span class="source-line-no">160</span><span id="line-160"> }</span>
-<span class="source-line-no">161</span><span id="line-161"></span>
-<span class="source-line-no">162</span><span id="line-162"> /**</span>
-<span class="source-line-no">163</span><span id="line-163"> * Closes the writer, in this case flush table commits.</span>
-<span class="source-line-no">164</span><span id="line-164"> * @param context The context.</span>
-<span class="source-line-no">165</span><span id="line-165"> * @throws IOException When closing the writer fails.</span>
-<span class="source-line-no">166</span><span id="line-166"> * @see RecordWriter#close(TaskAttemptContext)</span>
-<span class="source-line-no">167</span><span id="line-167"> */</span>
-<span class="source-line-no">168</span><span id="line-168"> @Override</span>
-<span class="source-line-no">169</span><span id="line-169"> public void close(TaskAttemptContext context) throws IOException {</span>
-<span class="source-line-no">170</span><span id="line-170"> try {</span>
-<span class="source-line-no">171</span><span id="line-171"> if (mutator != null) {</span>
-<span class="source-line-no">172</span><span id="line-172"> mutator.close();</span>
-<span class="source-line-no">173</span><span id="line-173"> }</span>
-<span class="source-line-no">174</span><span id="line-174"> } finally {</span>
-<span class="source-line-no">175</span><span id="line-175"> if (connection != null) {</span>
-<span class="source-line-no">176</span><span id="line-176"> connection.close();</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"> }</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"></span>
-<span class="source-line-no">181</span><span id="line-181"> /**</span>
-<span class="source-line-no">182</span><span id="line-182"> * Writes a key/value pair into the table.</span>
-<span class="source-line-no">183</span><span id="line-183"> * @param key The key.</span>
-<span class="source-line-no">184</span><span id="line-184"> * @param value The value.</span>
-<span class="source-line-no">185</span><span id="line-185"> * @throws IOException When writing fails.</span>
-<span class="source-line-no">186</span><span id="line-186"> * @see RecordWriter#write(Object, Object)</span>
-<span class="source-line-no">187</span><span id="line-187"> */</span>
-<span class="source-line-no">188</span><span id="line-188"> @Override</span>
-<span class="source-line-no">189</span><span id="line-189"> public void write(KEY key, Mutation value) throws IOException {</span>
-<span class="source-line-no">190</span><span id="line-190"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
-<span class="source-line-no">191</span><span id="line-191"> throw new IOException("Pass a Delete or a Put");</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"> if (!useWriteAheadLogging) {</span>
-<span class="source-line-no">194</span><span id="line-194"> value.setDurability(Durability.SKIP_WAL);</span>
-<span class="source-line-no">195</span><span id="line-195"> }</span>
-<span class="source-line-no">196</span><span id="line-196"> mutator.mutate(value);</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"> }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200"> /**</span>
-<span class="source-line-no">201</span><span id="line-201"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
-<span class="source-line-no">202</span><span id="line-202"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
-<span class="source-line-no">203</span><span id="line-203"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
-<span class="source-line-no">204</span><span id="line-204"> * Failure to do so will drop writes.</span>
-<span class="source-line-no">205</span><span id="line-205"> * @param context The current task context.</span>
-<span class="source-line-no">206</span><span id="line-206"> * @return The newly created writer instance.</span>
-<span class="source-line-no">207</span><span id="line-207"> * @throws IOException When creating the writer fails.</span>
-<span class="source-line-no">208</span><span id="line-208"> * @throws InterruptedException When the job is cancelled.</span>
-<span class="source-line-no">209</span><span id="line-209"> */</span>
-<span class="source-line-no">210</span><span id="line-210"> @Override</span>
-<span class="source-line-no">211</span><span id="line-211"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
-<span class="source-line-no">212</span><span id="line-212"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">213</span><span id="line-213"> return new TableRecordWriter();</span>
-<span class="source-line-no">214</span><span id="line-214"> }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216"> /**</span>
-<span class="source-line-no">217</span><span id="line-217"> * Checks if the output table exists and is enabled.</span>
-<span class="source-line-no">218</span><span id="line-218"> * @param context The current context.</span>
-<span class="source-line-no">219</span><span id="line-219"> * @throws IOException When the check fails.</span>
-<span class="source-line-no">220</span><span id="line-220"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">221</span><span id="line-221"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
-<span class="source-line-no">222</span><span id="line-222"> */</span>
-<span class="source-line-no">223</span><span id="line-223"> @Override</span>
-<span class="source-line-no">224</span><span id="line-224"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
-<span class="source-line-no">225</span><span id="line-225"> Configuration hConf = getConf();</span>
-<span class="source-line-no">226</span><span id="line-226"> if (hConf == null) {</span>
-<span class="source-line-no">227</span><span id="line-227"> hConf = context.getConfiguration();</span>
-<span class="source-line-no">228</span><span id="line-228"> }</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
-<span class="source-line-no">231</span><span id="line-231"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
-<span class="source-line-no">232</span><span id="line-232"> if (!admin.tableExists(tableName)) {</span>
-<span class="source-line-no">233</span><span id="line-233"> throw new TableNotFoundException(</span>
-<span class="source-line-no">234</span><span id="line-234"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
-<span class="source-line-no">235</span><span id="line-235"> }</span>
-<span class="source-line-no">236</span><span id="line-236"></span>
-<span class="source-line-no">237</span><span id="line-237"> if (!admin.isTableEnabled(tableName)) {</span>
-<span class="source-line-no">238</span><span id="line-238"> throw new TableNotEnabledException(</span>
-<span class="source-line-no">239</span><span id="line-239"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"> }</span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * Returns the output committer.</span>
-<span class="source-line-no">246</span><span id="line-246"> * @param context The current context.</span>
-<span class="source-line-no">247</span><span id="line-247"> * @return The committer.</span>
-<span class="source-line-no">248</span><span id="line-248"> * @throws IOException When creating the committer fails.</span>
-<span class="source-line-no">249</span><span id="line-249"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">250</span><span id="line-250"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
-<span class="source-line-no">251</span><span id="line-251"> */</span>
-<span class="source-line-no">252</span><span id="line-252"> @Override</span>
-<span class="source-line-no">253</span><span id="line-253"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
-<span class="source-line-no">254</span><span id="line-254"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">255</span><span id="line-255"> return new TableOutputCommitter();</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Override</span>
-<span class="source-line-no">259</span><span id="line-259"> public Configuration getConf() {</span>
-<span class="source-line-no">260</span><span id="line-260"> return conf;</span>
-<span class="source-line-no">261</span><span id="line-261"> }</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">103</span><span id="line-103"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">104</span><span id="line-104"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">105</span><span id="line-105"> * Class, String)</span>
+<span class="source-line-no">106</span><span id="line-106"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
+<span class="source-line-no">107</span><span id="line-107"> * peer cluster instead.</span>
+<span class="source-line-no">108</span><span id="line-108"> */</span>
+<span class="source-line-no">109</span><span id="line-109"> @Deprecated</span>
+<span class="source-line-no">110</span><span id="line-110"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112"> /**</span>
+<span class="source-line-no">113</span><span id="line-113"> * Optional job parameter to specify peer cluster's ZK client port.</span>
+<span class="source-line-no">114</span><span id="line-114"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">115</span><span id="line-115"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">116</span><span id="line-116"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
+<span class="source-line-no">117</span><span id="line-117"> */</span>
+<span class="source-line-no">118</span><span id="line-118"> @Deprecated</span>
+<span class="source-line-no">119</span><span id="line-119"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
+<span class="source-line-no">120</span><span id="line-120"></span>
+<span class="source-line-no">121</span><span id="line-121"> /**</span>
+<span class="source-line-no">122</span><span id="line-122"> * Optional specification of the rs class name of the peer cluster.</span>
+<span class="source-line-no">123</span><span id="line-123"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">124</span><span id="line-124"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">125</span><span id="line-125"> */</span>
+<span class="source-line-no">126</span><span id="line-126"> @Deprecated</span>
+<span class="source-line-no">127</span><span id="line-127"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
+<span class="source-line-no">128</span><span id="line-128"> /**</span>
+<span class="source-line-no">129</span><span id="line-129"> * Optional specification of the rs impl name of the peer cluster</span>
+<span class="source-line-no">130</span><span id="line-130"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">131</span><span id="line-131"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">132</span><span id="line-132"> */</span>
+<span class="source-line-no">133</span><span id="line-133"> @Deprecated</span>
+<span class="source-line-no">134</span><span id="line-134"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136"> /** The configuration. */</span>
+<span class="source-line-no">137</span><span id="line-137"> private Configuration conf = null;</span>
+<span class="source-line-no">138</span><span id="line-138"></span>
+<span class="source-line-no">139</span><span id="line-139"> private static Connection createConnection(Configuration conf) throws IOException {</span>
+<span class="source-line-no">140</span><span id="line-140"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
+<span class="source-line-no">141</span><span id="line-141"> if (!StringUtils.isBlank(outputCluster)) {</span>
+<span class="source-line-no">142</span><span id="line-142"> URI uri;</span>
+<span class="source-line-no">143</span><span id="line-143"> try {</span>
+<span class="source-line-no">144</span><span id="line-144"> uri = new URI(outputCluster);</span>
+<span class="source-line-no">145</span><span id="line-145"> } catch (URISyntaxException e) {</span>
+<span class="source-line-no">146</span><span id="line-146"> throw new IOException(</span>
+<span class="source-line-no">147</span><span id="line-147"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
+<span class="source-line-no">148</span><span id="line-148"> e);</span>
+<span class="source-line-no">149</span><span id="line-149"> }</span>
+<span class="source-line-no">150</span><span id="line-150"> return ConnectionFactory.createConnection(uri, conf);</span>
+<span class="source-line-no">151</span><span id="line-151"> } else {</span>
+<span class="source-line-no">152</span><span id="line-152"> return ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">153</span><span id="line-153"> }</span>
+<span class="source-line-no">154</span><span id="line-154"> }</span>
+<span class="source-line-no">155</span><span id="line-155"></span>
+<span class="source-line-no">156</span><span id="line-156"> /**</span>
+<span class="source-line-no">157</span><span id="line-157"> * Writes the reducer output to an HBase table.</span>
+<span class="source-line-no">158</span><span id="line-158"> */</span>
+<span class="source-line-no">159</span><span id="line-159"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
+<span class="source-line-no">160</span><span id="line-160"></span>
+<span class="source-line-no">161</span><span id="line-161"> private Connection connection;</span>
+<span class="source-line-no">162</span><span id="line-162"> private BufferedMutator mutator;</span>
+<span class="source-line-no">163</span><span id="line-163"> boolean useWriteAheadLogging;</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165"> public TableRecordWriter() throws IOException {</span>
+<span class="source-line-no">166</span><span id="line-166"> this.connection = createConnection(conf);</span>
+<span class="source-line-no">167</span><span id="line-167"> String tableName = conf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">168</span><span id="line-168"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
+<span class="source-line-no">169</span><span id="line-169"> LOG.info("Created table instance for " + tableName);</span>
+<span class="source-line-no">170</span><span id="line-170"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
+<span class="source-line-no">171</span><span id="line-171"> }</span>
+<span class="source-line-no">172</span><span id="line-172"></span>
+<span class="source-line-no">173</span><span id="line-173"> /**</span>
+<span class="source-line-no">174</span><span id="line-174"> * Closes the writer, in this case flush table commits.</span>
+<span class="source-line-no">175</span><span id="line-175"> * @param context The context.</span>
+<span class="source-line-no">176</span><span id="line-176"> * @throws IOException When closing the writer fails.</span>
+<span class="source-line-no">177</span><span id="line-177"> * @see RecordWriter#close(TaskAttemptContext)</span>
+<span class="source-line-no">178</span><span id="line-178"> */</span>
+<span class="source-line-no">179</span><span id="line-179"> @Override</span>
+<span class="source-line-no">180</span><span id="line-180"> public void close(TaskAttemptContext context) throws IOException {</span>
+<span class="source-line-no">181</span><span id="line-181"> try {</span>
+<span class="source-line-no">182</span><span id="line-182"> if (mutator != null) {</span>
+<span class="source-line-no">183</span><span id="line-183"> mutator.close();</span>
+<span class="source-line-no">184</span><span id="line-184"> }</span>
+<span class="source-line-no">185</span><span id="line-185"> } finally {</span>
+<span class="source-line-no">186</span><span id="line-186"> if (connection != null) {</span>
+<span class="source-line-no">187</span><span id="line-187"> connection.close();</span>
+<span class="source-line-no">188</span><span id="line-188"> }</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"> }</span>
+<span class="source-line-no">191</span><span id="line-191"></span>
+<span class="source-line-no">192</span><span id="line-192"> /**</span>
+<span class="source-line-no">193</span><span id="line-193"> * Writes a key/value pair into the table.</span>
+<span class="source-line-no">194</span><span id="line-194"> * @param key The key.</span>
+<span class="source-line-no">195</span><span id="line-195"> * @param value The value.</span>
+<span class="source-line-no">196</span><span id="line-196"> * @throws IOException When writing fails.</span>
+<span class="source-line-no">197</span><span id="line-197"> * @see RecordWriter#write(Object, Object)</span>
+<span class="source-line-no">198</span><span id="line-198"> */</span>
+<span class="source-line-no">199</span><span id="line-199"> @Override</span>
+<span class="source-line-no">200</span><span id="line-200"> public void write(KEY key, Mutation value) throws IOException {</span>
+<span class="source-line-no">201</span><span id="line-201"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
+<span class="source-line-no">202</span><span id="line-202"> throw new IOException("Pass a Delete or a Put");</span>
+<span class="source-line-no">203</span><span id="line-203"> }</span>
+<span class="source-line-no">204</span><span id="line-204"> if (!useWriteAheadLogging) {</span>
+<span class="source-line-no">205</span><span id="line-205"> value.setDurability(Durability.SKIP_WAL);</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> mutator.mutate(value);</span>
+<span class="source-line-no">208</span><span id="line-208"> }</span>
+<span class="source-line-no">209</span><span id="line-209"> }</span>
+<span class="source-line-no">210</span><span id="line-210"></span>
+<span class="source-line-no">211</span><span id="line-211"> /**</span>
+<span class="source-line-no">212</span><span id="line-212"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
+<span class="source-line-no">213</span><span id="line-213"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
+<span class="source-line-no">214</span><span id="line-214"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
+<span class="source-line-no">215</span><span id="line-215"> * Failure to do so will drop writes.</span>
+<span class="source-line-no">216</span><span id="line-216"> * @param context The current task context.</span>
+<span class="source-line-no">217</span><span id="line-217"> * @return The newly created writer instance.</span>
+<span class="source-line-no">218</span><span id="line-218"> * @throws IOException When creating the writer fails.</span>
+<span class="source-line-no">219</span><span id="line-219"> * @throws InterruptedException When the job is cancelled.</span>
+<span class="source-line-no">220</span><span id="line-220"> */</span>
+<span class="source-line-no">221</span><span id="line-221"> @Override</span>
+<span class="source-line-no">222</span><span id="line-222"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
+<span class="source-line-no">223</span><span id="line-223"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">224</span><span id="line-224"> return new TableRecordWriter();</span>
+<span class="source-line-no">225</span><span id="line-225"> }</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227"> /**</span>
+<span class="source-line-no">228</span><span id="line-228"> * Checks if the output table exists and is enabled.</span>
+<span class="source-line-no">229</span><span id="line-229"> * @param context The current context.</span>
+<span class="source-line-no">230</span><span id="line-230"> * @throws IOException When the check fails.</span>
+<span class="source-line-no">231</span><span id="line-231"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">232</span><span id="line-232"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
+<span class="source-line-no">233</span><span id="line-233"> */</span>
+<span class="source-line-no">234</span><span id="line-234"> @Override</span>
+<span class="source-line-no">235</span><span id="line-235"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
+<span class="source-line-no">236</span><span id="line-236"> Configuration hConf = getConf();</span>
+<span class="source-line-no">237</span><span id="line-237"> if (hConf == null) {</span>
+<span class="source-line-no">238</span><span id="line-238"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
+<span class="source-line-no">242</span><span id="line-242"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
+<span class="source-line-no">243</span><span id="line-243"> if (!admin.tableExists(tableName)) {</span>
+<span class="source-line-no">244</span><span id="line-244"> throw new TableNotFoundException(</span>
+<span class="source-line-no">245</span><span id="line-245"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
+<span class="source-line-no">246</span><span id="line-246"> }</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248"> if (!admin.isTableEnabled(tableName)) {</span>
+<span class="source-line-no">249</span><span id="line-249"> throw new TableNotEnabledException(</span>
+<span class="source-line-no">250</span><span id="line-250"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
+<span class="source-line-no">251</span><span id="line-251"> }</span>
+<span class="source-line-no">252</span><span id="line-252"> }</span>
+<span class="source-line-no">253</span><span id="line-253"> }</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> /**</span>
+<span class="source-line-no">256</span><span id="line-256"> * Returns the output committer.</span>
+<span class="source-line-no">257</span><span id="line-257"> * @param context The current context.</span>
+<span class="source-line-no">258</span><span id="line-258"> * @return The committer.</span>
+<span class="source-line-no">259</span><span id="line-259"> * @throws IOException When creating the committer fails.</span>
+<span class="source-line-no">260</span><span id="line-260"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">261</span><span id="line-261"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
+<span class="source-line-no">262</span><span id="line-262"> */</span>
<span class="source-line-no">263</span><span id="line-263"> @Override</span>
-<span class="source-line-no">264</span><span id="line-264"> public void setConf(Configuration otherConf) {</span>
-<span class="source-line-no">265</span><span id="line-265"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">266</span><span id="line-266"> if (tableName == null || tableName.length() <= 0) {</span>
-<span class="source-line-no">267</span><span id="line-267"> throw new IllegalArgumentException("Must specify table name");</span>
-<span class="source-line-no">268</span><span id="line-268"> }</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270"> String address = otherConf.get(QUORUM_ADDRESS);</span>
-<span class="source-line-no">271</span><span id="line-271"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> try {</span>
-<span class="source-line-no">274</span><span id="line-274"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
-<span class="source-line-no">275</span><span id="line-275"> if (zkClientPort != 0) {</span>
-<span class="source-line-no">276</span><span id="line-276"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
-<span class="source-line-no">277</span><span id="line-277"> }</span>
-<span class="source-line-no">278</span><span id="line-278"> } catch (IOException e) {</span>
-<span class="source-line-no">279</span><span id="line-279"> LOG.error(e.toString(), e);</span>
-<span class="source-line-no">280</span><span id="line-280"> throw new RuntimeException(e);</span>
-<span class="source-line-no">281</span><span id="line-281"> }</span>
-<span class="source-line-no">282</span><span id="line-282"> }</span>
-<span class="source-line-no">283</span><span id="line-283">}</span>
+<span class="source-line-no">264</span><span id="line-264"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
+<span class="source-line-no">265</span><span id="line-265"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">266</span><span id="line-266"> Configuration hConf = getConf();</span>
+<span class="source-line-no">267</span><span id="line-267"> if (hConf == null) {</span>
+<span class="source-line-no">268</span><span id="line-268"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">269</span><span id="line-269"> }</span>
+<span class="source-line-no">270</span><span id="line-270"></span>
+<span class="source-line-no">271</span><span id="line-271"> try {</span>
+<span class="source-line-no">272</span><span id="line-272"> Class<? extends OutputCommitter> outputCommitter =</span>
+<span class="source-line-no">273</span><span id="line-273"> hConf.getClass(OUTPUT_COMMITTER_CLASS, TableOutputCommitter.class, OutputCommitter.class);</span>
+<span class="source-line-no">274</span><span id="line-274"> return ReflectionUtils.newInstance(outputCommitter);</span>
+<span class="source-line-no">275</span><span id="line-275"> } catch (Exception e) {</span>
+<span class="source-line-no">276</span><span id="line-276"> throw new IOException("Could not create the configured OutputCommitter", e);</span>
+<span class="source-line-no">277</span><span id="line-277"> }</span>
+<span class="source-line-no">278</span><span id="line-278"> }</span>
+<span class="source-line-no">279</span><span id="line-279"></span>
+<span class="source-line-no">280</span><span id="line-280"> @Override</span>
+<span class="source-line-no">281</span><span id="line-281"> public Configuration getConf() {</span>
+<span class="source-line-no">282</span><span id="line-282"> return conf;</span>
+<span class="source-line-no">283</span><span id="line-283"> }</span>
+<span class="source-line-no">284</span><span id="line-284"></span>
+<span class="source-line-no">285</span><span id="line-285"> @Override</span>
+<span class="source-line-no">286</span><span id="line-286"> public void setConf(Configuration otherConf) {</span>
+<span class="source-line-no">287</span><span id="line-287"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">288</span><span id="line-288"> if (tableName == null || tableName.length() <= 0) {</span>
+<span class="source-line-no">289</span><span id="line-289"> throw new IllegalArgumentException("Must specify table name");</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> String address = otherConf.get(QUORUM_ADDRESS);</span>
+<span class="source-line-no">293</span><span id="line-293"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295"> try {</span>
+<span class="source-line-no">296</span><span id="line-296"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
+<span class="source-line-no">297</span><span id="line-297"> if (zkClientPort != 0) {</span>
+<span class="source-line-no">298</span><span id="line-298"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
+<span class="source-line-no">299</span><span id="line-299"> }</span>
+<span class="source-line-no">300</span><span id="line-300"> } catch (IOException e) {</span>
+<span class="source-line-no">301</span><span id="line-301"> LOG.error(e.toString(), e);</span>
+<span class="source-line-no">302</span><span id="line-302"> throw new RuntimeException(e);</span>
+<span class="source-line-no">303</span><span id="line-303"> }</span>
+<span class="source-line-no">304</span><span id="line-304"> }</span>
+<span class="source-line-no">305</span><span id="line-305">}</span>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
index 12cb1fea757..f3ebdbc83ee 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
@@ -49,251 +49,273 @@
<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Durability;</span>
<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Mutation;</span>
<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.mapreduce.JobContext;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputFormat;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.RecordWriter;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.slf4j.Logger;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">047</span><span id="line-47"></span>
-<span class="source-line-no">048</span><span id="line-48">/**</span>
-<span class="source-line-no">049</span><span id="line-49"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
-<span class="source-line-no">050</span><span id="line-50"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
-<span class="source-line-no">051</span><span id="line-51"> */</span>
-<span class="source-line-no">052</span><span id="line-52">@InterfaceAudience.Public</span>
-<span class="source-line-no">053</span><span id="line-53">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57"> /** Job parameter that specifies the output table. */</span>
-<span class="source-line-no">058</span><span id="line-58"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60"> /** Property value to use write-ahead logging */</span>
-<span class="source-line-no">061</span><span id="line-61"> public static final boolean WAL_ON = true;</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63"> /** Property value to disable write-ahead logging */</span>
-<span class="source-line-no">064</span><span id="line-64"> public static final boolean WAL_OFF = false;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
-<span class="source-line-no">067</span><span id="line-67"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69"> /**</span>
-<span class="source-line-no">070</span><span id="line-70"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">071</span><span id="line-71"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">072</span><span id="line-72"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">073</span><span id="line-73"> * Class, java.net.URI)</span>
-<span class="source-line-no">074</span><span id="line-74"> */</span>
-<span class="source-line-no">075</span><span id="line-75"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> /**</span>
-<span class="source-line-no">078</span><span id="line-78"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
-<span class="source-line-no">079</span><span id="line-79"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
-<span class="source-line-no">080</span><span id="line-80"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
-<span class="source-line-no">081</span><span id="line-81"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
-<span class="source-line-no">082</span><span id="line-82"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
-<span class="source-line-no">083</span><span id="line-83"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">084</span><span id="line-84"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">085</span><span id="line-85"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">086</span><span id="line-86"> */</span>
-<span class="source-line-no">087</span><span id="line-87"> @Deprecated</span>
-<span class="source-line-no">088</span><span id="line-88"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90"> /**</span>
-<span class="source-line-no">091</span><span id="line-91"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">092</span><span id="line-92"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">093</span><span id="line-93"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">094</span><span id="line-94"> * Class, String)</span>
-<span class="source-line-no">095</span><span id="line-95"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
-<span class="source-line-no">096</span><span id="line-96"> * peer cluster instead.</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.ReflectionUtils;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.JobContext;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.OutputFormat;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.RecordWriter;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.slf4j.Logger;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">/**</span>
+<span class="source-line-no">050</span><span id="line-50"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
+<span class="source-line-no">051</span><span id="line-51"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
+<span class="source-line-no">052</span><span id="line-52"> */</span>
+<span class="source-line-no">053</span><span id="line-53">@InterfaceAudience.Public</span>
+<span class="source-line-no">054</span><span id="line-54">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58"> /** Job parameter that specifies the output table. */</span>
+<span class="source-line-no">059</span><span id="line-59"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61"> /** Property value to use write-ahead logging */</span>
+<span class="source-line-no">062</span><span id="line-62"> public static final boolean WAL_ON = true;</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64"> /** Property value to disable write-ahead logging */</span>
+<span class="source-line-no">065</span><span id="line-65"> public static final boolean WAL_OFF = false;</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
+<span class="source-line-no">068</span><span id="line-68"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70"> /**</span>
+<span class="source-line-no">071</span><span id="line-71"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">072</span><span id="line-72"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">073</span><span id="line-73"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">074</span><span id="line-74"> * Class, java.net.URI)</span>
+<span class="source-line-no">075</span><span id="line-75"> */</span>
+<span class="source-line-no">076</span><span id="line-76"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78"> /**</span>
+<span class="source-line-no">079</span><span id="line-79"> * The configuration key for specifying a custom</span>
+<span class="source-line-no">080</span><span id="line-80"> * {@link org.apache.hadoop.mapreduce.OutputCommitter} implementation to be used by</span>
+<span class="source-line-no">081</span><span id="line-81"> * {@link TableOutputFormat}. The value for this property should be the fully qualified class name</span>
+<span class="source-line-no">082</span><span id="line-82"> * of the custom committer. If this property is not set, {@link TableOutputCommitter} will be used</span>
+<span class="source-line-no">083</span><span id="line-83"> * by default.</span>
+<span class="source-line-no">084</span><span id="line-84"> */</span>
+<span class="source-line-no">085</span><span id="line-85"> public static final String OUTPUT_COMMITTER_CLASS =</span>
+<span class="source-line-no">086</span><span id="line-86"> "hbase.mapreduce.tableoutputformat.output.committer.class";</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88"> /**</span>
+<span class="source-line-no">089</span><span id="line-89"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
+<span class="source-line-no">090</span><span id="line-90"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
+<span class="source-line-no">091</span><span id="line-91"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
+<span class="source-line-no">092</span><span id="line-92"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
+<span class="source-line-no">093</span><span id="line-93"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
+<span class="source-line-no">094</span><span id="line-94"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">095</span><span id="line-95"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">096</span><span id="line-96"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
<span class="source-line-no">097</span><span id="line-97"> */</span>
<span class="source-line-no">098</span><span id="line-98"> @Deprecated</span>
-<span class="source-line-no">099</span><span id="line-99"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">099</span><span id="line-99"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
<span class="source-line-no">100</span><span id="line-100"></span>
<span class="source-line-no">101</span><span id="line-101"> /**</span>
-<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify peer cluster's ZK client port.</span>
-<span class="source-line-no">103</span><span id="line-103"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">104</span><span id="line-104"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">105</span><span id="line-105"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">106</span><span id="line-106"> */</span>
-<span class="source-line-no">107</span><span id="line-107"> @Deprecated</span>
-<span class="source-line-no">108</span><span id="line-108"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
-<span class="source-line-no">109</span><span id="line-109"></span>
-<span class="source-line-no">110</span><span id="line-110"> /**</span>
-<span class="source-line-no">111</span><span id="line-111"> * Optional specification of the rs class name of the peer cluster.</span>
-<span class="source-line-no">112</span><span id="line-112"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">113</span><span id="line-113"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">114</span><span id="line-114"> */</span>
-<span class="source-line-no">115</span><span id="line-115"> @Deprecated</span>
-<span class="source-line-no">116</span><span id="line-116"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
-<span class="source-line-no">117</span><span id="line-117"> /**</span>
-<span class="source-line-no">118</span><span id="line-118"> * Optional specification of the rs impl name of the peer cluster</span>
-<span class="source-line-no">119</span><span id="line-119"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">120</span><span id="line-120"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">121</span><span id="line-121"> */</span>
-<span class="source-line-no">122</span><span id="line-122"> @Deprecated</span>
-<span class="source-line-no">123</span><span id="line-123"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125"> /** The configuration. */</span>
-<span class="source-line-no">126</span><span id="line-126"> private Configuration conf = null;</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128"> private static Connection createConnection(Configuration conf) throws IOException {</span>
-<span class="source-line-no">129</span><span id="line-129"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
-<span class="source-line-no">130</span><span id="line-130"> if (!StringUtils.isBlank(outputCluster)) {</span>
-<span class="source-line-no">131</span><span id="line-131"> URI uri;</span>
-<span class="source-line-no">132</span><span id="line-132"> try {</span>
-<span class="source-line-no">133</span><span id="line-133"> uri = new URI(outputCluster);</span>
-<span class="source-line-no">134</span><span id="line-134"> } catch (URISyntaxException e) {</span>
-<span class="source-line-no">135</span><span id="line-135"> throw new IOException(</span>
-<span class="source-line-no">136</span><span id="line-136"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
-<span class="source-line-no">137</span><span id="line-137"> e);</span>
-<span class="source-line-no">138</span><span id="line-138"> }</span>
-<span class="source-line-no">139</span><span id="line-139"> return ConnectionFactory.createConnection(uri, conf);</span>
-<span class="source-line-no">140</span><span id="line-140"> } else {</span>
-<span class="source-line-no">141</span><span id="line-141"> return ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">142</span><span id="line-142"> }</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> /**</span>
-<span class="source-line-no">146</span><span id="line-146"> * Writes the reducer output to an HBase table.</span>
-<span class="source-line-no">147</span><span id="line-147"> */</span>
-<span class="source-line-no">148</span><span id="line-148"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150"> private Connection connection;</span>
-<span class="source-line-no">151</span><span id="line-151"> private BufferedMutator mutator;</span>
-<span class="source-line-no">152</span><span id="line-152"> boolean useWriteAheadLogging;</span>
-<span class="source-line-no">153</span><span id="line-153"></span>
-<span class="source-line-no">154</span><span id="line-154"> public TableRecordWriter() throws IOException {</span>
-<span class="source-line-no">155</span><span id="line-155"> this.connection = createConnection(conf);</span>
-<span class="source-line-no">156</span><span id="line-156"> String tableName = conf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">157</span><span id="line-157"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
-<span class="source-line-no">158</span><span id="line-158"> LOG.info("Created table instance for " + tableName);</span>
-<span class="source-line-no">159</span><span id="line-159"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
-<span class="source-line-no">160</span><span id="line-160"> }</span>
-<span class="source-line-no">161</span><span id="line-161"></span>
-<span class="source-line-no">162</span><span id="line-162"> /**</span>
-<span class="source-line-no">163</span><span id="line-163"> * Closes the writer, in this case flush table commits.</span>
-<span class="source-line-no">164</span><span id="line-164"> * @param context The context.</span>
-<span class="source-line-no">165</span><span id="line-165"> * @throws IOException When closing the writer fails.</span>
-<span class="source-line-no">166</span><span id="line-166"> * @see RecordWriter#close(TaskAttemptContext)</span>
-<span class="source-line-no">167</span><span id="line-167"> */</span>
-<span class="source-line-no">168</span><span id="line-168"> @Override</span>
-<span class="source-line-no">169</span><span id="line-169"> public void close(TaskAttemptContext context) throws IOException {</span>
-<span class="source-line-no">170</span><span id="line-170"> try {</span>
-<span class="source-line-no">171</span><span id="line-171"> if (mutator != null) {</span>
-<span class="source-line-no">172</span><span id="line-172"> mutator.close();</span>
-<span class="source-line-no">173</span><span id="line-173"> }</span>
-<span class="source-line-no">174</span><span id="line-174"> } finally {</span>
-<span class="source-line-no">175</span><span id="line-175"> if (connection != null) {</span>
-<span class="source-line-no">176</span><span id="line-176"> connection.close();</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"> }</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"></span>
-<span class="source-line-no">181</span><span id="line-181"> /**</span>
-<span class="source-line-no">182</span><span id="line-182"> * Writes a key/value pair into the table.</span>
-<span class="source-line-no">183</span><span id="line-183"> * @param key The key.</span>
-<span class="source-line-no">184</span><span id="line-184"> * @param value The value.</span>
-<span class="source-line-no">185</span><span id="line-185"> * @throws IOException When writing fails.</span>
-<span class="source-line-no">186</span><span id="line-186"> * @see RecordWriter#write(Object, Object)</span>
-<span class="source-line-no">187</span><span id="line-187"> */</span>
-<span class="source-line-no">188</span><span id="line-188"> @Override</span>
-<span class="source-line-no">189</span><span id="line-189"> public void write(KEY key, Mutation value) throws IOException {</span>
-<span class="source-line-no">190</span><span id="line-190"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
-<span class="source-line-no">191</span><span id="line-191"> throw new IOException("Pass a Delete or a Put");</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"> if (!useWriteAheadLogging) {</span>
-<span class="source-line-no">194</span><span id="line-194"> value.setDurability(Durability.SKIP_WAL);</span>
-<span class="source-line-no">195</span><span id="line-195"> }</span>
-<span class="source-line-no">196</span><span id="line-196"> mutator.mutate(value);</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"> }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200"> /**</span>
-<span class="source-line-no">201</span><span id="line-201"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
-<span class="source-line-no">202</span><span id="line-202"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
-<span class="source-line-no">203</span><span id="line-203"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
-<span class="source-line-no">204</span><span id="line-204"> * Failure to do so will drop writes.</span>
-<span class="source-line-no">205</span><span id="line-205"> * @param context The current task context.</span>
-<span class="source-line-no">206</span><span id="line-206"> * @return The newly created writer instance.</span>
-<span class="source-line-no">207</span><span id="line-207"> * @throws IOException When creating the writer fails.</span>
-<span class="source-line-no">208</span><span id="line-208"> * @throws InterruptedException When the job is cancelled.</span>
-<span class="source-line-no">209</span><span id="line-209"> */</span>
-<span class="source-line-no">210</span><span id="line-210"> @Override</span>
-<span class="source-line-no">211</span><span id="line-211"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
-<span class="source-line-no">212</span><span id="line-212"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">213</span><span id="line-213"> return new TableRecordWriter();</span>
-<span class="source-line-no">214</span><span id="line-214"> }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216"> /**</span>
-<span class="source-line-no">217</span><span id="line-217"> * Checks if the output table exists and is enabled.</span>
-<span class="source-line-no">218</span><span id="line-218"> * @param context The current context.</span>
-<span class="source-line-no">219</span><span id="line-219"> * @throws IOException When the check fails.</span>
-<span class="source-line-no">220</span><span id="line-220"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">221</span><span id="line-221"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
-<span class="source-line-no">222</span><span id="line-222"> */</span>
-<span class="source-line-no">223</span><span id="line-223"> @Override</span>
-<span class="source-line-no">224</span><span id="line-224"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
-<span class="source-line-no">225</span><span id="line-225"> Configuration hConf = getConf();</span>
-<span class="source-line-no">226</span><span id="line-226"> if (hConf == null) {</span>
-<span class="source-line-no">227</span><span id="line-227"> hConf = context.getConfiguration();</span>
-<span class="source-line-no">228</span><span id="line-228"> }</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
-<span class="source-line-no">231</span><span id="line-231"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
-<span class="source-line-no">232</span><span id="line-232"> if (!admin.tableExists(tableName)) {</span>
-<span class="source-line-no">233</span><span id="line-233"> throw new TableNotFoundException(</span>
-<span class="source-line-no">234</span><span id="line-234"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
-<span class="source-line-no">235</span><span id="line-235"> }</span>
-<span class="source-line-no">236</span><span id="line-236"></span>
-<span class="source-line-no">237</span><span id="line-237"> if (!admin.isTableEnabled(tableName)) {</span>
-<span class="source-line-no">238</span><span id="line-238"> throw new TableNotEnabledException(</span>
-<span class="source-line-no">239</span><span id="line-239"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"> }</span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * Returns the output committer.</span>
-<span class="source-line-no">246</span><span id="line-246"> * @param context The current context.</span>
-<span class="source-line-no">247</span><span id="line-247"> * @return The committer.</span>
-<span class="source-line-no">248</span><span id="line-248"> * @throws IOException When creating the committer fails.</span>
-<span class="source-line-no">249</span><span id="line-249"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">250</span><span id="line-250"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
-<span class="source-line-no">251</span><span id="line-251"> */</span>
-<span class="source-line-no">252</span><span id="line-252"> @Override</span>
-<span class="source-line-no">253</span><span id="line-253"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
-<span class="source-line-no">254</span><span id="line-254"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">255</span><span id="line-255"> return new TableOutputCommitter();</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Override</span>
-<span class="source-line-no">259</span><span id="line-259"> public Configuration getConf() {</span>
-<span class="source-line-no">260</span><span id="line-260"> return conf;</span>
-<span class="source-line-no">261</span><span id="line-261"> }</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">103</span><span id="line-103"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">104</span><span id="line-104"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">105</span><span id="line-105"> * Class, String)</span>
+<span class="source-line-no">106</span><span id="line-106"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
+<span class="source-line-no">107</span><span id="line-107"> * peer cluster instead.</span>
+<span class="source-line-no">108</span><span id="line-108"> */</span>
+<span class="source-line-no">109</span><span id="line-109"> @Deprecated</span>
+<span class="source-line-no">110</span><span id="line-110"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112"> /**</span>
+<span class="source-line-no">113</span><span id="line-113"> * Optional job parameter to specify peer cluster's ZK client port.</span>
+<span class="source-line-no">114</span><span id="line-114"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">115</span><span id="line-115"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">116</span><span id="line-116"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
+<span class="source-line-no">117</span><span id="line-117"> */</span>
+<span class="source-line-no">118</span><span id="line-118"> @Deprecated</span>
+<span class="source-line-no">119</span><span id="line-119"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
+<span class="source-line-no">120</span><span id="line-120"></span>
+<span class="source-line-no">121</span><span id="line-121"> /**</span>
+<span class="source-line-no">122</span><span id="line-122"> * Optional specification of the rs class name of the peer cluster.</span>
+<span class="source-line-no">123</span><span id="line-123"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">124</span><span id="line-124"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">125</span><span id="line-125"> */</span>
+<span class="source-line-no">126</span><span id="line-126"> @Deprecated</span>
+<span class="source-line-no">127</span><span id="line-127"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
+<span class="source-line-no">128</span><span id="line-128"> /**</span>
+<span class="source-line-no">129</span><span id="line-129"> * Optional specification of the rs impl name of the peer cluster</span>
+<span class="source-line-no">130</span><span id="line-130"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">131</span><span id="line-131"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">132</span><span id="line-132"> */</span>
+<span class="source-line-no">133</span><span id="line-133"> @Deprecated</span>
+<span class="source-line-no">134</span><span id="line-134"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136"> /** The configuration. */</span>
+<span class="source-line-no">137</span><span id="line-137"> private Configuration conf = null;</span>
+<span class="source-line-no">138</span><span id="line-138"></span>
+<span class="source-line-no">139</span><span id="line-139"> private static Connection createConnection(Configuration conf) throws IOException {</span>
+<span class="source-line-no">140</span><span id="line-140"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
+<span class="source-line-no">141</span><span id="line-141"> if (!StringUtils.isBlank(outputCluster)) {</span>
+<span class="source-line-no">142</span><span id="line-142"> URI uri;</span>
+<span class="source-line-no">143</span><span id="line-143"> try {</span>
+<span class="source-line-no">144</span><span id="line-144"> uri = new URI(outputCluster);</span>
+<span class="source-line-no">145</span><span id="line-145"> } catch (URISyntaxException e) {</span>
+<span class="source-line-no">146</span><span id="line-146"> throw new IOException(</span>
+<span class="source-line-no">147</span><span id="line-147"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
+<span class="source-line-no">148</span><span id="line-148"> e);</span>
+<span class="source-line-no">149</span><span id="line-149"> }</span>
+<span class="source-line-no">150</span><span id="line-150"> return ConnectionFactory.createConnection(uri, conf);</span>
+<span class="source-line-no">151</span><span id="line-151"> } else {</span>
+<span class="source-line-no">152</span><span id="line-152"> return ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">153</span><span id="line-153"> }</span>
+<span class="source-line-no">154</span><span id="line-154"> }</span>
+<span class="source-line-no">155</span><span id="line-155"></span>
+<span class="source-line-no">156</span><span id="line-156"> /**</span>
+<span class="source-line-no">157</span><span id="line-157"> * Writes the reducer output to an HBase table.</span>
+<span class="source-line-no">158</span><span id="line-158"> */</span>
+<span class="source-line-no">159</span><span id="line-159"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
+<span class="source-line-no">160</span><span id="line-160"></span>
+<span class="source-line-no">161</span><span id="line-161"> private Connection connection;</span>
+<span class="source-line-no">162</span><span id="line-162"> private BufferedMutator mutator;</span>
+<span class="source-line-no">163</span><span id="line-163"> boolean useWriteAheadLogging;</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165"> public TableRecordWriter() throws IOException {</span>
+<span class="source-line-no">166</span><span id="line-166"> this.connection = createConnection(conf);</span>
+<span class="source-line-no">167</span><span id="line-167"> String tableName = conf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">168</span><span id="line-168"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
+<span class="source-line-no">169</span><span id="line-169"> LOG.info("Created table instance for " + tableName);</span>
+<span class="source-line-no">170</span><span id="line-170"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
+<span class="source-line-no">171</span><span id="line-171"> }</span>
+<span class="source-line-no">172</span><span id="line-172"></span>
+<span class="source-line-no">173</span><span id="line-173"> /**</span>
+<span class="source-line-no">174</span><span id="line-174"> * Closes the writer, in this case flush table commits.</span>
+<span class="source-line-no">175</span><span id="line-175"> * @param context The context.</span>
+<span class="source-line-no">176</span><span id="line-176"> * @throws IOException When closing the writer fails.</span>
+<span class="source-line-no">177</span><span id="line-177"> * @see RecordWriter#close(TaskAttemptContext)</span>
+<span class="source-line-no">178</span><span id="line-178"> */</span>
+<span class="source-line-no">179</span><span id="line-179"> @Override</span>
+<span class="source-line-no">180</span><span id="line-180"> public void close(TaskAttemptContext context) throws IOException {</span>
+<span class="source-line-no">181</span><span id="line-181"> try {</span>
+<span class="source-line-no">182</span><span id="line-182"> if (mutator != null) {</span>
+<span class="source-line-no">183</span><span id="line-183"> mutator.close();</span>
+<span class="source-line-no">184</span><span id="line-184"> }</span>
+<span class="source-line-no">185</span><span id="line-185"> } finally {</span>
+<span class="source-line-no">186</span><span id="line-186"> if (connection != null) {</span>
+<span class="source-line-no">187</span><span id="line-187"> connection.close();</span>
+<span class="source-line-no">188</span><span id="line-188"> }</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"> }</span>
+<span class="source-line-no">191</span><span id="line-191"></span>
+<span class="source-line-no">192</span><span id="line-192"> /**</span>
+<span class="source-line-no">193</span><span id="line-193"> * Writes a key/value pair into the table.</span>
+<span class="source-line-no">194</span><span id="line-194"> * @param key The key.</span>
+<span class="source-line-no">195</span><span id="line-195"> * @param value The value.</span>
+<span class="source-line-no">196</span><span id="line-196"> * @throws IOException When writing fails.</span>
+<span class="source-line-no">197</span><span id="line-197"> * @see RecordWriter#write(Object, Object)</span>
+<span class="source-line-no">198</span><span id="line-198"> */</span>
+<span class="source-line-no">199</span><span id="line-199"> @Override</span>
+<span class="source-line-no">200</span><span id="line-200"> public void write(KEY key, Mutation value) throws IOException {</span>
+<span class="source-line-no">201</span><span id="line-201"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
+<span class="source-line-no">202</span><span id="line-202"> throw new IOException("Pass a Delete or a Put");</span>
+<span class="source-line-no">203</span><span id="line-203"> }</span>
+<span class="source-line-no">204</span><span id="line-204"> if (!useWriteAheadLogging) {</span>
+<span class="source-line-no">205</span><span id="line-205"> value.setDurability(Durability.SKIP_WAL);</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> mutator.mutate(value);</span>
+<span class="source-line-no">208</span><span id="line-208"> }</span>
+<span class="source-line-no">209</span><span id="line-209"> }</span>
+<span class="source-line-no">210</span><span id="line-210"></span>
+<span class="source-line-no">211</span><span id="line-211"> /**</span>
+<span class="source-line-no">212</span><span id="line-212"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
+<span class="source-line-no">213</span><span id="line-213"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
+<span class="source-line-no">214</span><span id="line-214"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
+<span class="source-line-no">215</span><span id="line-215"> * Failure to do so will drop writes.</span>
+<span class="source-line-no">216</span><span id="line-216"> * @param context The current task context.</span>
+<span class="source-line-no">217</span><span id="line-217"> * @return The newly created writer instance.</span>
+<span class="source-line-no">218</span><span id="line-218"> * @throws IOException When creating the writer fails.</span>
+<span class="source-line-no">219</span><span id="line-219"> * @throws InterruptedException When the job is cancelled.</span>
+<span class="source-line-no">220</span><span id="line-220"> */</span>
+<span class="source-line-no">221</span><span id="line-221"> @Override</span>
+<span class="source-line-no">222</span><span id="line-222"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
+<span class="source-line-no">223</span><span id="line-223"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">224</span><span id="line-224"> return new TableRecordWriter();</span>
+<span class="source-line-no">225</span><span id="line-225"> }</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227"> /**</span>
+<span class="source-line-no">228</span><span id="line-228"> * Checks if the output table exists and is enabled.</span>
+<span class="source-line-no">229</span><span id="line-229"> * @param context The current context.</span>
+<span class="source-line-no">230</span><span id="line-230"> * @throws IOException When the check fails.</span>
+<span class="source-line-no">231</span><span id="line-231"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">232</span><span id="line-232"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
+<span class="source-line-no">233</span><span id="line-233"> */</span>
+<span class="source-line-no">234</span><span id="line-234"> @Override</span>
+<span class="source-line-no">235</span><span id="line-235"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
+<span class="source-line-no">236</span><span id="line-236"> Configuration hConf = getConf();</span>
+<span class="source-line-no">237</span><span id="line-237"> if (hConf == null) {</span>
+<span class="source-line-no">238</span><span id="line-238"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
+<span class="source-line-no">242</span><span id="line-242"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
+<span class="source-line-no">243</span><span id="line-243"> if (!admin.tableExists(tableName)) {</span>
+<span class="source-line-no">244</span><span id="line-244"> throw new TableNotFoundException(</span>
+<span class="source-line-no">245</span><span id="line-245"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
+<span class="source-line-no">246</span><span id="line-246"> }</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248"> if (!admin.isTableEnabled(tableName)) {</span>
+<span class="source-line-no">249</span><span id="line-249"> throw new TableNotEnabledException(</span>
+<span class="source-line-no">250</span><span id="line-250"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
+<span class="source-line-no">251</span><span id="line-251"> }</span>
+<span class="source-line-no">252</span><span id="line-252"> }</span>
+<span class="source-line-no">253</span><span id="line-253"> }</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> /**</span>
+<span class="source-line-no">256</span><span id="line-256"> * Returns the output committer.</span>
+<span class="source-line-no">257</span><span id="line-257"> * @param context The current context.</span>
+<span class="source-line-no">258</span><span id="line-258"> * @return The committer.</span>
+<span class="source-line-no">259</span><span id="line-259"> * @throws IOException When creating the committer fails.</span>
+<span class="source-line-no">260</span><span id="line-260"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">261</span><span id="line-261"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
+<span class="source-line-no">262</span><span id="line-262"> */</span>
<span class="source-line-no">263</span><span id="line-263"> @Override</span>
-<span class="source-line-no">264</span><span id="line-264"> public void setConf(Configuration otherConf) {</span>
-<span class="source-line-no">265</span><span id="line-265"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">266</span><span id="line-266"> if (tableName == null || tableName.length() <= 0) {</span>
-<span class="source-line-no">267</span><span id="line-267"> throw new IllegalArgumentException("Must specify table name");</span>
-<span class="source-line-no">268</span><span id="line-268"> }</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270"> String address = otherConf.get(QUORUM_ADDRESS);</span>
-<span class="source-line-no">271</span><span id="line-271"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> try {</span>
-<span class="source-line-no">274</span><span id="line-274"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
-<span class="source-line-no">275</span><span id="line-275"> if (zkClientPort != 0) {</span>
-<span class="source-line-no">276</span><span id="line-276"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
-<span class="source-line-no">277</span><span id="line-277"> }</span>
-<span class="source-line-no">278</span><span id="line-278"> } catch (IOException e) {</span>
-<span class="source-line-no">279</span><span id="line-279"> LOG.error(e.toString(), e);</span>
-<span class="source-line-no">280</span><span id="line-280"> throw new RuntimeException(e);</span>
-<span class="source-line-no">281</span><span id="line-281"> }</span>
-<span class="source-line-no">282</span><span id="line-282"> }</span>
-<span class="source-line-no">283</span><span id="line-283">}</span>
+<span class="source-line-no">264</span><span id="line-264"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
+<span class="source-line-no">265</span><span id="line-265"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">266</span><span id="line-266"> Configuration hConf = getConf();</span>
+<span class="source-line-no">267</span><span id="line-267"> if (hConf == null) {</span>
+<span class="source-line-no">268</span><span id="line-268"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">269</span><span id="line-269"> }</span>
+<span class="source-line-no">270</span><span id="line-270"></span>
+<span class="source-line-no">271</span><span id="line-271"> try {</span>
+<span class="source-line-no">272</span><span id="line-272"> Class<? extends OutputCommitter> outputCommitter =</span>
+<span class="source-line-no">273</span><span id="line-273"> hConf.getClass(OUTPUT_COMMITTER_CLASS, TableOutputCommitter.class, OutputCommitter.class);</span>
+<span class="source-line-no">274</span><span id="line-274"> return ReflectionUtils.newInstance(outputCommitter);</span>
+<span class="source-line-no">275</span><span id="line-275"> } catch (Exception e) {</span>
+<span class="source-line-no">276</span><span id="line-276"> throw new IOException("Could not create the configured OutputCommitter", e);</span>
+<span class="source-line-no">277</span><span id="line-277"> }</span>
+<span class="source-line-no">278</span><span id="line-278"> }</span>
+<span class="source-line-no">279</span><span id="line-279"></span>
+<span class="source-line-no">280</span><span id="line-280"> @Override</span>
+<span class="source-line-no">281</span><span id="line-281"> public Configuration getConf() {</span>
+<span class="source-line-no">282</span><span id="line-282"> return conf;</span>
+<span class="source-line-no">283</span><span id="line-283"> }</span>
+<span class="source-line-no">284</span><span id="line-284"></span>
+<span class="source-line-no">285</span><span id="line-285"> @Override</span>
+<span class="source-line-no">286</span><span id="line-286"> public void setConf(Configuration otherConf) {</span>
+<span class="source-line-no">287</span><span id="line-287"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">288</span><span id="line-288"> if (tableName == null || tableName.length() <= 0) {</span>
+<span class="source-line-no">289</span><span id="line-289"> throw new IllegalArgumentException("Must specify table name");</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> String address = otherConf.get(QUORUM_ADDRESS);</span>
+<span class="source-line-no">293</span><span id="line-293"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295"> try {</span>
+<span class="source-line-no">296</span><span id="line-296"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
+<span class="source-line-no">297</span><span id="line-297"> if (zkClientPort != 0) {</span>
+<span class="source-line-no">298</span><span id="line-298"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
+<span class="source-line-no">299</span><span id="line-299"> }</span>
+<span class="source-line-no">300</span><span id="line-300"> } catch (IOException e) {</span>
+<span class="source-line-no">301</span><span id="line-301"> LOG.error(e.toString(), e);</span>
+<span class="source-line-no">302</span><span id="line-302"> throw new RuntimeException(e);</span>
+<span class="source-line-no">303</span><span id="line-303"> }</span>
+<span class="source-line-no">304</span><span id="line-304"> }</span>
+<span class="source-line-no">305</span><span id="line-305">}</span>
diff --git a/book.html b/book.html
index 9d98288e5ae..dccd3364541 100644
--- a/book.html
+++ b/book.html
@@ -49762,7 +49762,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
<div id="footer">
<div id="footer-text">
Version 4.0.0-alpha-1-SNAPSHOT<br>
-Last updated 2025-08-01 14:31:26 UTC
+Last updated 2025-08-05 14:31:55 UTC
</div>
</div>
<script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 5ec0c5b3824..765bdb9250d 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -185,7 +185,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 6ffae9bb821..03ca490b384 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -174,7 +174,7 @@
<th><figure><img src="images/icon_warning_sml.gif" alt="" /></figure> Warnings</th>
<th><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Errors</th></tr>
<tr class="b">
-<td>5125</td>
+<td>5127</td>
<td>0</td>
<td>0</td>
<td>1713</td></tr></table></section><section>
@@ -11262,7 +11262,7 @@
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>296</td></tr></table></section><section>
+<td>306</td></tr></table></section><section>
<h3 id="org.apache.hadoop.hbase.mob.CachedMobFile.java">org/apache/hadoop/hbase/mob/CachedMobFile.java</h3>
<table border="0" class="table table-striped">
<tr class="b">
@@ -18547,7 +18547,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 e3b21f46c32..1f7e39fe659 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,7 +25,7 @@ under the License.
<language>en-us</language>
<copyright>©2007 - 2025 The Apache Software Foundation</copyright>
<item>
- <title>File: 5125,
+ <title>File: 5127,
Errors: 1713,
Warnings: 0,
Infos: 0
@@ -17711,6 +17711,20 @@ under the License.
<td>
0
</td>
+ </tr>
+ <tr>
+ <td>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotProcedureEarlyExpiration.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotProcedureEarlyExpiration.java</a>
+ </td>
+ <td>
+ 0
+ </td>
+ <td>
+ 0
+ </td>
+ <td>
+ 0
+ </td>
</tr>
<tr>
<td>
@@ -67285,6 +67299,20 @@ under the License.
<td>
0
</td>
+ </tr>
+ <tr>
+ <td>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.backup.TestBackupRestoreExpiry.java">org/apache/hadoop/hbase/backup/TestBackupRestoreExpiry.java</a>
+ </td>
+ <td>
+ 0
+ </td>
+ <td>
+ 0
+ </td>
+ <td>
+ 0
+ </td>
</tr>
<tr>
<td>
diff --git a/coc.html b/coc.html
index 21d9e88b96b..80f8b6934c0 100644
--- a/coc.html
+++ b/coc.html
@@ -253,7 +253,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 cef911099b5..32a2c5cc0e9 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -318,7 +318,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 d92ee7b5b47..968fcf0b72a 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1103,7 +1103,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 f11c5ed435f..607bdbcf5f2 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -200,7 +200,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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 128c69c49c5..19fc1cb33c3 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1762,7 +1762,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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/constant-values.html b/devapidocs/constant-values.html
index 2faad8a1d38..776039dce59 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -8083,33 +8083,36 @@ loadScripts(document, 'script');</script>
<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_CLUSTER">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_CLUSTER">OUTPUT_CLUSTER</a></code></div>
<div class="col-last even-row-color"><code>"hbase.mapred.outputcluster"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_CONF_PREFIX">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_CONF_PREFIX">OUTPUT_CONF_PREFIX</a></code></div>
-<div class="col-last odd-row-color"><code>"hbase.mapred.output."</code></div>
-<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_TABLE">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_TABLE">OUTPUT_TABLE</a></code></div>
-<div class="col-last even-row-color"><code>"hbase.mapred.outputtable"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.QUORUM_ADDRESS">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#QUORUM_ADDRESS">QUORUM_ADDRESS</a></code></div>
-<div class="col-last odd-row-color"><code>"hbase.mapred.output.quorum"</code></div>
-<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.QUORUM_PORT">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#QUORUM_PORT">QUORUM_PORT</a></code></div>
-<div class="col-last even-row-color"><code>"hbase.mapred.output.quorum.port"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.REGION_SERVER_CLASS">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#REGION_SERVER_CLASS">REGION_SERVER_CLASS</a></code></div>
-<div class="col-last odd-row-color"><code>"hbase.mapred.output.rs.class"</code></div>
-<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.REGION_SERVER_IMPL">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#REGION_SERVER_IMPL">REGION_SERVER_IMPL</a></code></div>
-<div class="col-last even-row-color"><code>"hbase.mapred.output.rs.impl"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.WAL_OFF">public static final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#WAL_OFF">WAL_OFF</a></code></div>
-<div class="col-last odd-row-color"><code>false</code></div>
-<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.WAL_ON">public static final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#WAL_ON">WAL_ON</a></code></div>
-<div class="col-last even-row-color"><code>true</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.WAL_PROPERTY">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#WAL_PROPERTY">WAL_PROPERTY</a></code></div>
-<div class="col-last odd-row-color"><code>"hbase.mapreduce.tableoutputformat.write.wal"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_COMMITTER_CLASS">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_COMMITTER_CLASS">OUTPUT_COMMITTER_CLASS</a></code></div>
+<div class="col-last odd-row-color"><code>"hbase.mapreduce.tableoutputformat.output.committer.class"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_CONF_PREFIX">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_CONF_PREFIX">OUTPUT_CONF_PREFIX</a></code></div>
+<div class="col-last even-row-color"><code>"hbase.mapred.output."</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_TABLE">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_TABLE">OUTPUT_TABLE</a></code></div>
+<div class="col-last odd-row-color"><code>"hbase.mapred.outputtable"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.QUORUM_ADDRESS">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#QUORUM_ADDRESS">QUORUM_ADDRESS</a></code></div>
+<div class="col-last even-row-color"><code>"hbase.mapred.output.quorum"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.QUORUM_PORT">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#QUORUM_PORT">QUORUM_PORT</a></code></div>
+<div class="col-last odd-row-color"><code>"hbase.mapred.output.quorum.port"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.REGION_SERVER_CLASS">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#REGION_SERVER_CLASS">REGION_SERVER_CLASS</a></code></div>
+<div class="col-last even-row-color"><code>"hbase.mapred.output.rs.class"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.REGION_SERVER_IMPL">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#REGION_SERVER_IMPL">REGION_SERVER_IMPL</a></code></div>
+<div class="col-last odd-row-color"><code>"hbase.mapred.output.rs.impl"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.WAL_OFF">public static final boolean</code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#WAL_OFF">WAL_OFF</a></code></div>
+<div class="col-last even-row-color"><code>false</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.WAL_ON">public static final boolean</code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#WAL_ON">WAL_ON</a></code></div>
+<div class="col-last odd-row-color"><code>true</code></div>
+<div class="col-first even-row-color"><code id="org.apache.hadoop.hbase.mapreduce.TableOutputFormat.WAL_PROPERTY">public static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#WAL_PROPERTY">WAL_PROPERTY</a></code></div>
+<div class="col-last even-row-color"><code>"hbase.mapreduce.tableoutputformat.write.wal"</code></div>
</div>
</li>
<li>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 7879626aac6..84eeab3d155 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -102692,6 +102692,12 @@ service.</div>
<dd>
<div class="block">Optional job parameter to specify a peer cluster.</div>
</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_COMMITTER_CLASS" class="member-name-link">OUTPUT_COMMITTER_CLASS</a> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TableOutputFormat</a></dt>
+<dd>
+<div class="block">The configuration key for specifying a custom
+ <code>OutputCommitter</code> implementation to be used by
+ <a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableOutputFormat</code></a>.</div>
+</dd>
<dt><a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_CONF_PREFIX" class="member-name-link">OUTPUT_CONF_PREFIX</a> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TableOutputFormat</a></dt>
<dd>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
@@ -140574,7 +140580,7 @@ service.</div>
</dd>
<dt><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#submitUnassignProcedureForDisablingTable(org.apache.hadoop.hbase.TableName,java.util.function.Consumer)" class="member-name-link">submitUnassignProcedureForDisablingTable(TableName, Consumer<TransitRegionStateProcedure>)</a> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.a [...]
<dd>
-<div class="block">Called by DsiableTableProcedure to unassign all regions for a table.</div>
+<div class="block">Called by DisableTableProcedure to unassign all regions for a table.</div>
</dd>
<dt><a href="org/apache/hadoop/hbase/procedure/Subprocedure.html" class="type-name-link" title="class in org.apache.hadoop.hbase.procedure">Subprocedure</a> - Class in <a href="org/apache/hadoop/hbase/procedure/package-summary.html">org.apache.hadoop.hbase.procedure</a></dt>
<dd>
diff --git a/devapidocs/member-search-index.js b/devapidocs/member-search-index.js
index fd24d332792..0f4651fb904 100644
--- a/devapidocs/member-search-index.js
+++ b/devapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache. [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache. [...]
\ No newline at end of file
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html b/devapidocs/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html
index 7e158b8de29..34625227672 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html
@@ -80,7 +80,7 @@ loadScripts(document, 'script');</script>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="annotations">@Private
-</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-70">IncrementalTableBackupClient</a></span>
+</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-73">IncrementalTableBackupClient</a></span>
<span class="extends-implements">extends <a href="TableBackupClient.html" title="class in org.apache.hadoop.hbase.backup.impl">TableBackupClient</a></span></div>
<div class="block">Incremental backup implementation. See the <a href="#execute()"><code>execute</code></a> method.</div>
</section>
@@ -253,7 +253,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-72">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-75">LOG</a></span></div>
</section>
</li>
</ul>
@@ -267,13 +267,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>IncrementalTableBackupClient</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-74">IncrementalTableBackupClient</a></span>()</div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-77">IncrementalTableBackupClient</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.client.Connection,java.lang.String,org.apache.hadoop.hbase.backup.BackupRequest)">
<h3>IncrementalTableBackupClient</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-77">IncrementalTableBackupClient</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-80">IncrementalTableBackupClient</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> backupId,
<a href="../BackupRequest.html" title="class in org.apache.hadoop.hbase.backup">BackupRequest</a> request)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -294,7 +294,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="filterMissingFiles(java.util.List)">
<h3>filterMissingFiles</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>></span> <span class="element-name"><a href="../../. [...]
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>></span> <span class="element-name"><a href="../../. [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -305,7 +305,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="isActiveWalPath(org.apache.hadoop.fs.Path)">
<h3>isActiveWalPath</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-100">isActiveWalPath</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.Path p)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-103">isActiveWalPath</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.Path p)</span></div>
<div class="block">Check if a given path is belongs to active WAL directory</div>
<dl class="notes">
<dt>Parameters:</dt>
@@ -318,14 +318,14 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getIndex(org.apache.hadoop.hbase.TableName,java.util.List)">
<h3>getIndex</h3>
-<div class="member-signature"><span class="modifiers">protected static</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-104">getIndex</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tbl,
+<div class="member-signature"><span class="modifiers">protected static</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-107">getIndex</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tbl,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> sTableList)</span></div>
</section>
</li>
<li>
<section class="detail" id="handleBulkLoad(java.util.List)">
<h3>handleBulkLoad</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="BulkLoad.html" title="class in org.apache.hadoop.hbase.backup.impl">BulkLoad</a>></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBack [...]
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="BulkLoad.html" title="class in org.apache.hadoop.hbase.backup.impl">BulkLoad</a>></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBack [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Reads bulk load records from backup table, iterates through the records and forms the paths for
bulk loaded hfiles. Copies the bulk loaded hfiles to backup destination. This method does NOT
@@ -342,7 +342,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="mergeSplitAndCopyBulkloadedHFiles(java.util.List,java.util.List,org.apache.hadoop.hbase.TableName,org.apache.hadoop.fs.FileSystem)">
<h3>mergeSplitAndCopyBulkloadedHFiles</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-184">mergeSplitAndCopyBulkloadedHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-187">mergeSplitAndCopyBulkloadedHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List [...]
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>> archiveFiles,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tn,
org.apache.hadoop.fs.FileSystem tgtFs)</span>
@@ -356,7 +356,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="mergeSplitAndCopyBulkloadedHFiles(java.util.List,org.apache.hadoop.hbase.TableName,org.apache.hadoop.fs.FileSystem)">
<h3>mergeSplitAndCopyBulkloadedHFiles</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-211">mergeSplitAndCopyBulkloadedHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-214">mergeSplitAndCopyBulkloadedHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List [...]
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tn,
org.apache.hadoop.fs.FileSystem tgtFs)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -369,7 +369,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="updateFileLists(java.util.List,java.util.List)">
<h3>updateFileLists</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-241">updateFileLists</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="h [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-244">updateFileLists</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="h [...]
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>> archiveFiles)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -381,7 +381,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="execute()">
<h3>execute</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-265">execute</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-268">execute</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="ColumnFamilyMismatchException.html" title="class in org.apache.hadoop.hbase.backup.impl">ColumnFamilyMismatchException</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="TableBackupClient.html#execute()">TableBackupClient</a></code></span></div>
@@ -400,7 +400,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="incrementalCopyHFiles(java.lang.String[],java.lang.String)">
<h3>incrementalCopyHFiles</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-333">incrementalCopyHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[] [...]
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-336">incrementalCopyHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[] [...]
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> backupDest)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -412,7 +412,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="deleteBulkLoadDirectory()">
<h3>deleteBulkLoadDirectory</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-363">deleteBulkLoadDirectory</a></span>()
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-366">deleteBulkLoadDirectory</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -423,7 +423,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="convertWALsToHFiles()">
<h3>convertWALsToHFiles</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-373">convertWALsToHFiles</a></span>()
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-376">convertWALsToHFiles</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -434,7 +434,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="tableExists(org.apache.hadoop.hbase.TableName,org.apache.hadoop.hbase.client.Connection)">
<h3>tableExists</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-393">tableExists</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-396">tableExists</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -446,7 +446,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="walToHFiles(java.util.List,java.util.List)">
<h3>walToHFiles</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-399">walToHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="htt [...]
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-402">walToHFiles</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="htt [...]
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>> tableList)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -458,7 +458,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="incrementalCopyBulkloadHFiles(org.apache.hadoop.fs.FileSystem,org.apache.hadoop.hbase.TableName)">
<h3>incrementalCopyBulkloadHFiles</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-431">incrementalCopyBulkloadHFiles</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.FileSystem tgtFs,
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-434">incrementalCopyBulkloadHFiles</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.FileSystem tgtFs,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tn)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -470,25 +470,25 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getBulkOutputDirForTable(org.apache.hadoop.hbase.TableName)">
<h3>getBulkOutputDirForTable</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-453">getBulkOutputDirForTable</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-456">getBulkOutputDirForTable</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</span></div>
</section>
</li>
<li>
<section class="detail" id="getBulkOutputDir()">
<h3>getBulkOutputDir</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-460">getBulkOutputDir</a></span>()</div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-463">getBulkOutputDir</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="getTargetDirForTable(org.apache.hadoop.hbase.TableName)">
<h3>getTargetDirForTable</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-468">getTargetDirForTable</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-471">getTargetDirForTable</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</span></div>
</section>
</li>
<li>
<section class="detail" id="setupRegionLocator()">
<h3>setupRegionLocator</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-475">setupRegionLocator</a></span>()
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-478">setupRegionLocator</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -499,7 +499,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getFullBackupIds()">
<h3>getFullBackupIds</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -510,7 +510,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="verifyCfCompatibility(java.util.Set,java.util.Map)">
<h3>verifyCfCompatibility</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-516">verifyCfCompatibility</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a><<a hre [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-519">verifyCfCompatibility</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a><<a hre [...]
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>> tablesToFullBackupId)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="ColumnFamilyMismatchException.html" title="class in org.apache.hadoop.hbase.backup.impl">ColumnFamilyMismatchException</a></span></div>
@@ -527,7 +527,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="areCfsCompatible(org.apache.hadoop.hbase.client.ColumnFamilyDescriptor[],org.apache.hadoop.hbase.client.ColumnFamilyDescriptor[])">
<h3>areCfsCompatible</h3>
-<div class="member-signature"><span class="modifiers">private static</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-556">areCfsCompatible</a></span><wbr><span class="parameters">(<a href="../../client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>[] currentCfs,
+<div class="member-signature"><span class="modifiers">private static</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html#line-566">areCfsCompatible</a></span><wbr><span class="parameters">(<a href="../../client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>[] currentCfs,
<a href="../../client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>[] backupCfs)</span></div>
</section>
</li>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/util/RestoreTool.html b/devapidocs/org/apache/hadoop/hbase/backup/util/RestoreTool.html
index 5a4b4fe8652..889f32e6fa0 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/util/RestoreTool.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/util/RestoreTool.html
@@ -78,7 +78,7 @@ loadScripts(document, 'script');</script>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="annotations">@Private
-</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-62">RestoreTool</a></span>
+</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-64">RestoreTool</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">A collection for methods used by multiple classes to restore HBase tables.</div>
</section>
@@ -263,13 +263,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-64">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-66">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="TABLE_AVAILABILITY_WAIT_TIME">
<h3>TABLE_AVAILABILITY_WAIT_TIME</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-65">TABLE_AVAILABILITY_WAIT_TIME</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-67">TABLE_AVAILABILITY_WAIT_TIME</a></span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
@@ -283,43 +283,43 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="ignoreDirs">
<h3>ignoreDirs</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-67">ignoreDirs</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-69">ignoreDirs</a></span></div>
</section>
</li>
<li>
<section class="detail" id="conf">
<h3>conf</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-68">conf</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-70">conf</a></span></div>
</section>
</li>
<li>
<section class="detail" id="backupRootPath">
<h3>backupRootPath</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-69">backupRootPath</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-71">backupRootPath</a></span></div>
</section>
</li>
<li>
<section class="detail" id="restoreRootDir">
<h3>restoreRootDir</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-70">restoreRootDir</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-72">restoreRootDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="backupId">
<h3>backupId</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-71">backupId</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-73">backupId</a></span></div>
</section>
</li>
<li>
<section class="detail" id="fs">
<h3>fs</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-72">fs</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-74">fs</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotMap">
<h3>snapshotMap</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a><<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<wbr>org.apache.hadoop.fs.Path></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/h [...]
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a><<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<wbr>org.apache.hadoop.fs.Path></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/h [...]
</section>
</li>
</ul>
@@ -333,7 +333,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>(org.apache.hadoop.conf.Configuration,org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path,java.lang.String)">
<h3>RestoreTool</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-77">RestoreTool</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration conf,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-79">RestoreTool</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path backupRootPath,
org.apache.hadoop.fs.Path restoreRootDir,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> backupId)</span>
@@ -355,7 +355,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableArchivePath(org.apache.hadoop.hbase.TableName)">
<h3>getTableArchivePath</h3>
-<div class="member-signature"><span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-93">getTableArchivePath</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</span>
+<div class="member-signature"><span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-95">getTableArchivePath</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">return value represent path for:
".../user/biadmin/backup1/default/t1_dn/backup_1396650096738/archive/data/default/t1_dn"</div>
@@ -372,7 +372,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getRegionList(org.apache.hadoop.hbase.TableName)">
<h3>getRegionList</h3>
-<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-113">getRegionList</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title=" [...]
+<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-115">getRegionList</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title=" [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Gets region list</div>
<dl class="notes">
@@ -388,7 +388,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="modifyTableSync(org.apache.hadoop.hbase.client.Connection,org.apache.hadoop.hbase.client.TableDescriptor)">
<h3>modifyTableSync</h3>
-<div class="member-signature"><span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-125">modifyTableSync</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<div class="member-signature"><span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-127">modifyTableSync</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> desc)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -400,7 +400,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="incrementalRestoreTable(org.apache.hadoop.hbase.client.Connection,org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path[],org.apache.hadoop.hbase.TableName[],org.apache.hadoop.hbase.TableName[],java.lang.String,boolean)">
<h3>incrementalRestoreTable</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-156">incrementalRestoreTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-158">incrementalRestoreTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
org.apache.hadoop.fs.Path tableBackupPath,
org.apache.hadoop.fs.Path[] logDirs,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>[] tableNames,
@@ -429,7 +429,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="fullRestoreTable(org.apache.hadoop.hbase.client.Connection,org.apache.hadoop.fs.Path,org.apache.hadoop.hbase.TableName,org.apache.hadoop.hbase.TableName,boolean,boolean,java.lang.String)">
<h3>fullRestoreTable</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-213">fullRestoreTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-215">fullRestoreTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
org.apache.hadoop.fs.Path tableBackupPath,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> newTableName,
@@ -446,7 +446,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableSnapshotPath(org.apache.hadoop.fs.Path,org.apache.hadoop.hbase.TableName,java.lang.String)">
<h3>getTableSnapshotPath</h3>
-<div class="member-signature"><span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-228">getTableSnapshotPath</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.Path backupRootPath,
+<div class="member-signature"><span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-230">getTableSnapshotPath</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.Path backupRootPath,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> backupId)</span></div>
<div class="block">Returns value represent path for path to backup table snapshot directory:
@@ -464,7 +464,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableInfoPath(org.apache.hadoop.hbase.TableName)">
<h3>getTableInfoPath</h3>
-<div class="member-signature"><span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-242">getTableInfoPath</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</span>
+<div class="member-signature"><span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-244">getTableInfoPath</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Returns value represent path for:
""/$USER/SBACKUP_ROOT/backup_id/namespace/table/.hbase-snapshot/
@@ -483,7 +483,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableDesc(org.apache.hadoop.hbase.TableName)">
<h3>getTableDesc</h3>
-<div class="member-signature"><span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-264">getTableDesc</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</span>
+<div class="member-signature"><span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-266">getTableDesc</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Get table descriptor</div>
<dl class="notes">
@@ -499,7 +499,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableDescriptor(org.apache.hadoop.fs.FileSystem,org.apache.hadoop.hbase.TableName,java.lang.String)">
<h3>getTableDescriptor</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-280">getTableDescriptor</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.FileSystem fileSys,
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-288">getTableDescriptor</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.FileSystem fileSys,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> lastIncrBackupId)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -512,7 +512,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="createAndRestoreTable(org.apache.hadoop.hbase.client.Connection,org.apache.hadoop.hbase.TableName,org.apache.hadoop.hbase.TableName,org.apache.hadoop.fs.Path,boolean,boolean,java.lang.String)">
<h3>createAndRestoreTable</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-290">createAndRestoreTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-298">createAndRestoreTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> newTableName,
org.apache.hadoop.fs.Path tableBackupPath,
@@ -529,7 +529,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getRegionList(org.apache.hadoop.fs.Path)">
<h3>getRegionList</h3>
-<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-377">getRegionList</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.Path tableAr [...]
+<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-391">getRegionList</a></span><wbr><span class="parameters">(org.apache.hadoop.fs.Path tableAr [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Gets region list</div>
<dl class="notes">
@@ -545,7 +545,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="generateBoundaryKeys(java.util.ArrayList)">
<h3>generateBoundaryKeys</h3>
-<div class="member-signature"><span class="return-type">byte[][]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-393">generateBoundaryKeys</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path> regionDirList)</span>
+<div class="member-signature"><span class="return-type">byte[][]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-407">generateBoundaryKeys</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path> regionDirList)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Calculate region boundaries and add all the column families to the table descriptor</div>
<dl class="notes">
@@ -561,7 +561,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="checkAndCreateTable(org.apache.hadoop.hbase.client.Connection,org.apache.hadoop.hbase.TableName,java.util.ArrayList,org.apache.hadoop.hbase.client.TableDescriptor,boolean)">
<h3>checkAndCreateTable</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-480">checkAndCreateTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-494">checkAndCreateTable</a></span><wbr><span class="parameters">(<a href="../../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> targetTableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><org.apache.hadoop.fs.Path> regionDirList,
<a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd,
@@ -584,7 +584,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="configureForRestoreJob(boolean)">
<h3>configureForRestoreJob</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-540">configureForRestoreJob</a></span><wbr><span class="parameters">(boolean keepOriginalSplits)</span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html#line-554">configureForRestoreJob</a></span><wbr><span class="parameters">(boolean keepOriginalSplits)</span></div>
</section>
</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 b72cc686739..79d3707cbc0 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
@@ -5925,7 +5925,7 @@ PRESP><br><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.ba
<div class="col-second odd-row-color"><span class="type-name-label">AssignmentManager.</span><code><a href="../master/assignment/AssignmentManager.html#submitUnassignProcedureForDisablingTable(org.apache.hadoop.hbase.TableName,java.util.function.Consumer)" class="member-name-link">submitUnassignProcedureForDisablingTable</a><wbr>(<a href="../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a><<a href="../master/assignment/TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>> submit)</code></div>
<div class="col-last odd-row-color">
-<div class="block">Called by DsiableTableProcedure to unassign all regions for a table.</div>
+<div class="block">Called by DisableTableProcedure to unassign all regions for a table.</div>
</div>
</div>
</section>
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
index 5812162f91d..0f84d42845a 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
@@ -83,7 +83,7 @@ loadScripts(document, 'script');</script>
<dd><a href="TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TableOutputFormat</a><<a href="TableOutputFormat.html" title="type parameter in TableOutputFormat">KEY</a>></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">protected class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-148">TableOutputFormat.TableRecordWriter</a></span>
+<div class="type-signature"><span class="modifiers">protected class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-159">TableOutputFormat.TableRecordWriter</a></span>
<span class="extends-implements">extends org.apache.hadoop.mapreduce.RecordWriter<KEY,<wbr><a href="../client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>></span></div>
<div class="block">Writes the reducer output to an HBase table.</div>
</section>
@@ -165,19 +165,19 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="connection">
<h3>connection</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-150">connection</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-161">connection</a></span></div>
</section>
</li>
<li>
<section class="detail" id="mutator">
<h3>mutator</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../client/BufferedMutator.html" title="interface in org.apache.hadoop.hbase.client">BufferedMutator</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-151">mutator</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../client/BufferedMutator.html" title="interface in org.apache.hadoop.hbase.client">BufferedMutator</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-162">mutator</a></span></div>
</section>
</li>
<li>
<section class="detail" id="useWriteAheadLogging">
<h3>useWriteAheadLogging</h3>
-<div class="member-signature"><span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-152">useWriteAheadLogging</a></span></div>
+<div class="member-signature"><span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-163">useWriteAheadLogging</a></span></div>
</section>
</li>
</ul>
@@ -191,7 +191,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>TableRecordWriter</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-154">TableRecordWriter</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-165">TableRecordWriter</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -210,7 +210,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="close(org.apache.hadoop.mapreduce.TaskAttemptContext)">
<h3>close</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-168">close</a></span><wbr><span class="parameters">(org.apache.hadoop.mapreduce.TaskAttemptContext context)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-179">close</a></span><wbr><span class="parameters">(org.apache.hadoop.mapreduce.TaskAttemptContext context)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Closes the writer, in this case flush table commits.</div>
<dl class="notes">
@@ -232,7 +232,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="write(KEY,org.apache.hadoop.hbase.client.Mutation)">
<h3 id="write(java.lang.Object,org.apache.hadoop.hbase.client.Mutation)">write</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-188">write</a></span><wbr><span class="parameters">(<a href="TableOutputFormat.html" title="type parameter in TableOutputFormat">KEY</a> key,
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html#line-199">write</a></span><wbr><span class="parameters">(<a href="TableOutputFormat.html" title="type parameter in TableOutputFormat">KEY</a> key,
<a href="../client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a> value)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Writes a key/value pair into the table.</div>
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
index fe4740ffada..db99373460e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
@@ -84,7 +84,7 @@ loadScripts(document, 'script');</script>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Public
-</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-52">TableOutputFormat</a><KEY></span>
+</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-53">TableOutputFormat</a><KEY></span>
<span class="extends-implements">extends org.apache.hadoop.mapreduce.OutputFormat<KEY,<wbr><a href="../client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>>
implements org.apache.hadoop.conf.Configurable</span></div>
<div class="block">Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output
@@ -132,58 +132,65 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<div class="block">Optional job parameter to specify a peer cluster.</div>
</div>
<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#OUTPUT_CONF_PREFIX" class="member-name-link">OUTPUT_CONF_PREFIX</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#OUTPUT_COMMITTER_CLASS" class="member-name-link">OUTPUT_COMMITTER_CLASS</a></code></div>
<div class="col-last odd-row-color">
-<div class="block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0.</div>
-</div>
+<div class="block">The configuration key for specifying a custom
+ <code>OutputCommitter</code> implementation to be used by
+ <a href="TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableOutputFormat</code></a>.</div>
</div>
<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#OUTPUT_TABLE" class="member-name-link">OUTPUT_TABLE</a></code></div>
+<div class="col-second even-row-color"><code><a href="#OUTPUT_CONF_PREFIX" class="member-name-link">OUTPUT_CONF_PREFIX</a></code></div>
<div class="col-last even-row-color">
-<div class="block">Job parameter that specifies the output table.</div>
-</div>
-<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#QUORUM_ADDRESS" class="member-name-link">QUORUM_ADDRESS</a></code></div>
-<div class="col-last odd-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0.</div>
</div>
</div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#OUTPUT_TABLE" class="member-name-link">OUTPUT_TABLE</a></code></div>
+<div class="col-last odd-row-color">
+<div class="block">Job parameter that specifies the output table.</div>
+</div>
<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#QUORUM_PORT" class="member-name-link">QUORUM_PORT</a></code></div>
+<div class="col-second even-row-color"><code><a href="#QUORUM_ADDRESS" class="member-name-link">QUORUM_ADDRESS</a></code></div>
<div class="col-last even-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0.</div>
</div>
</div>
<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#REGION_SERVER_CLASS" class="member-name-link">REGION_SERVER_CLASS</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#QUORUM_PORT" class="member-name-link">QUORUM_PORT</a></code></div>
<div class="col-last odd-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0.</div>
+<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0.</div>
</div>
</div>
<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#REGION_SERVER_IMPL" class="member-name-link">REGION_SERVER_IMPL</a></code></div>
+<div class="col-second even-row-color"><code><a href="#REGION_SERVER_CLASS" class="member-name-link">REGION_SERVER_CLASS</a></code></div>
<div class="col-last even-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0.</div>
</div>
</div>
-<div class="col-first odd-row-color"><code>static final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#WAL_OFF" class="member-name-link">WAL_OFF</a></code></div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#REGION_SERVER_IMPL" class="member-name-link">REGION_SERVER_IMPL</a></code></div>
<div class="col-last odd-row-color">
-<div class="block">Property value to disable write-ahead logging</div>
+<div class="block"><span class="deprecated-label">Deprecated.</span>
+<div class="deprecation-comment">Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0.</div>
+</div>
</div>
<div class="col-first even-row-color"><code>static final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#WAL_ON" class="member-name-link">WAL_ON</a></code></div>
+<div class="col-second even-row-color"><code><a href="#WAL_OFF" class="member-name-link">WAL_OFF</a></code></div>
<div class="col-last even-row-color">
-<div class="block">Property value to use write-ahead logging</div>
+<div class="block">Property value to disable write-ahead logging</div>
</div>
-<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#WAL_PROPERTY" class="member-name-link">WAL_PROPERTY</a></code></div>
+<div class="col-first odd-row-color"><code>static final boolean</code></div>
+<div class="col-second odd-row-color"><code><a href="#WAL_ON" class="member-name-link">WAL_ON</a></code></div>
<div class="col-last odd-row-color">
+<div class="block">Property value to use write-ahead logging</div>
+</div>
+<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="#WAL_PROPERTY" class="member-name-link">WAL_PROPERTY</a></code></div>
+<div class="col-last even-row-color">
<div class="block">Set this to <a href="#WAL_OFF"><code>WAL_OFF</code></a> to turn off write-ahead logging (WAL)</div>
</div>
</div>
@@ -257,13 +264,13 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-55">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-56">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="OUTPUT_TABLE">
<h3>OUTPUT_TABLE</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-58">OUTPUT_TABLE</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-59">OUTPUT_TABLE</a></span></div>
<div class="block">Job parameter that specifies the output table.</div>
<dl class="notes">
<dt>See Also:</dt>
@@ -278,7 +285,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="WAL_ON">
<h3>WAL_ON</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-61">WAL_ON</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-62">WAL_ON</a></span></div>
<div class="block">Property value to use write-ahead logging</div>
<dl class="notes">
<dt>See Also:</dt>
@@ -293,7 +300,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="WAL_OFF">
<h3>WAL_OFF</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-64">WAL_OFF</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-65">WAL_OFF</a></span></div>
<div class="block">Property value to disable write-ahead logging</div>
<dl class="notes">
<dt>See Also:</dt>
@@ -308,7 +315,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="WAL_PROPERTY">
<h3>WAL_PROPERTY</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-67">WAL_PROPERTY</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-68">WAL_PROPERTY</a></span></div>
<div class="block">Set this to <a href="#WAL_OFF"><code>WAL_OFF</code></a> to turn off write-ahead logging (WAL)</div>
<dl class="notes">
<dt>See Also:</dt>
@@ -323,7 +330,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="OUTPUT_CLUSTER">
<h3>OUTPUT_CLUSTER</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-75">OUTPUT_CLUSTER</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-76">OUTPUT_CLUSTER</a></span></div>
<div class="block">Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying
between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</div>
<dl class="notes">
@@ -338,10 +345,29 @@ implements org.apache.hadoop.conf.Configurable</span></div>
</section>
</li>
<li>
+<section class="detail" id="OUTPUT_COMMITTER_CLASS">
+<h3>OUTPUT_COMMITTER_CLASS</h3>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-85">OUTPUT_COMMITTER_CLASS</a></span></div>
+<div class="block">The configuration key for specifying a custom
+ <code>OutputCommitter</code> implementation to be used by
+ <a href="TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableOutputFormat</code></a>. The value for this property should be the fully qualified class name
+ of the custom committer. If this property is not set, <a href="TableOutputCommitter.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableOutputCommitter</code></a> will be used
+ by default.</div>
+<dl class="notes">
+<dt>See Also:</dt>
+<dd>
+<ul class="see-list">
+<li><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.TableOutputFormat.OUTPUT_COMMITTER_CLASS">Constant Field Values</a></li>
+</ul>
+</dd>
+</dl>
+</section>
+</li>
+<li>
<section class="detail" id="OUTPUT_CONF_PREFIX">
<h3>OUTPUT_CONF_PREFIX</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-87">OUTPUT_CONF_PREFIX</a></span></div>
+</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-98">OUTPUT_CONF_PREFIX</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for
specifying configurations any more, you can specify any configuration with the
@@ -366,7 +392,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<section class="detail" id="QUORUM_ADDRESS">
<h3>QUORUM_ADDRESS</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-98">QUORUM_ADDRESS</a></span></div>
+</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-109">QUORUM_ADDRESS</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0. Use <a href="#OUTPUT_CLUSTER"><code>OUTPUT_CLUSTER</code></a> to specify the
peer cluster instead.</div>
@@ -388,7 +414,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<section class="detail" id="QUORUM_PORT">
<h3>QUORUM_PORT</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-107">QUORUM_PORT</a></span></div>
+</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-118">QUORUM_PORT</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for
specifying configurations any more, you can specify any configuration with the
@@ -409,7 +435,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<section class="detail" id="REGION_SERVER_CLASS">
<h3>REGION_SERVER_CLASS</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-115">REGION_SERVER_CLASS</a></span></div>
+</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-126">REGION_SERVER_CLASS</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from
long ago, see HBASE-6044.</div>
@@ -429,7 +455,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<section class="detail" id="REGION_SERVER_IMPL">
<h3>REGION_SERVER_IMPL</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-122">REGION_SERVER_IMPL</a></span></div>
+</span><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-133">REGION_SERVER_IMPL</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from
long ago, see HBASE-6044.</div>
@@ -448,7 +474,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="conf">
<h3>conf</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-126">conf</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-137">conf</a></span></div>
<div class="block">The configuration.</div>
</section>
</li>
@@ -463,7 +489,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="<init>()">
<h3>TableOutputFormat</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-53">TableOutputFormat</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-54">TableOutputFormat</a></span>()</div>
</section>
</li>
</ul>
@@ -477,7 +503,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="createConnection(org.apache.hadoop.conf.Configuration)">
<h3>createConnection</h3>
-<div class="member-signature"><span class="modifiers">private static</span> <span class="return-type"><a href="../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-128">createConnection</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration conf)</span>
+<div class="member-signature"><span class="modifiers">private static</span> <span class="return-type"><a href="../client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-139">createConnection</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration conf)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -488,7 +514,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="getRecordWriter(org.apache.hadoop.mapreduce.TaskAttemptContext)">
<h3>getRecordWriter</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.mapreduce.RecordWriter<<a href="TableOutputFormat.html" title="type parameter in TableOutputFormat">KEY</a>,<wbr><a href="../client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-210">getRecordWriter</a></ [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.mapreduce.RecordWriter<<a href="TableOutputFormat.html" title="type parameter in TableOutputFormat">KEY</a>,<wbr><a href="../client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-221">getRecordWriter</a></ [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">Creates a new record writer. Be aware that the baseline javadoc gives the impression that there
@@ -511,7 +537,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="checkOutputSpecs(org.apache.hadoop.mapreduce.JobContext)">
<h3>checkOutputSpecs</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-223">checkOutputSpecs</a></span><wbr><span class="parameters">(org.apache.hadoop.mapreduce.JobContext context)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-234">checkOutputSpecs</a></span><wbr><span class="parameters">(org.apache.hadoop.mapreduce.JobContext context)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">Checks if the output table exists and is enabled.</div>
@@ -535,7 +561,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="getOutputCommitter(org.apache.hadoop.mapreduce.TaskAttemptContext)">
<h3>getOutputCommitter</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.mapreduce.OutputCommitter</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-252">getOutputCommitter</a></span><wbr><span class="parameters">(org.apache.hadoop.mapreduce.TaskAttemptContext context)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.mapreduce.OutputCommitter</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-263">getOutputCommitter</a></span><wbr><span class="parameters">(org.apache.hadoop.mapreduce.TaskAttemptContext context)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">Returns the output committer.</div>
@@ -561,7 +587,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="getConf()">
<h3>getConf</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-258">getConf</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-280">getConf</a></span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>getConf</code> in interface <code>org.apache.hadoop.conf.Configurable</code></dd>
@@ -571,7 +597,7 @@ implements org.apache.hadoop.conf.Configurable</span></div>
<li>
<section class="detail" id="setConf(org.apache.hadoop.conf.Configuration)">
<h3>setConf</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-263">setConf</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration otherConf)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#line-285">setConf</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration otherConf)</span></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>setConf</code> in interface <code>org.apache.hadoop.conf.Configurable</code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index 0fa945b4761..c6485d3aed1 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -820,7 +820,7 @@ loadScripts(document, 'script');</script>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#submitUnassignProcedureForDisablingTable(org.apache.hadoop.hbase.TableName,java.util.function.Consumer)" class="member-name-link">submitUnassignProcedureForDisablingTable</a><wbr>(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a><<a href="TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>> submit)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Called by DsiableTableProcedure to unassign all regions for a table.</div>
+<div class="block">Called by DisableTableProcedure to unassign all regions for a table.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Vo [...]
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#transitStateAndUpdate(org.apache.hadoop.hbase.master.assignment.RegionStateNode,org.apache.hadoop.hbase.master.RegionState.State,org.apache.hadoop.hbase.master.RegionState.State...)" class="member-name-link">transitStateAndUpdate</a><wbr>(<a href="RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a> regionNode,
@@ -2123,7 +2123,7 @@ org.apache.zookeeper.KeeperException</span></div>
<h3>submitUnassignProcedureForDisablingTable</h3>
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line-1121">submitUnassignProcedureForDisablingTable</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a><<a href="TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>> submit)</span></div>
-<div class="block">Called by DsiableTableProcedure to unassign all regions for a table. Will skip submit unassign
+<div class="block">Called by DisableTableProcedure to unassign all regions for a table. Will skip submit unassign
procedure if the region is in transition, so you may need to call this method multiple times.</div>
<dl class="notes">
<dt>Parameters:</dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TransitRegionStateProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TransitRegionStateProcedure.html
index e7be868f22b..6c165ba65aa 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TransitRegionStateProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TransitRegionStateProcedure.html
@@ -272,7 +272,7 @@ loadScripts(document, 'script');</script>
<div class="col-second even-row-color"><span class="type-name-label">AssignmentManager.</span><code><a href="../AssignmentManager.html#submitUnassignProcedureForDisablingTable(org.apache.hadoop.hbase.TableName,java.util.function.Consumer)" class="member-name-link">submitUnassignProcedureForDisablingTable</a><wbr>(<a href="../../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a><<a href="../TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a>> submit)</code></div>
<div class="col-last even-row-color">
-<div class="block">Called by DsiableTableProcedure to unassign all regions for a table.</div>
+<div class="block">Called by DisableTableProcedure to unassign all regions for a table.</div>
</div>
</div>
<div class="caption"><span>Constructors in <a href="../package-summary.html">org.apache.hadoop.hbase.master.assignment</a> with parameters of type <a href="../TransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TransitRegionStateProcedure</a></span></div>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html
index afdf14115a6..3a0243cd5ec 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html
@@ -88,7 +88,7 @@ loadScripts(document, 'script');</script>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Private
-</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-69">SnapshotProcedure</a></span>
+</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-71">SnapshotProcedure</a></span>
<span class="extends-implements">extends <a href="AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState></span></div>
<div class="block">A procedure used to take snapshot on tables.</div>
</section>
@@ -352,85 +352,85 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-71">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-73">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="metricsSnapshot">
<h3>metricsSnapshot</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="../MetricsSnapshot.html" title="class in org.apache.hadoop.hbase.master">MetricsSnapshot</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-72">metricsSnapshot</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="../MetricsSnapshot.html" title="class in org.apache.hadoop.hbase.master">MetricsSnapshot</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-74">metricsSnapshot</a></span></div>
</section>
</li>
<li>
<section class="detail" id="conf">
<h3>conf</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-74">conf</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-76">conf</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshot">
<h3>snapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-75">snapshot</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-77">snapshot</a></span></div>
</section>
</li>
<li>
<section class="detail" id="rootDir">
<h3>rootDir</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-76">rootDir</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-78">rootDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotDir">
<h3>snapshotDir</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-77">snapshotDir</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-79">snapshotDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="workingDir">
<h3>workingDir</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-78">workingDir</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-80">workingDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="workingDirFS">
<h3>workingDirFS</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-79">workingDirFS</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-81">workingDirFS</a></span></div>
</section>
</li>
<li>
<section class="detail" id="rootFs">
<h3>rootFs</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-80">rootFs</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-82">rootFs</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotTable">
<h3>snapshotTable</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-81">snapshotTable</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-83">snapshotTable</a></span></div>
</section>
</li>
<li>
<section class="detail" id="status">
<h3>status</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-82">status</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-84">status</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotManifest">
<h3>snapshotManifest</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../snapshot/SnapshotManifest.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifest</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-83">snapshotManifest</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../snapshot/SnapshotManifest.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifest</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-85">snapshotManifest</a></span></div>
</section>
</li>
<li>
<section class="detail" id="htd">
<h3>htd</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-84">htd</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-86">htd</a></span></div>
</section>
</li>
<li>
<section class="detail" id="retryCounter">
<h3>retryCounter</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-86">retryCounter</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-88">retryCounter</a></span></div>
</section>
</li>
</ul>
@@ -444,13 +444,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>SnapshotProcedure</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-88">SnapshotProcedure</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-90">SnapshotProcedure</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv,org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription)">
<h3>SnapshotProcedure</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-91">SnapshotProcedure</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-93">SnapshotProcedure</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription snapshot)</span></div>
</section>
</li>
@@ -465,7 +465,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableName()">
<h3>getTableName</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-96">getTableName</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-98">getTableName</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="TableProcedureInterface.html#getTableName()">TableProcedureInterface</a></code></span></div>
<div class="block">Returns the name of the table the procedure is operating on</div>
<dl class="notes">
@@ -479,7 +479,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getTableOperationType()">
<h3>getTableOperationType</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="TableProcedureInterface.TableOperationType.html" title="enum class in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-101">getTableOperationType</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="TableProcedureInterface.TableOperationType.html" title="enum class in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-103">getTableOperationType</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="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) we can abort those
@@ -497,7 +497,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="executeFromState(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState)">
<h3>executeFromState</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="../../procedure2/StateMachineProcedure.Flow.html" title="enum class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-106">executeFromState</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" ti [...]
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="../../procedure2/StateMachineProcedure.Flow.html" title="enum class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-108">executeFromState</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" ti [...]
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState state)</span>
throws <span class="exceptions"><a href="../../procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
<a href="../../procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
@@ -521,7 +521,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="rollbackState(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState)">
<h3>rollbackState</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-181">rollbackState</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-189">rollbackState</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState state)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
@@ -540,7 +540,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="isRollbackSupported(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState)">
<h3>isRollbackSupported</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-195">isRollbackSupported</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState state)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-203">isRollbackSupported</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState state)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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>
@@ -553,7 +553,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getState(int)">
<h3>getState</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-200">getState</a></span><wbr><span class="parameters">(int stateId)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-208">getState</a></span><wbr><span class="parameters">(int stateId)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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 class="notes">
@@ -569,7 +569,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getStateId(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState)">
<h3>getStateId</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-205">getStateId</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState state)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-213">getStateId</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState state)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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 class="notes">
@@ -585,7 +585,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getInitialState()">
<h3>getInitialState</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-210">getInitialState</a></span>()</div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-218">getInitialState</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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 class="notes">
@@ -599,7 +599,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="prepareSnapshot(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>prepareSnapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-215">prepareSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-223">prepareSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="../../procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
@@ -612,7 +612,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="prepareSnapshotEnv(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>prepareSnapshotEnv</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-231">prepareSnapshotEnv</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-239">prepareSnapshotEnv</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -623,7 +623,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="setTimeoutFailure(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>setTimeoutFailure</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-248">setTimeoutFailure</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-256">setTimeoutFailure</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../procedure2/Procedure.html#setTimeoutFailure(TEnvironment)">Procedure</a></code></span></div>
<div class="block">Called by the ProcedureExecutor when the timeout set by setTimeout() is expired.
<p/>
@@ -645,13 +645,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="isAnySplitOrMergeProcedureRunning(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>isAnySplitOrMergeProcedureRunning</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-255">isAnySplitOrMergeProcedureRunning</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span></div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-263">isAnySplitOrMergeProcedureRunning</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span></div>
</section>
</li>
<li>
<section class="detail" id="loadTableDescriptorSnapshot(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>loadTableDescriptorSnapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-264">loadTableDescriptorSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apac [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-272">loadTableDescriptorSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apac [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -662,7 +662,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="preSnapshot(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>preSnapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-276">preSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-284">preSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -673,7 +673,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="postSnapshot(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>postSnapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-280">postSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-288">postSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -684,7 +684,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="verifySnapshot(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>verifySnapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-287">verifySnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-295">verifySnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -695,7 +695,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="completeSnapshot(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>completeSnapshot</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-305">completeSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-313">completeSnapshot</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -706,7 +706,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="snapshotSplitRegions(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>snapshotSplitRegions</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-318">snapshotSplitRegions</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-326">snapshotSplitRegions</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -717,7 +717,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="snapshotClosedRegions(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>snapshotClosedRegions</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-324">snapshotClosedRegions</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-332">snapshotClosedRegions</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -728,13 +728,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getDefaultRegionReplica(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>getDefaultRegionReplica</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html" title="class or interface in java.util.stream" class="external-link">Stream</a><<a href="../../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/ [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html" title="class or interface in java.util.stream" class="external-link">Stream</a><<a href="../../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/ [...]
</section>
</li>
<li>
<section class="detail" id="snapshotSplitOrClosedRegions(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv,java.util.List,java.lang.String)">
<h3>snapshotSplitOrClosedRegions</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-334">snapshotSplitOrClosedRegions</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-342">snapshotSplitOrClosedRegions</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="../../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> threadPoolName)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -747,7 +747,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="snapshotMobRegion(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>snapshotMobRegion</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-352">snapshotMobRegion</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-360">snapshotMobRegion</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -758,7 +758,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="serializeStateData(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer)">
<h3>serializeStateData</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-373">serializeStateData</a></span><wbr><span class="parameters">(<a href="../../procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</span>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-381">serializeStateData</a></span><wbr><span class="parameters">(<a href="../../procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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 persist (e.g. input arguments or
@@ -776,7 +776,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="deserializeStateData(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer)">
<h3>deserializeStateData</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-380">deserializeStateData</a></span><wbr><span class="parameters">(<a href="../../procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</span>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-388">deserializeStateData</a></span><wbr><span class="parameters">(<a href="../../procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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 state.</div>
@@ -793,13 +793,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="createRemoteSnapshotProcedures(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>createRemoteSnapshotProcedures</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-387">createRemot [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-395">createRemot [...]
</section>
</li>
<li>
<section class="detail" id="toStringClassDetails(java.lang.StringBuilder)">
<h3>toStringClassDetails</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-393">toStringClassDetails</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuilder.html" title="class or interface in java.lang" class="external-link">StringBuilder</ [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-401">toStringClassDetails</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuilder.html" title="class or interface in java.lang" class="external-link">StringBuilder</ [...]
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../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>
<dl class="notes">
@@ -813,13 +813,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getSnapshotDesc()">
<h3>getSnapshotDesc</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-399">getSnapshotDesc</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-407">getSnapshotDesc</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="afterReplay(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)">
<h3>afterReplay</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-403">afterReplay</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-411">afterReplay</a></span><wbr><span class="parameters">(<a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../procedure2/Procedure.html#afterReplay(TEnvironment)">Procedure</a></code></span></div>
<div class="block">Called when the procedure is ready to be added to the queue after the loading/replay operation.</div>
<dl class="notes">
@@ -831,13 +831,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="getSnapshot()">
<h3>getSnapshot</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-422">getSnapshot</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-430">getSnapshot</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="markSnapshotCorrupted()">
<h3>markSnapshotCorrupted</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-426">markSnapshotCorrupted</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-434">markSnapshotCorrupted</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -848,7 +848,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="isSnapshotCorrupted()">
<h3>isSnapshotCorrupted</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-434">isSnapshotCorrupted</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html#line-442">isSnapshotCorrupted</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html b/devapidocs/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html
index 5534ad14e42..a3f0eb7007b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html
@@ -88,7 +88,7 @@ loadScripts(document, 'script');</script>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Private
-</span><span class="modifiers">public abstract class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-68">TakeSnapshotHandler</a></span>
+</span><span class="modifiers">public abstract class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-70">TakeSnapshotHandler</a></span>
<span class="extends-implements">extends <a href="../../executor/EventHandler.html" title="class in org.apache.hadoop.hbase.executor">EventHandler</a>
implements <a href="../SnapshotSentinel.html" title="interface in org.apache.hadoop.hbase.master">SnapshotSentinel</a>, <a href="../../errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a></span></div>
<div class="block">A handler for taking snapshots from the master. This is not a subclass of TableEventHandler
@@ -302,13 +302,13 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-71">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">org.slf4j.Logger</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-73">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT">
<h3>HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-72">HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-74">HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT</a></span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
@@ -322,109 +322,109 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="finished">
<h3>finished</h3>
-<div class="member-signature"><span class="modifiers">private volatile</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-75">finished</a></span></div>
+<div class="member-signature"><span class="modifiers">private volatile</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-77">finished</a></span></div>
</section>
</li>
<li>
<section class="detail" id="master">
<h3>master</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-78">master</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-80">master</a></span></div>
</section>
</li>
<li>
<section class="detail" id="metricsSnapshot">
<h3>metricsSnapshot</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../MetricsSnapshot.html" title="class in org.apache.hadoop.hbase.master">MetricsSnapshot</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-79">metricsSnapshot</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../MetricsSnapshot.html" title="class in org.apache.hadoop.hbase.master">MetricsSnapshot</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-81">metricsSnapshot</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshot">
<h3>snapshot</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-80">snapshot</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-82">snapshot</a></span></div>
</section>
</li>
<li>
<section class="detail" id="conf">
<h3>conf</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-81">conf</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.conf.Configuration</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-83">conf</a></span></div>
</section>
</li>
<li>
<section class="detail" id="rootFs">
<h3>rootFs</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-82">rootFs</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-84">rootFs</a></span></div>
</section>
</li>
<li>
<section class="detail" id="workingDirFs">
<h3>workingDirFs</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-83">workingDirFs</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.FileSystem</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-85">workingDirFs</a></span></div>
</section>
</li>
<li>
<section class="detail" id="rootDir">
<h3>rootDir</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-84">rootDir</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-86">rootDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotDir">
<h3>snapshotDir</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-85">snapshotDir</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-87">snapshotDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="workingDir">
<h3>workingDir</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-86">workingDir</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type">org.apache.hadoop.fs.Path</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-88">workingDir</a></span></div>
</section>
</li>
<li>
<section class="detail" id="verifier">
<h3>verifier</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="MasterSnapshotVerifier.html" title="class in org.apache.hadoop.hbase.master.snapshot">MasterSnapshotVerifier</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-87">verifier</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="MasterSnapshotVerifier.html" title="class in org.apache.hadoop.hbase.master.snapshot">MasterSnapshotVerifier</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-89">verifier</a></span></div>
</section>
</li>
<li>
<section class="detail" id="monitor">
<h3>monitor</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-88">monitor</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-90">monitor</a></span></div>
</section>
</li>
<li>
<section class="detail" id="tableLock">
<h3>tableLock</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="../locking/LockManager.MasterLock.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager.MasterLock</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-89">tableLock</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type"><a href="../locking/LockManager.MasterLock.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager.MasterLock</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-91">tableLock</a></span></div>
</section>
</li>
<li>
<section class="detail" id="status">
<h3>status</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-90">status</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-92">status</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotTable">
<h3>snapshotTable</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-91">snapshotTable</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-93">snapshotTable</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotManifest">
<h3>snapshotManifest</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../snapshot/SnapshotManifest.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifest</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-92">snapshotManifest</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="../../snapshot/SnapshotManifest.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifest</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-94">snapshotManifest</a></span></div>
</section>
</li>
<li>
<section class="detail" id="snapshotManager">
<h3>snapshotManager</h3>
-<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-93">snapshotManager</a></span></div>
+<div class="member-signature"><span class="modifiers">protected final</span> <span class="return-type"><a href="SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-95">snapshotManager</a></span></div>
</section>
</li>
<li>
<section class="detail" id="lockAcquireTimeoutMs">
<h3>lockAcquireTimeoutMs</h3>
-<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-100">lockAcquireTimeoutMs</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-102">lockAcquireTimeoutMs</a></span></div>
<div class="block">Snapshot creation requires table lock. If any region of the table is in transition, table lock
cannot be acquired by LockProcedure and hence snapshot creation could hang for potentially very
long time. This timeout will ensure snapshot creation fails-fast by waiting for only given
@@ -434,7 +434,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="htd">
<h3>htd</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-102">htd</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-104">htd</a></span></div>
</section>
</li>
</ul>
@@ -448,7 +448,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription,org.apache.hadoop.hbase.master.MasterServices,org.apache.hadoop.hbase.master.snapshot.SnapshotManager)">
<h3>TakeSnapshotHandler</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-112">TakeSnapshotHandler</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription snapshot,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-114">TakeSnapshotHandler</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription snapshot,
<a href="../MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> masterServices,
<a href="SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> snapshotManager)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -475,7 +475,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="loadTableDescriptor()">
<h3>loadTableDescriptor</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-149">loadTableDescriptor</a></span>()
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="../../client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-151">loadTableDescriptor</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
@@ -486,7 +486,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="prepare()">
<h3>prepare</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="TakeSnapshotHandler.html" title="class in org.apache.hadoop.hbase.master.snapshot">TakeSnapshotHandler</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-161">prepare</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="TakeSnapshotHandler.html" title="class in org.apache.hadoop.hbase.master.snapshot">TakeSnapshotHandler</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-163">prepare</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class: <code><a href="../../executor/EventHandler.html#prepare()">EventHandler</a></code></span></div>
<div class="block">Event handlers should do all the necessary checks in this method (rather than in the
@@ -507,7 +507,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="process()">
<h3>process</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-183">process</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-185">process</a></span>()</div>
<div class="block">Execute the core common portions of taking a snapshot. The <a href="#snapshotRegions(java.util.List)"><code>snapshotRegions(List)</code></a> call
should get implemented for each snapshot flavor.</div>
<dl class="notes">
@@ -519,7 +519,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="downgradeToSharedTableLock()">
<h3>downgradeToSharedTableLock</h3>
-<div class="member-signature"><span class="modifiers">protected abstract</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-276">downgradeToSharedTableLock</a></span>()</div>
+<div class="member-signature"><span class="modifiers">protected abstract</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-286">downgradeToSharedTableLock</a></span>()</div>
<div class="block">When taking snapshot, first we must acquire the exclusive table lock to confirm that there are
no ongoing merge/split procedures. But later, we should try our best to release the exclusive
lock as this may hurt the availability, because we need to hold the shared lock when assigning
@@ -531,7 +531,7 @@ implements <a href="../SnapshotSentinel.html" title="interface in org.apache.had
<li>
<section class="detail" id="snapshotRegions(java.util.List)">
<h3>snapshotRegions</h3>
-<div class="member-signature"><span class="modifiers">protected abstract</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-281">snapshotRegions</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a h [...]
+<div class="member-signature"><span class="modifiers">protected abstract</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-291">snapshotRegions</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a h [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
org.apache.zookeeper.KeeperException</span></div>
<div class="block">Snapshot the specified regions</div>
@@ -545,7 +545,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="snapshotDisabledRegion(org.apache.hadoop.hbase.client.RegionInfo)">
<h3>snapshotDisabledRegion</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-287">snapshotDisabledRegion</a></span><wbr><span class="parameters">(<a href="../../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</span>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-297">snapshotDisabledRegion</a></span><wbr><span class="parameters">(<a href="../../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Take a snapshot of the specified disabled region</div>
<dl class="notes">
@@ -557,7 +557,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="cancel(java.lang.String)">
<h3>cancel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-294">cancel</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> why)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-304">cancel</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> why)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../SnapshotSentinel.html#cancel(java.lang.String)">SnapshotSentinel</a></code></span></div>
<div class="block">Actively cancel a running snapshot.</div>
<dl class="notes">
@@ -571,7 +571,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="isFinished()">
<h3>isFinished</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-305">isFinished</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-315">isFinished</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../SnapshotSentinel.html#isFinished()">SnapshotSentinel</a></code></span></div>
<div class="block">Check to see if the snapshot is finished, where finished may be success or failure.</div>
<dl class="notes">
@@ -586,7 +586,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="getCompletionTimestamp()">
<h3>getCompletionTimestamp</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-310">getCompletionTimestamp</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-320">getCompletionTimestamp</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../SnapshotSentinel.html#getCompletionTimestamp()">SnapshotSentinel</a></code></span></div>
<div class="block">Returns -1 if the snapshot is in progress, otherwise the completion timestamp.</div>
<dl class="notes">
@@ -598,7 +598,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="getSnapshot()">
<h3>getSnapshot</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-315">getSnapshot</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-325">getSnapshot</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../SnapshotSentinel.html#getSnapshot()">SnapshotSentinel</a></code></span></div>
<div class="block">Returns the description of the snapshot being run</div>
<dl class="notes">
@@ -610,7 +610,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="getExceptionIfFailed()">
<h3>getExceptionIfFailed</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-320">getExceptionIfFailed</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-330">getExceptionIfFailed</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../SnapshotSentinel.html#getExceptionIfFailed()">SnapshotSentinel</a></code></span></div>
<div class="block">Get the exception that caused the snapshot to fail, if the snapshot has failed.</div>
<dl class="notes">
@@ -625,7 +625,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="rethrowExceptionIfFailed()">
<h3>rethrowExceptionIfFailed</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-325">rethrowExceptionIfFailed</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-335">rethrowExceptionIfFailed</a></span>()
throws <span class="exceptions"><a href="../../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../SnapshotSentinel.html#rethrowExceptionIfFailed()">SnapshotSentinel</a></code></span></div>
<div class="block">Rethrow the exception returned by <a href="../SnapshotSentinel.html#getExceptionIfFailed()"><code>SnapshotSentinel.getExceptionIfFailed()</code></a>. If there is no
@@ -641,7 +641,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="rethrowException()">
<h3>rethrowException</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-330">rethrowException</a></span>()
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-340">rethrowException</a></span>()
throws <span class="exceptions"><a href="../../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../../errorhandling/ForeignExceptionSnare.html#rethrowException()">ForeignExceptionSnare</a></code></span></div>
<div class="block">Rethrow an exception currently held by the <a href="../../errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling"><code>ForeignExceptionSnare</code></a>. If there is no
@@ -657,7 +657,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="hasException()">
<h3>hasException</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-335">hasException</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-345">hasException</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../../errorhandling/ForeignExceptionSnare.html#hasException()">ForeignExceptionSnare</a></code></span></div>
<div class="block">Non-exceptional form of <a href="../../errorhandling/ForeignExceptionSnare.html#rethrowException()"><code>ForeignExceptionSnare.rethrowException()</code></a>. Checks to see if any process to which the
exception checkers is bound has created an error that would cause a failure.</div>
@@ -672,7 +672,7 @@ org.apache.zookeeper.KeeperException</span></div>
<li>
<section class="detail" id="getException()">
<h3>getException</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-340">getException</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html#line-350">getException</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../../errorhandling/ForeignExceptionSnare.html#getException()">ForeignExceptionSnare</a></code></span></div>
<div class="block">Get the value of the captured exception.</div>
<dl class="notes">
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html
index ff537f1b594..6030cd581eb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.html
@@ -65,525 +65,535 @@
<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.snapshot.SnapshotManifest;</span>
<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.snapshot.SnapshotRegionLocator;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.util.HFileArchiveUtil;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.util.Tool;</span>
-<span class="source-line-no">059</span><span id="line-59">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">060</span><span id="line-60">import org.slf4j.Logger;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">import org.apache.hbase.thirdparty.com.google.common.collect.Lists;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.snapshot.SnapshotTTLExpiredException;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.util.HFileArchiveUtil;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.util.Tool;</span>
+<span class="source-line-no">061</span><span id="line-61">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">062</span><span id="line-62">import org.slf4j.Logger;</span>
+<span class="source-line-no">063</span><span id="line-63">import org.slf4j.LoggerFactory;</span>
<span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos;</span>
+<span class="source-line-no">065</span><span id="line-65">import org.apache.hbase.thirdparty.com.google.common.collect.Lists;</span>
<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67">/**</span>
-<span class="source-line-no">068</span><span id="line-68"> * Incremental backup implementation. See the {@link #execute() execute} method.</span>
-<span class="source-line-no">069</span><span id="line-69"> */</span>
-<span class="source-line-no">070</span><span id="line-70">@InterfaceAudience.Private</span>
-<span class="source-line-no">071</span><span id="line-71">public class IncrementalTableBackupClient extends TableBackupClient {</span>
-<span class="source-line-no">072</span><span id="line-72"> private static final Logger LOG = LoggerFactory.getLogger(IncrementalTableBackupClient.class);</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74"> protected IncrementalTableBackupClient() {</span>
-<span class="source-line-no">075</span><span id="line-75"> }</span>
+<span class="source-line-no">067</span><span id="line-67">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
+<span class="source-line-no">068</span><span id="line-68">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos;</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">/**</span>
+<span class="source-line-no">071</span><span id="line-71"> * Incremental backup implementation. See the {@link #execute() execute} method.</span>
+<span class="source-line-no">072</span><span id="line-72"> */</span>
+<span class="source-line-no">073</span><span id="line-73">@InterfaceAudience.Private</span>
+<span class="source-line-no">074</span><span id="line-74">public class IncrementalTableBackupClient extends TableBackupClient {</span>
+<span class="source-line-no">075</span><span id="line-75"> private static final Logger LOG = LoggerFactory.getLogger(IncrementalTableBackupClient.class);</span>
<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> public IncrementalTableBackupClient(final Connection conn, final String backupId,</span>
-<span class="source-line-no">078</span><span id="line-78"> BackupRequest request) throws IOException {</span>
-<span class="source-line-no">079</span><span id="line-79"> super(conn, backupId, request);</span>
-<span class="source-line-no">080</span><span id="line-80"> }</span>
-<span class="source-line-no">081</span><span id="line-81"></span>
-<span class="source-line-no">082</span><span id="line-82"> protected List<String> filterMissingFiles(List<String> incrBackupFileList) throws IOException {</span>
-<span class="source-line-no">083</span><span id="line-83"> List<String> list = new ArrayList<>();</span>
-<span class="source-line-no">084</span><span id="line-84"> for (String file : incrBackupFileList) {</span>
-<span class="source-line-no">085</span><span id="line-85"> Path p = new Path(file);</span>
-<span class="source-line-no">086</span><span id="line-86"> if (fs.exists(p) || isActiveWalPath(p)) {</span>
-<span class="source-line-no">087</span><span id="line-87"> list.add(file);</span>
-<span class="source-line-no">088</span><span id="line-88"> } else {</span>
-<span class="source-line-no">089</span><span id="line-89"> LOG.warn("Can't find file: " + file);</span>
-<span class="source-line-no">090</span><span id="line-90"> }</span>
-<span class="source-line-no">091</span><span id="line-91"> }</span>
-<span class="source-line-no">092</span><span id="line-92"> return list;</span>
-<span class="source-line-no">093</span><span id="line-93"> }</span>
-<span class="source-line-no">094</span><span id="line-94"></span>
-<span class="source-line-no">095</span><span id="line-95"> /**</span>
-<span class="source-line-no">096</span><span id="line-96"> * Check if a given path is belongs to active WAL directory</span>
-<span class="source-line-no">097</span><span id="line-97"> * @param p path</span>
-<span class="source-line-no">098</span><span id="line-98"> * @return true, if yes</span>
-<span class="source-line-no">099</span><span id="line-99"> */</span>
-<span class="source-line-no">100</span><span id="line-100"> protected boolean isActiveWalPath(Path p) {</span>
-<span class="source-line-no">101</span><span id="line-101"> return !AbstractFSWALProvider.isArchivedLogFile(p);</span>
-<span class="source-line-no">102</span><span id="line-102"> }</span>
-<span class="source-line-no">103</span><span id="line-103"></span>
-<span class="source-line-no">104</span><span id="line-104"> protected static int getIndex(TableName tbl, List<TableName> sTableList) {</span>
-<span class="source-line-no">105</span><span id="line-105"> if (sTableList == null) {</span>
-<span class="source-line-no">106</span><span id="line-106"> return 0;</span>
-<span class="source-line-no">107</span><span id="line-107"> }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109"> for (int i = 0; i < sTableList.size(); i++) {</span>
-<span class="source-line-no">110</span><span id="line-110"> if (tbl.equals(sTableList.get(i))) {</span>
-<span class="source-line-no">111</span><span id="line-111"> return i;</span>
-<span class="source-line-no">112</span><span id="line-112"> }</span>
-<span class="source-line-no">113</span><span id="line-113"> }</span>
-<span class="source-line-no">114</span><span id="line-114"> return -1;</span>
-<span class="source-line-no">115</span><span id="line-115"> }</span>
-<span class="source-line-no">116</span><span id="line-116"></span>
-<span class="source-line-no">117</span><span id="line-117"> /**</span>
-<span class="source-line-no">118</span><span id="line-118"> * Reads bulk load records from backup table, iterates through the records and forms the paths for</span>
-<span class="source-line-no">119</span><span id="line-119"> * bulk loaded hfiles. Copies the bulk loaded hfiles to backup destination. This method does NOT</span>
-<span class="source-line-no">120</span><span id="line-120"> * clean up the entries in the bulk load system table. Those entries should not be cleaned until</span>
-<span class="source-line-no">121</span><span id="line-121"> * the backup is marked as complete.</span>
-<span class="source-line-no">122</span><span id="line-122"> * @param tablesToBackup list of tables to be backed up</span>
-<span class="source-line-no">123</span><span id="line-123"> */</span>
-<span class="source-line-no">124</span><span id="line-124"> protected List<BulkLoad> handleBulkLoad(List<TableName> tablesToBackup) throws IOException {</span>
-<span class="source-line-no">125</span><span id="line-125"> Map<TableName, MergeSplitBulkloadInfo> toBulkload = new HashMap<>();</span>
-<span class="source-line-no">126</span><span id="line-126"> List<BulkLoad> bulkLoads = backupManager.readBulkloadRows(tablesToBackup);</span>
-<span class="source-line-no">127</span><span id="line-127"> FileSystem tgtFs;</span>
-<span class="source-line-no">128</span><span id="line-128"> try {</span>
-<span class="source-line-no">129</span><span id="line-129"> tgtFs = FileSystem.get(new URI(backupInfo.getBackupRootDir()), conf);</span>
-<span class="source-line-no">130</span><span id="line-130"> } catch (URISyntaxException use) {</span>
-<span class="source-line-no">131</span><span id="line-131"> throw new IOException("Unable to get FileSystem", use);</span>
-<span class="source-line-no">132</span><span id="line-132"> }</span>
-<span class="source-line-no">133</span><span id="line-133"> Path rootdir = CommonFSUtils.getRootDir(conf);</span>
-<span class="source-line-no">134</span><span id="line-134"> Path tgtRoot = new Path(new Path(backupInfo.getBackupRootDir()), backupId);</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136"> for (BulkLoad bulkLoad : bulkLoads) {</span>
-<span class="source-line-no">137</span><span id="line-137"> TableName srcTable = bulkLoad.getTableName();</span>
-<span class="source-line-no">138</span><span id="line-138"> MergeSplitBulkloadInfo bulkloadInfo =</span>
-<span class="source-line-no">139</span><span id="line-139"> toBulkload.computeIfAbsent(srcTable, MergeSplitBulkloadInfo::new);</span>
-<span class="source-line-no">140</span><span id="line-140"> String regionName = bulkLoad.getRegion();</span>
-<span class="source-line-no">141</span><span id="line-141"> String fam = bulkLoad.getColumnFamily();</span>
-<span class="source-line-no">142</span><span id="line-142"> String filename = FilenameUtils.getName(bulkLoad.getHfilePath());</span>
-<span class="source-line-no">143</span><span id="line-143"></span>
-<span class="source-line-no">144</span><span id="line-144"> if (!tablesToBackup.contains(srcTable)) {</span>
-<span class="source-line-no">145</span><span id="line-145"> LOG.debug("Skipping {} since it is not in tablesToBackup", srcTable);</span>
-<span class="source-line-no">146</span><span id="line-146"> continue;</span>
-<span class="source-line-no">147</span><span id="line-147"> }</span>
-<span class="source-line-no">148</span><span id="line-148"> Path tblDir = CommonFSUtils.getTableDir(rootdir, srcTable);</span>
-<span class="source-line-no">149</span><span id="line-149"> Path p = new Path(tblDir, regionName + Path.SEPARATOR + fam + Path.SEPARATOR + filename);</span>
-<span class="source-line-no">150</span><span id="line-150"></span>
-<span class="source-line-no">151</span><span id="line-151"> String srcTableQualifier = srcTable.getQualifierAsString();</span>
-<span class="source-line-no">152</span><span id="line-152"> String srcTableNs = srcTable.getNamespaceAsString();</span>
-<span class="source-line-no">153</span><span id="line-153"> Path tgtFam = new Path(tgtRoot, srcTableNs + Path.SEPARATOR + srcTableQualifier</span>
-<span class="source-line-no">154</span><span id="line-154"> + Path.SEPARATOR + regionName + Path.SEPARATOR + fam);</span>
-<span class="source-line-no">155</span><span id="line-155"> if (!tgtFs.mkdirs(tgtFam)) {</span>
-<span class="source-line-no">156</span><span id="line-156"> throw new IOException("couldn't create " + tgtFam);</span>
-<span class="source-line-no">157</span><span id="line-157"> }</span>
-<span class="source-line-no">158</span><span id="line-158"> Path tgt = new Path(tgtFam, filename);</span>
-<span class="source-line-no">159</span><span id="line-159"></span>
-<span class="source-line-no">160</span><span id="line-160"> Path archiveDir = HFileArchiveUtil.getStoreArchivePath(conf, srcTable, regionName, fam);</span>
-<span class="source-line-no">161</span><span id="line-161"> Path archive = new Path(archiveDir, filename);</span>
+<span class="source-line-no">077</span><span id="line-77"> protected IncrementalTableBackupClient() {</span>
+<span class="source-line-no">078</span><span id="line-78"> }</span>
+<span class="source-line-no">079</span><span id="line-79"></span>
+<span class="source-line-no">080</span><span id="line-80"> public IncrementalTableBackupClient(final Connection conn, final String backupId,</span>
+<span class="source-line-no">081</span><span id="line-81"> BackupRequest request) throws IOException {</span>
+<span class="source-line-no">082</span><span id="line-82"> super(conn, backupId, request);</span>
+<span class="source-line-no">083</span><span id="line-83"> }</span>
+<span class="source-line-no">084</span><span id="line-84"></span>
+<span class="source-line-no">085</span><span id="line-85"> protected List<String> filterMissingFiles(List<String> incrBackupFileList) throws IOException {</span>
+<span class="source-line-no">086</span><span id="line-86"> List<String> list = new ArrayList<>();</span>
+<span class="source-line-no">087</span><span id="line-87"> for (String file : incrBackupFileList) {</span>
+<span class="source-line-no">088</span><span id="line-88"> Path p = new Path(file);</span>
+<span class="source-line-no">089</span><span id="line-89"> if (fs.exists(p) || isActiveWalPath(p)) {</span>
+<span class="source-line-no">090</span><span id="line-90"> list.add(file);</span>
+<span class="source-line-no">091</span><span id="line-91"> } else {</span>
+<span class="source-line-no">092</span><span id="line-92"> LOG.warn("Can't find file: " + file);</span>
+<span class="source-line-no">093</span><span id="line-93"> }</span>
+<span class="source-line-no">094</span><span id="line-94"> }</span>
+<span class="source-line-no">095</span><span id="line-95"> return list;</span>
+<span class="source-line-no">096</span><span id="line-96"> }</span>
+<span class="source-line-no">097</span><span id="line-97"></span>
+<span class="source-line-no">098</span><span id="line-98"> /**</span>
+<span class="source-line-no">099</span><span id="line-99"> * Check if a given path is belongs to active WAL directory</span>
+<span class="source-line-no">100</span><span id="line-100"> * @param p path</span>
+<span class="source-line-no">101</span><span id="line-101"> * @return true, if yes</span>
+<span class="source-line-no">102</span><span id="line-102"> */</span>
+<span class="source-line-no">103</span><span id="line-103"> protected boolean isActiveWalPath(Path p) {</span>
+<span class="source-line-no">104</span><span id="line-104"> return !AbstractFSWALProvider.isArchivedLogFile(p);</span>
+<span class="source-line-no">105</span><span id="line-105"> }</span>
+<span class="source-line-no">106</span><span id="line-106"></span>
+<span class="source-line-no">107</span><span id="line-107"> protected static int getIndex(TableName tbl, List<TableName> sTableList) {</span>
+<span class="source-line-no">108</span><span id="line-108"> if (sTableList == null) {</span>
+<span class="source-line-no">109</span><span id="line-109"> return 0;</span>
+<span class="source-line-no">110</span><span id="line-110"> }</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112"> for (int i = 0; i < sTableList.size(); i++) {</span>
+<span class="source-line-no">113</span><span id="line-113"> if (tbl.equals(sTableList.get(i))) {</span>
+<span class="source-line-no">114</span><span id="line-114"> return i;</span>
+<span class="source-line-no">115</span><span id="line-115"> }</span>
+<span class="source-line-no">116</span><span id="line-116"> }</span>
+<span class="source-line-no">117</span><span id="line-117"> return -1;</span>
+<span class="source-line-no">118</span><span id="line-118"> }</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120"> /**</span>
+<span class="source-line-no">121</span><span id="line-121"> * Reads bulk load records from backup table, iterates through the records and forms the paths for</span>
+<span class="source-line-no">122</span><span id="line-122"> * bulk loaded hfiles. Copies the bulk loaded hfiles to backup destination. This method does NOT</span>
+<span class="source-line-no">123</span><span id="line-123"> * clean up the entries in the bulk load system table. Those entries should not be cleaned until</span>
+<span class="source-line-no">124</span><span id="line-124"> * the backup is marked as complete.</span>
+<span class="source-line-no">125</span><span id="line-125"> * @param tablesToBackup list of tables to be backed up</span>
+<span class="source-line-no">126</span><span id="line-126"> */</span>
+<span class="source-line-no">127</span><span id="line-127"> protected List<BulkLoad> handleBulkLoad(List<TableName> tablesToBackup) throws IOException {</span>
+<span class="source-line-no">128</span><span id="line-128"> Map<TableName, MergeSplitBulkloadInfo> toBulkload = new HashMap<>();</span>
+<span class="source-line-no">129</span><span id="line-129"> List<BulkLoad> bulkLoads = backupManager.readBulkloadRows(tablesToBackup);</span>
+<span class="source-line-no">130</span><span id="line-130"> FileSystem tgtFs;</span>
+<span class="source-line-no">131</span><span id="line-131"> try {</span>
+<span class="source-line-no">132</span><span id="line-132"> tgtFs = FileSystem.get(new URI(backupInfo.getBackupRootDir()), conf);</span>
+<span class="source-line-no">133</span><span id="line-133"> } catch (URISyntaxException use) {</span>
+<span class="source-line-no">134</span><span id="line-134"> throw new IOException("Unable to get FileSystem", use);</span>
+<span class="source-line-no">135</span><span id="line-135"> }</span>
+<span class="source-line-no">136</span><span id="line-136"> Path rootdir = CommonFSUtils.getRootDir(conf);</span>
+<span class="source-line-no">137</span><span id="line-137"> Path tgtRoot = new Path(new Path(backupInfo.getBackupRootDir()), backupId);</span>
+<span class="source-line-no">138</span><span id="line-138"></span>
+<span class="source-line-no">139</span><span id="line-139"> for (BulkLoad bulkLoad : bulkLoads) {</span>
+<span class="source-line-no">140</span><span id="line-140"> TableName srcTable = bulkLoad.getTableName();</span>
+<span class="source-line-no">141</span><span id="line-141"> MergeSplitBulkloadInfo bulkloadInfo =</span>
+<span class="source-line-no">142</span><span id="line-142"> toBulkload.computeIfAbsent(srcTable, MergeSplitBulkloadInfo::new);</span>
+<span class="source-line-no">143</span><span id="line-143"> String regionName = bulkLoad.getRegion();</span>
+<span class="source-line-no">144</span><span id="line-144"> String fam = bulkLoad.getColumnFamily();</span>
+<span class="source-line-no">145</span><span id="line-145"> String filename = FilenameUtils.getName(bulkLoad.getHfilePath());</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147"> if (!tablesToBackup.contains(srcTable)) {</span>
+<span class="source-line-no">148</span><span id="line-148"> LOG.debug("Skipping {} since it is not in tablesToBackup", srcTable);</span>
+<span class="source-line-no">149</span><span id="line-149"> continue;</span>
+<span class="source-line-no">150</span><span id="line-150"> }</span>
+<span class="source-line-no">151</span><span id="line-151"> Path tblDir = CommonFSUtils.getTableDir(rootdir, srcTable);</span>
+<span class="source-line-no">152</span><span id="line-152"> Path p = new Path(tblDir, regionName + Path.SEPARATOR + fam + Path.SEPARATOR + filename);</span>
+<span class="source-line-no">153</span><span id="line-153"></span>
+<span class="source-line-no">154</span><span id="line-154"> String srcTableQualifier = srcTable.getQualifierAsString();</span>
+<span class="source-line-no">155</span><span id="line-155"> String srcTableNs = srcTable.getNamespaceAsString();</span>
+<span class="source-line-no">156</span><span id="line-156"> Path tgtFam = new Path(tgtRoot, srcTableNs + Path.SEPARATOR + srcTableQualifier</span>
+<span class="source-line-no">157</span><span id="line-157"> + Path.SEPARATOR + regionName + Path.SEPARATOR + fam);</span>
+<span class="source-line-no">158</span><span id="line-158"> if (!tgtFs.mkdirs(tgtFam)) {</span>
+<span class="source-line-no">159</span><span id="line-159"> throw new IOException("couldn't create " + tgtFam);</span>
+<span class="source-line-no">160</span><span id="line-160"> }</span>
+<span class="source-line-no">161</span><span id="line-161"> Path tgt = new Path(tgtFam, filename);</span>
<span class="source-line-no">162</span><span id="line-162"></span>
-<span class="source-line-no">163</span><span id="line-163"> if (fs.exists(p)) {</span>
-<span class="source-line-no">164</span><span id="line-164"> if (LOG.isTraceEnabled()) {</span>
-<span class="source-line-no">165</span><span id="line-165"> LOG.trace("found bulk hfile {} in {} for {}", bulkLoad.getHfilePath(), p.getParent(),</span>
-<span class="source-line-no">166</span><span id="line-166"> srcTableQualifier);</span>
-<span class="source-line-no">167</span><span id="line-167"> LOG.trace("copying {} to {}", p, tgt);</span>
-<span class="source-line-no">168</span><span id="line-168"> }</span>
-<span class="source-line-no">169</span><span id="line-169"> bulkloadInfo.addActiveFile(p.toString());</span>
-<span class="source-line-no">170</span><span id="line-170"> } else if (fs.exists(archive)) {</span>
-<span class="source-line-no">171</span><span id="line-171"> LOG.debug("copying archive {} to {}", archive, tgt);</span>
-<span class="source-line-no">172</span><span id="line-172"> bulkloadInfo.addArchiveFiles(archive.toString());</span>
-<span class="source-line-no">173</span><span id="line-173"> }</span>
-<span class="source-line-no">174</span><span id="line-174"> }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176"> for (MergeSplitBulkloadInfo bulkloadInfo : toBulkload.values()) {</span>
-<span class="source-line-no">177</span><span id="line-177"> mergeSplitAndCopyBulkloadedHFiles(bulkloadInfo.getActiveFiles(),</span>
-<span class="source-line-no">178</span><span id="line-178"> bulkloadInfo.getArchiveFiles(), bulkloadInfo.getSrcTable(), tgtFs);</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"></span>
-<span class="source-line-no">181</span><span id="line-181"> return bulkLoads;</span>
-<span class="source-line-no">182</span><span id="line-182"> }</span>
+<span class="source-line-no">163</span><span id="line-163"> Path archiveDir = HFileArchiveUtil.getStoreArchivePath(conf, srcTable, regionName, fam);</span>
+<span class="source-line-no">164</span><span id="line-164"> Path archive = new Path(archiveDir, filename);</span>
+<span class="source-line-no">165</span><span id="line-165"></span>
+<span class="source-line-no">166</span><span id="line-166"> if (fs.exists(p)) {</span>
+<span class="source-line-no">167</span><span id="line-167"> if (LOG.isTraceEnabled()) {</span>
+<span class="source-line-no">168</span><span id="line-168"> LOG.trace("found bulk hfile {} in {} for {}", bulkLoad.getHfilePath(), p.getParent(),</span>
+<span class="source-line-no">169</span><span id="line-169"> srcTableQualifier);</span>
+<span class="source-line-no">170</span><span id="line-170"> LOG.trace("copying {} to {}", p, tgt);</span>
+<span class="source-line-no">171</span><span id="line-171"> }</span>
+<span class="source-line-no">172</span><span id="line-172"> bulkloadInfo.addActiveFile(p.toString());</span>
+<span class="source-line-no">173</span><span id="line-173"> } else if (fs.exists(archive)) {</span>
+<span class="source-line-no">174</span><span id="line-174"> LOG.debug("copying archive {} to {}", archive, tgt);</span>
+<span class="source-line-no">175</span><span id="line-175"> bulkloadInfo.addArchiveFiles(archive.toString());</span>
+<span class="source-line-no">176</span><span id="line-176"> }</span>
+<span class="source-line-no">177</span><span id="line-177"> }</span>
+<span class="source-line-no">178</span><span id="line-178"></span>
+<span class="source-line-no">179</span><span id="line-179"> for (MergeSplitBulkloadInfo bulkloadInfo : toBulkload.values()) {</span>
+<span class="source-line-no">180</span><span id="line-180"> mergeSplitAndCopyBulkloadedHFiles(bulkloadInfo.getActiveFiles(),</span>
+<span class="source-line-no">181</span><span id="line-181"> bulkloadInfo.getArchiveFiles(), bulkloadInfo.getSrcTable(), tgtFs);</span>
+<span class="source-line-no">182</span><span id="line-182"> }</span>
<span class="source-line-no">183</span><span id="line-183"></span>
-<span class="source-line-no">184</span><span id="line-184"> private void mergeSplitAndCopyBulkloadedHFiles(List<String> activeFiles,</span>
-<span class="source-line-no">185</span><span id="line-185"> List<String> archiveFiles, TableName tn, FileSystem tgtFs) throws IOException {</span>
-<span class="source-line-no">186</span><span id="line-186"> int attempt = 1;</span>
-<span class="source-line-no">187</span><span id="line-187"></span>
-<span class="source-line-no">188</span><span id="line-188"> while (!activeFiles.isEmpty()) {</span>
-<span class="source-line-no">189</span><span id="line-189"> LOG.info("MergeSplit {} active bulk loaded files. Attempt={}", activeFiles.size(), attempt++);</span>
-<span class="source-line-no">190</span><span id="line-190"> // Active file can be archived during copy operation,</span>
-<span class="source-line-no">191</span><span id="line-191"> // we need to handle this properly</span>
-<span class="source-line-no">192</span><span id="line-192"> try {</span>
-<span class="source-line-no">193</span><span id="line-193"> mergeSplitAndCopyBulkloadedHFiles(activeFiles, tn, tgtFs);</span>
-<span class="source-line-no">194</span><span id="line-194"> break;</span>
-<span class="source-line-no">195</span><span id="line-195"> } catch (IOException e) {</span>
-<span class="source-line-no">196</span><span id="line-196"> int numActiveFiles = activeFiles.size();</span>
-<span class="source-line-no">197</span><span id="line-197"> updateFileLists(activeFiles, archiveFiles);</span>
-<span class="source-line-no">198</span><span id="line-198"> if (activeFiles.size() < numActiveFiles) {</span>
-<span class="source-line-no">199</span><span id="line-199"> continue;</span>
-<span class="source-line-no">200</span><span id="line-200"> }</span>
-<span class="source-line-no">201</span><span id="line-201"></span>
-<span class="source-line-no">202</span><span id="line-202"> throw e;</span>
-<span class="source-line-no">203</span><span id="line-203"> }</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"></span>
-<span class="source-line-no">206</span><span id="line-206"> if (!archiveFiles.isEmpty()) {</span>
-<span class="source-line-no">207</span><span id="line-207"> mergeSplitAndCopyBulkloadedHFiles(archiveFiles, tn, tgtFs);</span>
-<span class="source-line-no">208</span><span id="line-208"> }</span>
-<span class="source-line-no">209</span><span id="line-209"> }</span>
-<span class="source-line-no">210</span><span id="line-210"></span>
-<span class="source-line-no">211</span><span id="line-211"> private void mergeSplitAndCopyBulkloadedHFiles(List<String> files, TableName tn, FileSystem tgtFs)</span>
-<span class="source-line-no">212</span><span id="line-212"> throws IOException {</span>
-<span class="source-line-no">213</span><span id="line-213"> MapReduceHFileSplitterJob player = new MapReduceHFileSplitterJob();</span>
-<span class="source-line-no">214</span><span id="line-214"> conf.set(MapReduceHFileSplitterJob.BULK_OUTPUT_CONF_KEY,</span>
-<span class="source-line-no">215</span><span id="line-215"> getBulkOutputDirForTable(tn).toString());</span>
-<span class="source-line-no">216</span><span id="line-216"> player.setConf(conf);</span>
-<span class="source-line-no">217</span><span id="line-217"></span>
-<span class="source-line-no">218</span><span id="line-218"> String inputDirs = StringUtils.join(files, ",");</span>
-<span class="source-line-no">219</span><span id="line-219"> String[] args = { inputDirs, tn.getNameWithNamespaceInclAsString() };</span>
+<span class="source-line-no">184</span><span id="line-184"> return bulkLoads;</span>
+<span class="source-line-no">185</span><span id="line-185"> }</span>
+<span class="source-line-no">186</span><span id="line-186"></span>
+<span class="source-line-no">187</span><span id="line-187"> private void mergeSplitAndCopyBulkloadedHFiles(List<String> activeFiles,</span>
+<span class="source-line-no">188</span><span id="line-188"> List<String> archiveFiles, TableName tn, FileSystem tgtFs) throws IOException {</span>
+<span class="source-line-no">189</span><span id="line-189"> int attempt = 1;</span>
+<span class="source-line-no">190</span><span id="line-190"></span>
+<span class="source-line-no">191</span><span id="line-191"> while (!activeFiles.isEmpty()) {</span>
+<span class="source-line-no">192</span><span id="line-192"> LOG.info("MergeSplit {} active bulk loaded files. Attempt={}", activeFiles.size(), attempt++);</span>
+<span class="source-line-no">193</span><span id="line-193"> // Active file can be archived during copy operation,</span>
+<span class="source-line-no">194</span><span id="line-194"> // we need to handle this properly</span>
+<span class="source-line-no">195</span><span id="line-195"> try {</span>
+<span class="source-line-no">196</span><span id="line-196"> mergeSplitAndCopyBulkloadedHFiles(activeFiles, tn, tgtFs);</span>
+<span class="source-line-no">197</span><span id="line-197"> break;</span>
+<span class="source-line-no">198</span><span id="line-198"> } catch (IOException e) {</span>
+<span class="source-line-no">199</span><span id="line-199"> int numActiveFiles = activeFiles.size();</span>
+<span class="source-line-no">200</span><span id="line-200"> updateFileLists(activeFiles, archiveFiles);</span>
+<span class="source-line-no">201</span><span id="line-201"> if (activeFiles.size() < numActiveFiles) {</span>
+<span class="source-line-no">202</span><span id="line-202"> continue;</span>
+<span class="source-line-no">203</span><span id="line-203"> }</span>
+<span class="source-line-no">204</span><span id="line-204"></span>
+<span class="source-line-no">205</span><span id="line-205"> throw e;</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> }</span>
+<span class="source-line-no">208</span><span id="line-208"></span>
+<span class="source-line-no">209</span><span id="line-209"> if (!archiveFiles.isEmpty()) {</span>
+<span class="source-line-no">210</span><span id="line-210"> mergeSplitAndCopyBulkloadedHFiles(archiveFiles, tn, tgtFs);</span>
+<span class="source-line-no">211</span><span id="line-211"> }</span>
+<span class="source-line-no">212</span><span id="line-212"> }</span>
+<span class="source-line-no">213</span><span id="line-213"></span>
+<span class="source-line-no">214</span><span id="line-214"> private void mergeSplitAndCopyBulkloadedHFiles(List<String> files, TableName tn, FileSystem tgtFs)</span>
+<span class="source-line-no">215</span><span id="line-215"> throws IOException {</span>
+<span class="source-line-no">216</span><span id="line-216"> MapReduceHFileSplitterJob player = new MapReduceHFileSplitterJob();</span>
+<span class="source-line-no">217</span><span id="line-217"> conf.set(MapReduceHFileSplitterJob.BULK_OUTPUT_CONF_KEY,</span>
+<span class="source-line-no">218</span><span id="line-218"> getBulkOutputDirForTable(tn).toString());</span>
+<span class="source-line-no">219</span><span id="line-219"> player.setConf(conf);</span>
<span class="source-line-no">220</span><span id="line-220"></span>
-<span class="source-line-no">221</span><span id="line-221"> int result;</span>
-<span class="source-line-no">222</span><span id="line-222"></span>
-<span class="source-line-no">223</span><span id="line-223"> try {</span>
-<span class="source-line-no">224</span><span id="line-224"> result = player.run(args);</span>
-<span class="source-line-no">225</span><span id="line-225"> } catch (Exception e) {</span>
-<span class="source-line-no">226</span><span id="line-226"> LOG.error("Failed to run MapReduceHFileSplitterJob", e);</span>
-<span class="source-line-no">227</span><span id="line-227"> // Delete the bulkload directory if we fail to run the HFile splitter job for any reason</span>
-<span class="source-line-no">228</span><span id="line-228"> // as it might be re-tried</span>
-<span class="source-line-no">229</span><span id="line-229"> deleteBulkLoadDirectory();</span>
-<span class="source-line-no">230</span><span id="line-230"> throw new IOException(e);</span>
-<span class="source-line-no">231</span><span id="line-231"> }</span>
-<span class="source-line-no">232</span><span id="line-232"></span>
-<span class="source-line-no">233</span><span id="line-233"> if (result != 0) {</span>
-<span class="source-line-no">234</span><span id="line-234"> throw new IOException(</span>
-<span class="source-line-no">235</span><span id="line-235"> "Failed to run MapReduceHFileSplitterJob with invalid result: " + result);</span>
-<span class="source-line-no">236</span><span id="line-236"> }</span>
-<span class="source-line-no">237</span><span id="line-237"></span>
-<span class="source-line-no">238</span><span id="line-238"> incrementalCopyBulkloadHFiles(tgtFs, tn);</span>
-<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">221</span><span id="line-221"> String inputDirs = StringUtils.join(files, ",");</span>
+<span class="source-line-no">222</span><span id="line-222"> String[] args = { inputDirs, tn.getNameWithNamespaceInclAsString() };</span>
+<span class="source-line-no">223</span><span id="line-223"></span>
+<span class="source-line-no">224</span><span id="line-224"> int result;</span>
+<span class="source-line-no">225</span><span id="line-225"></span>
+<span class="source-line-no">226</span><span id="line-226"> try {</span>
+<span class="source-line-no">227</span><span id="line-227"> result = player.run(args);</span>
+<span class="source-line-no">228</span><span id="line-228"> } catch (Exception e) {</span>
+<span class="source-line-no">229</span><span id="line-229"> LOG.error("Failed to run MapReduceHFileSplitterJob", e);</span>
+<span class="source-line-no">230</span><span id="line-230"> // Delete the bulkload directory if we fail to run the HFile splitter job for any reason</span>
+<span class="source-line-no">231</span><span id="line-231"> // as it might be re-tried</span>
+<span class="source-line-no">232</span><span id="line-232"> deleteBulkLoadDirectory();</span>
+<span class="source-line-no">233</span><span id="line-233"> throw new IOException(e);</span>
+<span class="source-line-no">234</span><span id="line-234"> }</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236"> if (result != 0) {</span>
+<span class="source-line-no">237</span><span id="line-237"> throw new IOException(</span>
+<span class="source-line-no">238</span><span id="line-238"> "Failed to run MapReduceHFileSplitterJob with invalid result: " + result);</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
<span class="source-line-no">240</span><span id="line-240"></span>
-<span class="source-line-no">241</span><span id="line-241"> private void updateFileLists(List<String> activeFiles, List<String> archiveFiles)</span>
-<span class="source-line-no">242</span><span id="line-242"> throws IOException {</span>
-<span class="source-line-no">243</span><span id="line-243"> List<String> newlyArchived = new ArrayList<>();</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245"> for (String spath : activeFiles) {</span>
-<span class="source-line-no">246</span><span id="line-246"> if (!fs.exists(new Path(spath))) {</span>
-<span class="source-line-no">247</span><span id="line-247"> newlyArchived.add(spath);</span>
-<span class="source-line-no">248</span><span id="line-248"> }</span>
-<span class="source-line-no">249</span><span id="line-249"> }</span>
-<span class="source-line-no">250</span><span id="line-250"></span>
-<span class="source-line-no">251</span><span id="line-251"> if (newlyArchived.size() > 0) {</span>
-<span class="source-line-no">252</span><span id="line-252"> activeFiles.removeAll(newlyArchived);</span>
-<span class="source-line-no">253</span><span id="line-253"> archiveFiles.addAll(newlyArchived);</span>
-<span class="source-line-no">254</span><span id="line-254"> }</span>
-<span class="source-line-no">255</span><span id="line-255"></span>
-<span class="source-line-no">256</span><span id="line-256"> LOG.debug(newlyArchived.size() + " files have been archived.");</span>
-<span class="source-line-no">257</span><span id="line-257"> }</span>
+<span class="source-line-no">241</span><span id="line-241"> incrementalCopyBulkloadHFiles(tgtFs, tn);</span>
+<span class="source-line-no">242</span><span id="line-242"> }</span>
+<span class="source-line-no">243</span><span id="line-243"></span>
+<span class="source-line-no">244</span><span id="line-244"> private void updateFileLists(List<String> activeFiles, List<String> archiveFiles)</span>
+<span class="source-line-no">245</span><span id="line-245"> throws IOException {</span>
+<span class="source-line-no">246</span><span id="line-246"> List<String> newlyArchived = new ArrayList<>();</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248"> for (String spath : activeFiles) {</span>
+<span class="source-line-no">249</span><span id="line-249"> if (!fs.exists(new Path(spath))) {</span>
+<span class="source-line-no">250</span><span id="line-250"> newlyArchived.add(spath);</span>
+<span class="source-line-no">251</span><span id="line-251"> }</span>
+<span class="source-line-no">252</span><span id="line-252"> }</span>
+<span class="source-line-no">253</span><span id="line-253"></span>
+<span class="source-line-no">254</span><span id="line-254"> if (newlyArchived.size() > 0) {</span>
+<span class="source-line-no">255</span><span id="line-255"> activeFiles.removeAll(newlyArchived);</span>
+<span class="source-line-no">256</span><span id="line-256"> archiveFiles.addAll(newlyArchived);</span>
+<span class="source-line-no">257</span><span id="line-257"> }</span>
<span class="source-line-no">258</span><span id="line-258"></span>
-<span class="source-line-no">259</span><span id="line-259"> /**</span>
-<span class="source-line-no">260</span><span id="line-260"> * @throws IOException If the execution of the backup fails</span>
-<span class="source-line-no">261</span><span id="line-261"> * @throws ColumnFamilyMismatchException If the column families of the current table do not match</span>
-<span class="source-line-no">262</span><span id="line-262"> * the column families for the last full backup. In which</span>
-<span class="source-line-no">263</span><span id="line-263"> * case, a full backup should be taken</span>
-<span class="source-line-no">264</span><span id="line-264"> */</span>
-<span class="source-line-no">265</span><span id="line-265"> @Override</span>
-<span class="source-line-no">266</span><span id="line-266"> public void execute() throws IOException, ColumnFamilyMismatchException {</span>
-<span class="source-line-no">267</span><span id="line-267"> try {</span>
-<span class="source-line-no">268</span><span id="line-268"> Map<TableName, String> tablesToFullBackupIds = getFullBackupIds();</span>
-<span class="source-line-no">269</span><span id="line-269"> verifyCfCompatibility(backupInfo.getTables(), tablesToFullBackupIds);</span>
-<span class="source-line-no">270</span><span id="line-270"></span>
-<span class="source-line-no">271</span><span id="line-271"> // case PREPARE_INCREMENTAL:</span>
-<span class="source-line-no">272</span><span id="line-272"> beginBackup(backupManager, backupInfo);</span>
-<span class="source-line-no">273</span><span id="line-273"> backupInfo.setPhase(BackupPhase.PREPARE_INCREMENTAL);</span>
-<span class="source-line-no">274</span><span id="line-274"> LOG.debug("For incremental backup, current table set is "</span>
-<span class="source-line-no">275</span><span id="line-275"> + backupManager.getIncrementalBackupTableSet());</span>
-<span class="source-line-no">276</span><span id="line-276"> newTimestamps = ((IncrementalBackupManager) backupManager).getIncrBackupLogFileMap();</span>
-<span class="source-line-no">277</span><span id="line-277"> } catch (Exception e) {</span>
-<span class="source-line-no">278</span><span id="line-278"> // fail the overall backup and return</span>
-<span class="source-line-no">279</span><span id="line-279"> failBackup(conn, backupInfo, backupManager, e, "Unexpected Exception : ",</span>
-<span class="source-line-no">280</span><span id="line-280"> BackupType.INCREMENTAL, conf);</span>
-<span class="source-line-no">281</span><span id="line-281"> throw new IOException(e);</span>
-<span class="source-line-no">282</span><span id="line-282"> }</span>
-<span class="source-line-no">283</span><span id="line-283"></span>
-<span class="source-line-no">284</span><span id="line-284"> // case INCREMENTAL_COPY:</span>
-<span class="source-line-no">285</span><span id="line-285"> try {</span>
-<span class="source-line-no">286</span><span id="line-286"> // copy out the table and region info files for each table</span>
-<span class="source-line-no">287</span><span id="line-287"> BackupUtils.copyTableRegionInfo(conn, backupInfo, conf);</span>
-<span class="source-line-no">288</span><span id="line-288"> setupRegionLocator();</span>
-<span class="source-line-no">289</span><span id="line-289"> // convert WAL to HFiles and copy them to .tmp under BACKUP_ROOT</span>
-<span class="source-line-no">290</span><span id="line-290"> convertWALsToHFiles();</span>
-<span class="source-line-no">291</span><span id="line-291"> incrementalCopyHFiles(new String[] { getBulkOutputDir().toString() },</span>
-<span class="source-line-no">292</span><span id="line-292"> backupInfo.getBackupRootDir());</span>
-<span class="source-line-no">293</span><span id="line-293"> } catch (Exception e) {</span>
-<span class="source-line-no">294</span><span id="line-294"> String msg = "Unexpected exception in incremental-backup: incremental copy " + backupId;</span>
-<span class="source-line-no">295</span><span id="line-295"> // fail the overall backup and return</span>
-<span class="source-line-no">296</span><span id="line-296"> failBackup(conn, backupInfo, backupManager, e, msg, BackupType.INCREMENTAL, conf);</span>
-<span class="source-line-no">297</span><span id="line-297"> throw new IOException(e);</span>
-<span class="source-line-no">298</span><span id="line-298"> }</span>
-<span class="source-line-no">299</span><span id="line-299"> // case INCR_BACKUP_COMPLETE:</span>
-<span class="source-line-no">300</span><span id="line-300"> // set overall backup status: complete. Here we make sure to complete the backup.</span>
-<span class="source-line-no">301</span><span id="line-301"> // After this checkpoint, even if entering cancel process, will let the backup finished</span>
-<span class="source-line-no">302</span><span id="line-302"> try {</span>
-<span class="source-line-no">303</span><span id="line-303"> // Set the previousTimestampMap which is before this current log roll to the manifest.</span>
-<span class="source-line-no">304</span><span id="line-304"> Map<TableName, Map<String, Long>> previousTimestampMap = backupManager.readLogTimestampMap();</span>
-<span class="source-line-no">305</span><span id="line-305"> backupInfo.setIncrTimestampMap(previousTimestampMap);</span>
-<span class="source-line-no">306</span><span id="line-306"></span>
-<span class="source-line-no">307</span><span id="line-307"> // The table list in backupInfo is good for both full backup and incremental backup.</span>
-<span class="source-line-no">308</span><span id="line-308"> // For incremental backup, it contains the incremental backup table set.</span>
-<span class="source-line-no">309</span><span id="line-309"> backupManager.writeRegionServerLogTimestamp(backupInfo.getTables(), newTimestamps);</span>
-<span class="source-line-no">310</span><span id="line-310"></span>
-<span class="source-line-no">311</span><span id="line-311"> Map<TableName, Map<String, Long>> newTableSetTimestampMap =</span>
-<span class="source-line-no">312</span><span id="line-312"> backupManager.readLogTimestampMap();</span>
+<span class="source-line-no">259</span><span id="line-259"> LOG.debug(newlyArchived.size() + " files have been archived.");</span>
+<span class="source-line-no">260</span><span id="line-260"> }</span>
+<span class="source-line-no">261</span><span id="line-261"></span>
+<span class="source-line-no">262</span><span id="line-262"> /**</span>
+<span class="source-line-no">263</span><span id="line-263"> * @throws IOException If the execution of the backup fails</span>
+<span class="source-line-no">264</span><span id="line-264"> * @throws ColumnFamilyMismatchException If the column families of the current table do not match</span>
+<span class="source-line-no">265</span><span id="line-265"> * the column families for the last full backup. In which</span>
+<span class="source-line-no">266</span><span id="line-266"> * case, a full backup should be taken</span>
+<span class="source-line-no">267</span><span id="line-267"> */</span>
+<span class="source-line-no">268</span><span id="line-268"> @Override</span>
+<span class="source-line-no">269</span><span id="line-269"> public void execute() throws IOException, ColumnFamilyMismatchException {</span>
+<span class="source-line-no">270</span><span id="line-270"> try {</span>
+<span class="source-line-no">271</span><span id="line-271"> Map<TableName, String> tablesToFullBackupIds = getFullBackupIds();</span>
+<span class="source-line-no">272</span><span id="line-272"> verifyCfCompatibility(backupInfo.getTables(), tablesToFullBackupIds);</span>
+<span class="source-line-no">273</span><span id="line-273"></span>
+<span class="source-line-no">274</span><span id="line-274"> // case PREPARE_INCREMENTAL:</span>
+<span class="source-line-no">275</span><span id="line-275"> beginBackup(backupManager, backupInfo);</span>
+<span class="source-line-no">276</span><span id="line-276"> backupInfo.setPhase(BackupPhase.PREPARE_INCREMENTAL);</span>
+<span class="source-line-no">277</span><span id="line-277"> LOG.debug("For incremental backup, current table set is "</span>
+<span class="source-line-no">278</span><span id="line-278"> + backupManager.getIncrementalBackupTableSet());</span>
+<span class="source-line-no">279</span><span id="line-279"> newTimestamps = ((IncrementalBackupManager) backupManager).getIncrBackupLogFileMap();</span>
+<span class="source-line-no">280</span><span id="line-280"> } catch (Exception e) {</span>
+<span class="source-line-no">281</span><span id="line-281"> // fail the overall backup and return</span>
+<span class="source-line-no">282</span><span id="line-282"> failBackup(conn, backupInfo, backupManager, e, "Unexpected Exception : ",</span>
+<span class="source-line-no">283</span><span id="line-283"> BackupType.INCREMENTAL, conf);</span>
+<span class="source-line-no">284</span><span id="line-284"> throw new IOException(e);</span>
+<span class="source-line-no">285</span><span id="line-285"> }</span>
+<span class="source-line-no">286</span><span id="line-286"></span>
+<span class="source-line-no">287</span><span id="line-287"> // case INCREMENTAL_COPY:</span>
+<span class="source-line-no">288</span><span id="line-288"> try {</span>
+<span class="source-line-no">289</span><span id="line-289"> // copy out the table and region info files for each table</span>
+<span class="source-line-no">290</span><span id="line-290"> BackupUtils.copyTableRegionInfo(conn, backupInfo, conf);</span>
+<span class="source-line-no">291</span><span id="line-291"> setupRegionLocator();</span>
+<span class="source-line-no">292</span><span id="line-292"> // convert WAL to HFiles and copy them to .tmp under BACKUP_ROOT</span>
+<span class="source-line-no">293</span><span id="line-293"> convertWALsToHFiles();</span>
+<span class="source-line-no">294</span><span id="line-294"> incrementalCopyHFiles(new String[] { getBulkOutputDir().toString() },</span>
+<span class="source-line-no">295</span><span id="line-295"> backupInfo.getBackupRootDir());</span>
+<span class="source-line-no">296</span><span id="line-296"> } catch (Exception e) {</span>
+<span class="source-line-no">297</span><span id="line-297"> String msg = "Unexpected exception in incremental-backup: incremental copy " + backupId;</span>
+<span class="source-line-no">298</span><span id="line-298"> // fail the overall backup and return</span>
+<span class="source-line-no">299</span><span id="line-299"> failBackup(conn, backupInfo, backupManager, e, msg, BackupType.INCREMENTAL, conf);</span>
+<span class="source-line-no">300</span><span id="line-300"> throw new IOException(e);</span>
+<span class="source-line-no">301</span><span id="line-301"> }</span>
+<span class="source-line-no">302</span><span id="line-302"> // case INCR_BACKUP_COMPLETE:</span>
+<span class="source-line-no">303</span><span id="line-303"> // set overall backup status: complete. Here we make sure to complete the backup.</span>
+<span class="source-line-no">304</span><span id="line-304"> // After this checkpoint, even if entering cancel process, will let the backup finished</span>
+<span class="source-line-no">305</span><span id="line-305"> try {</span>
+<span class="source-line-no">306</span><span id="line-306"> // Set the previousTimestampMap which is before this current log roll to the manifest.</span>
+<span class="source-line-no">307</span><span id="line-307"> Map<TableName, Map<String, Long>> previousTimestampMap = backupManager.readLogTimestampMap();</span>
+<span class="source-line-no">308</span><span id="line-308"> backupInfo.setIncrTimestampMap(previousTimestampMap);</span>
+<span class="source-line-no">309</span><span id="line-309"></span>
+<span class="source-line-no">310</span><span id="line-310"> // The table list in backupInfo is good for both full backup and incremental backup.</span>
+<span class="source-line-no">311</span><span id="line-311"> // For incremental backup, it contains the incremental backup table set.</span>
+<span class="source-line-no">312</span><span id="line-312"> backupManager.writeRegionServerLogTimestamp(backupInfo.getTables(), newTimestamps);</span>
<span class="source-line-no">313</span><span id="line-313"></span>
-<span class="source-line-no">314</span><span id="line-314"> backupInfo.setTableSetTimestampMap(newTableSetTimestampMap);</span>
-<span class="source-line-no">315</span><span id="line-315"> Long newStartCode =</span>
-<span class="source-line-no">316</span><span id="line-316"> BackupUtils.getMinValue(BackupUtils.getRSLogTimestampMins(newTableSetTimestampMap));</span>
-<span class="source-line-no">317</span><span id="line-317"> backupManager.writeBackupStartCode(newStartCode);</span>
-<span class="source-line-no">318</span><span id="line-318"></span>
-<span class="source-line-no">319</span><span id="line-319"> List<BulkLoad> bulkLoads = handleBulkLoad(backupInfo.getTableNames());</span>
-<span class="source-line-no">320</span><span id="line-320"></span>
-<span class="source-line-no">321</span><span id="line-321"> // backup complete</span>
-<span class="source-line-no">322</span><span id="line-322"> completeBackup(conn, backupInfo, BackupType.INCREMENTAL, conf);</span>
+<span class="source-line-no">314</span><span id="line-314"> Map<TableName, Map<String, Long>> newTableSetTimestampMap =</span>
+<span class="source-line-no">315</span><span id="line-315"> backupManager.readLogTimestampMap();</span>
+<span class="source-line-no">316</span><span id="line-316"></span>
+<span class="source-line-no">317</span><span id="line-317"> backupInfo.setTableSetTimestampMap(newTableSetTimestampMap);</span>
+<span class="source-line-no">318</span><span id="line-318"> Long newStartCode =</span>
+<span class="source-line-no">319</span><span id="line-319"> BackupUtils.getMinValue(BackupUtils.getRSLogTimestampMins(newTableSetTimestampMap));</span>
+<span class="source-line-no">320</span><span id="line-320"> backupManager.writeBackupStartCode(newStartCode);</span>
+<span class="source-line-no">321</span><span id="line-321"></span>
+<span class="source-line-no">322</span><span id="line-322"> List<BulkLoad> bulkLoads = handleBulkLoad(backupInfo.getTableNames());</span>
<span class="source-line-no">323</span><span id="line-323"></span>
-<span class="source-line-no">324</span><span id="line-324"> List<byte[]> bulkLoadedRows = Lists.transform(bulkLoads, BulkLoad::getRowKey);</span>
-<span class="source-line-no">325</span><span id="line-325"> backupManager.deleteBulkLoadedRows(bulkLoadedRows);</span>
-<span class="source-line-no">326</span><span id="line-326"> } catch (IOException e) {</span>
-<span class="source-line-no">327</span><span id="line-327"> failBackup(conn, backupInfo, backupManager, e, "Unexpected Exception : ",</span>
-<span class="source-line-no">328</span><span id="line-328"> BackupType.INCREMENTAL, conf);</span>
-<span class="source-line-no">329</span><span id="line-329"> throw new IOException(e);</span>
-<span class="source-line-no">330</span><span id="line-330"> }</span>
-<span class="source-line-no">331</span><span id="line-331"> }</span>
-<span class="source-line-no">332</span><span id="line-332"></span>
-<span class="source-line-no">333</span><span id="line-333"> protected void incrementalCopyHFiles(String[] files, String backupDest) throws IOException {</span>
-<span class="source-line-no">334</span><span id="line-334"> try {</span>
-<span class="source-line-no">335</span><span id="line-335"> LOG.debug("Incremental copy HFiles is starting. dest=" + backupDest);</span>
-<span class="source-line-no">336</span><span id="line-336"> // set overall backup phase: incremental_copy</span>
-<span class="source-line-no">337</span><span id="line-337"> backupInfo.setPhase(BackupPhase.INCREMENTAL_COPY);</span>
-<span class="source-line-no">338</span><span id="line-338"> // get incremental backup file list and prepare parms for DistCp</span>
-<span class="source-line-no">339</span><span id="line-339"> String[] strArr = new String[files.length + 1];</span>
-<span class="source-line-no">340</span><span id="line-340"> System.arraycopy(files, 0, strArr, 0, files.length);</span>
-<span class="source-line-no">341</span><span id="line-341"> strArr[strArr.length - 1] = backupDest;</span>
-<span class="source-line-no">342</span><span id="line-342"></span>
-<span class="source-line-no">343</span><span id="line-343"> String jobname = "Incremental_Backup-HFileCopy-" + backupInfo.getBackupId();</span>
-<span class="source-line-no">344</span><span id="line-344"> if (LOG.isDebugEnabled()) {</span>
-<span class="source-line-no">345</span><span id="line-345"> LOG.debug("Setting incremental copy HFiles job name to : " + jobname);</span>
-<span class="source-line-no">346</span><span id="line-346"> }</span>
-<span class="source-line-no">347</span><span id="line-347"> conf.set(JOB_NAME_CONF_KEY, jobname);</span>
-<span class="source-line-no">348</span><span id="line-348"></span>
-<span class="source-line-no">349</span><span id="line-349"> BackupCopyJob copyService = BackupRestoreFactory.getBackupCopyJob(conf);</span>
-<span class="source-line-no">350</span><span id="line-350"> int res = copyService.copy(backupInfo, backupManager, conf, BackupType.INCREMENTAL, strArr);</span>
-<span class="source-line-no">351</span><span id="line-351"> if (res != 0) {</span>
-<span class="source-line-no">352</span><span id="line-352"> LOG.error("Copy incremental HFile files failed with return code: " + res + ".");</span>
-<span class="source-line-no">353</span><span id="line-353"> throw new IOException(</span>
-<span class="source-line-no">354</span><span id="line-354"> "Failed copy from " + StringUtils.join(files, ',') + " to " + backupDest);</span>
-<span class="source-line-no">355</span><span id="line-355"> }</span>
-<span class="source-line-no">356</span><span id="line-356"> LOG.debug("Incremental copy HFiles from " + StringUtils.join(files, ',') + " to " + backupDest</span>
-<span class="source-line-no">357</span><span id="line-357"> + " finished.");</span>
-<span class="source-line-no">358</span><span id="line-358"> } finally {</span>
-<span class="source-line-no">359</span><span id="line-359"> deleteBulkLoadDirectory();</span>
-<span class="source-line-no">360</span><span id="line-360"> }</span>
-<span class="source-line-no">361</span><span id="line-361"> }</span>
-<span class="source-line-no">362</span><span id="line-362"></span>
-<span class="source-line-no">363</span><span id="line-363"> protected void deleteBulkLoadDirectory() throws IOException {</span>
-<span class="source-line-no">364</span><span id="line-364"> // delete original bulk load directory on method exit</span>
-<span class="source-line-no">365</span><span id="line-365"> Path path = getBulkOutputDir();</span>
-<span class="source-line-no">366</span><span id="line-366"> FileSystem fs = FileSystem.get(path.toUri(), conf);</span>
-<span class="source-line-no">367</span><span id="line-367"> boolean result = fs.delete(path, true);</span>
-<span class="source-line-no">368</span><span id="line-368"> if (!result) {</span>
-<span class="source-line-no">369</span><span id="line-369"> LOG.warn("Could not delete " + path);</span>
-<span class="source-line-no">370</span><span id="line-370"> }</span>
-<span class="source-line-no">371</span><span id="line-371"> }</span>
-<span class="source-line-no">372</span><span id="line-372"></span>
-<span class="source-line-no">373</span><span id="line-373"> protected void convertWALsToHFiles() throws IOException {</span>
-<span class="source-line-no">374</span><span id="line-374"> // get incremental backup file list and prepare parameters for DistCp</span>
-<span class="source-line-no">375</span><span id="line-375"> List<String> incrBackupFileList = backupInfo.getIncrBackupFileList();</span>
-<span class="source-line-no">376</span><span id="line-376"> // Get list of tables in incremental backup set</span>
-<span class="source-line-no">377</span><span id="line-377"> Set<TableName> tableSet = backupManager.getIncrementalBackupTableSet();</span>
-<span class="source-line-no">378</span><span id="line-378"> // filter missing files out (they have been copied by previous backups)</span>
-<span class="source-line-no">379</span><span id="line-379"> incrBackupFileList = filterMissingFiles(incrBackupFileList);</span>
-<span class="source-line-no">380</span><span id="line-380"> List<String> tableList = new ArrayList<String>();</span>
-<span class="source-line-no">381</span><span id="line-381"> for (TableName table : tableSet) {</span>
-<span class="source-line-no">382</span><span id="line-382"> // Check if table exists</span>
-<span class="source-line-no">383</span><span id="line-383"> if (tableExists(table, conn)) {</span>
-<span class="source-line-no">384</span><span id="line-384"> tableList.add(table.getNameAsString());</span>
-<span class="source-line-no">385</span><span id="line-385"> } else {</span>
-<span class="source-line-no">386</span><span id="line-386"> LOG.warn("Table " + table + " does not exists. Skipping in WAL converter");</span>
-<span class="source-line-no">387</span><span id="line-387"> }</span>
-<span class="source-line-no">388</span><span id="line-388"> }</span>
-<span class="source-line-no">389</span><span id="line-389"> walToHFiles(incrBackupFileList, tableList);</span>
-<span class="source-line-no">390</span><span id="line-390"></span>
-<span class="source-line-no">391</span><span id="line-391"> }</span>
-<span class="source-line-no">392</span><span id="line-392"></span>
-<span class="source-line-no">393</span><span id="line-393"> protected boolean tableExists(TableName table, Connection conn) throws IOException {</span>
-<span class="source-line-no">394</span><span id="line-394"> try (Admin admin = conn.getAdmin()) {</span>
-<span class="source-line-no">395</span><span id="line-395"> return admin.tableExists(table);</span>
-<span class="source-line-no">396</span><span id="line-396"> }</span>
-<span class="source-line-no">397</span><span id="line-397"> }</span>
-<span class="source-line-no">398</span><span id="line-398"></span>
-<span class="source-line-no">399</span><span id="line-399"> protected void walToHFiles(List<String> dirPaths, List<String> tableList) throws IOException {</span>
-<span class="source-line-no">400</span><span id="line-400"> Tool player = new WALPlayer();</span>
+<span class="source-line-no">324</span><span id="line-324"> // backup complete</span>
+<span class="source-line-no">325</span><span id="line-325"> completeBackup(conn, backupInfo, BackupType.INCREMENTAL, conf);</span>
+<span class="source-line-no">326</span><span id="line-326"></span>
+<span class="source-line-no">327</span><span id="line-327"> List<byte[]> bulkLoadedRows = Lists.transform(bulkLoads, BulkLoad::getRowKey);</span>
+<span class="source-line-no">328</span><span id="line-328"> backupManager.deleteBulkLoadedRows(bulkLoadedRows);</span>
+<span class="source-line-no">329</span><span id="line-329"> } catch (IOException e) {</span>
+<span class="source-line-no">330</span><span id="line-330"> failBackup(conn, backupInfo, backupManager, e, "Unexpected Exception : ",</span>
+<span class="source-line-no">331</span><span id="line-331"> BackupType.INCREMENTAL, conf);</span>
+<span class="source-line-no">332</span><span id="line-332"> throw new IOException(e);</span>
+<span class="source-line-no">333</span><span id="line-333"> }</span>
+<span class="source-line-no">334</span><span id="line-334"> }</span>
+<span class="source-line-no">335</span><span id="line-335"></span>
+<span class="source-line-no">336</span><span id="line-336"> protected void incrementalCopyHFiles(String[] files, String backupDest) throws IOException {</span>
+<span class="source-line-no">337</span><span id="line-337"> try {</span>
+<span class="source-line-no">338</span><span id="line-338"> LOG.debug("Incremental copy HFiles is starting. dest=" + backupDest);</span>
+<span class="source-line-no">339</span><span id="line-339"> // set overall backup phase: incremental_copy</span>
+<span class="source-line-no">340</span><span id="line-340"> backupInfo.setPhase(BackupPhase.INCREMENTAL_COPY);</span>
+<span class="source-line-no">341</span><span id="line-341"> // get incremental backup file list and prepare parms for DistCp</span>
+<span class="source-line-no">342</span><span id="line-342"> String[] strArr = new String[files.length + 1];</span>
+<span class="source-line-no">343</span><span id="line-343"> System.arraycopy(files, 0, strArr, 0, files.length);</span>
+<span class="source-line-no">344</span><span id="line-344"> strArr[strArr.length - 1] = backupDest;</span>
+<span class="source-line-no">345</span><span id="line-345"></span>
+<span class="source-line-no">346</span><span id="line-346"> String jobname = "Incremental_Backup-HFileCopy-" + backupInfo.getBackupId();</span>
+<span class="source-line-no">347</span><span id="line-347"> if (LOG.isDebugEnabled()) {</span>
+<span class="source-line-no">348</span><span id="line-348"> LOG.debug("Setting incremental copy HFiles job name to : " + jobname);</span>
+<span class="source-line-no">349</span><span id="line-349"> }</span>
+<span class="source-line-no">350</span><span id="line-350"> conf.set(JOB_NAME_CONF_KEY, jobname);</span>
+<span class="source-line-no">351</span><span id="line-351"></span>
+<span class="source-line-no">352</span><span id="line-352"> BackupCopyJob copyService = BackupRestoreFactory.getBackupCopyJob(conf);</span>
+<span class="source-line-no">353</span><span id="line-353"> int res = copyService.copy(backupInfo, backupManager, conf, BackupType.INCREMENTAL, strArr);</span>
+<span class="source-line-no">354</span><span id="line-354"> if (res != 0) {</span>
+<span class="source-line-no">355</span><span id="line-355"> LOG.error("Copy incremental HFile files failed with return code: " + res + ".");</span>
+<span class="source-line-no">356</span><span id="line-356"> throw new IOException(</span>
+<span class="source-line-no">357</span><span id="line-357"> "Failed copy from " + StringUtils.join(files, ',') + " to " + backupDest);</span>
+<span class="source-line-no">358</span><span id="line-358"> }</span>
+<span class="source-line-no">359</span><span id="line-359"> LOG.debug("Incremental copy HFiles from " + StringUtils.join(files, ',') + " to " + backupDest</span>
+<span class="source-line-no">360</span><span id="line-360"> + " finished.");</span>
+<span class="source-line-no">361</span><span id="line-361"> } finally {</span>
+<span class="source-line-no">362</span><span id="line-362"> deleteBulkLoadDirectory();</span>
+<span class="source-line-no">363</span><span id="line-363"> }</span>
+<span class="source-line-no">364</span><span id="line-364"> }</span>
+<span class="source-line-no">365</span><span id="line-365"></span>
+<span class="source-line-no">366</span><span id="line-366"> protected void deleteBulkLoadDirectory() throws IOException {</span>
+<span class="source-line-no">367</span><span id="line-367"> // delete original bulk load directory on method exit</span>
+<span class="source-line-no">368</span><span id="line-368"> Path path = getBulkOutputDir();</span>
+<span class="source-line-no">369</span><span id="line-369"> FileSystem fs = FileSystem.get(path.toUri(), conf);</span>
+<span class="source-line-no">370</span><span id="line-370"> boolean result = fs.delete(path, true);</span>
+<span class="source-line-no">371</span><span id="line-371"> if (!result) {</span>
+<span class="source-line-no">372</span><span id="line-372"> LOG.warn("Could not delete " + path);</span>
+<span class="source-line-no">373</span><span id="line-373"> }</span>
+<span class="source-line-no">374</span><span id="line-374"> }</span>
+<span class="source-line-no">375</span><span id="line-375"></span>
+<span class="source-line-no">376</span><span id="line-376"> protected void convertWALsToHFiles() throws IOException {</span>
+<span class="source-line-no">377</span><span id="line-377"> // get incremental backup file list and prepare parameters for DistCp</span>
+<span class="source-line-no">378</span><span id="line-378"> List<String> incrBackupFileList = backupInfo.getIncrBackupFileList();</span>
+<span class="source-line-no">379</span><span id="line-379"> // Get list of tables in incremental backup set</span>
+<span class="source-line-no">380</span><span id="line-380"> Set<TableName> tableSet = backupManager.getIncrementalBackupTableSet();</span>
+<span class="source-line-no">381</span><span id="line-381"> // filter missing files out (they have been copied by previous backups)</span>
+<span class="source-line-no">382</span><span id="line-382"> incrBackupFileList = filterMissingFiles(incrBackupFileList);</span>
+<span class="source-line-no">383</span><span id="line-383"> List<String> tableList = new ArrayList<String>();</span>
+<span class="source-line-no">384</span><span id="line-384"> for (TableName table : tableSet) {</span>
+<span class="source-line-no">385</span><span id="line-385"> // Check if table exists</span>
+<span class="source-line-no">386</span><span id="line-386"> if (tableExists(table, conn)) {</span>
+<span class="source-line-no">387</span><span id="line-387"> tableList.add(table.getNameAsString());</span>
+<span class="source-line-no">388</span><span id="line-388"> } else {</span>
+<span class="source-line-no">389</span><span id="line-389"> LOG.warn("Table " + table + " does not exists. Skipping in WAL converter");</span>
+<span class="source-line-no">390</span><span id="line-390"> }</span>
+<span class="source-line-no">391</span><span id="line-391"> }</span>
+<span class="source-line-no">392</span><span id="line-392"> walToHFiles(incrBackupFileList, tableList);</span>
+<span class="source-line-no">393</span><span id="line-393"></span>
+<span class="source-line-no">394</span><span id="line-394"> }</span>
+<span class="source-line-no">395</span><span id="line-395"></span>
+<span class="source-line-no">396</span><span id="line-396"> protected boolean tableExists(TableName table, Connection conn) throws IOException {</span>
+<span class="source-line-no">397</span><span id="line-397"> try (Admin admin = conn.getAdmin()) {</span>
+<span class="source-line-no">398</span><span id="line-398"> return admin.tableExists(table);</span>
+<span class="source-line-no">399</span><span id="line-399"> }</span>
+<span class="source-line-no">400</span><span id="line-400"> }</span>
<span class="source-line-no">401</span><span id="line-401"></span>
-<span class="source-line-no">402</span><span id="line-402"> // Player reads all files in arbitrary directory structure and creates</span>
-<span class="source-line-no">403</span><span id="line-403"> // a Map task for each file. We use ';' as separator</span>
-<span class="source-line-no">404</span><span id="line-404"> // because WAL file names contains ','</span>
-<span class="source-line-no">405</span><span id="line-405"> String dirs = StringUtils.join(dirPaths, ';');</span>
-<span class="source-line-no">406</span><span id="line-406"> String jobname = "Incremental_Backup-" + backupId;</span>
-<span class="source-line-no">407</span><span id="line-407"></span>
-<span class="source-line-no">408</span><span id="line-408"> Path bulkOutputPath = getBulkOutputDir();</span>
-<span class="source-line-no">409</span><span id="line-409"> conf.set(WALPlayer.BULK_OUTPUT_CONF_KEY, bulkOutputPath.toString());</span>
-<span class="source-line-no">410</span><span id="line-410"> conf.set(WALPlayer.INPUT_FILES_SEPARATOR_KEY, ";");</span>
-<span class="source-line-no">411</span><span id="line-411"> conf.setBoolean(WALPlayer.MULTI_TABLES_SUPPORT, true);</span>
-<span class="source-line-no">412</span><span id="line-412"> conf.set(JOB_NAME_CONF_KEY, jobname);</span>
-<span class="source-line-no">413</span><span id="line-413"> String[] playerArgs = { dirs, StringUtils.join(tableList, ",") };</span>
-<span class="source-line-no">414</span><span id="line-414"></span>
-<span class="source-line-no">415</span><span id="line-415"> try {</span>
-<span class="source-line-no">416</span><span id="line-416"> player.setConf(conf);</span>
-<span class="source-line-no">417</span><span id="line-417"> int result = player.run(playerArgs);</span>
-<span class="source-line-no">418</span><span id="line-418"> if (result != 0) {</span>
-<span class="source-line-no">419</span><span id="line-419"> throw new IOException("WAL Player failed");</span>
-<span class="source-line-no">420</span><span id="line-420"> }</span>
-<span class="source-line-no">421</span><span id="line-421"> conf.unset(WALPlayer.INPUT_FILES_SEPARATOR_KEY);</span>
-<span class="source-line-no">422</span><span id="line-422"> conf.unset(JOB_NAME_CONF_KEY);</span>
-<span class="source-line-no">423</span><span id="line-423"> } catch (IOException e) {</span>
-<span class="source-line-no">424</span><span id="line-424"> throw e;</span>
-<span class="source-line-no">425</span><span id="line-425"> } catch (Exception ee) {</span>
-<span class="source-line-no">426</span><span id="line-426"> throw new IOException("Can not convert from directory " + dirs</span>
-<span class="source-line-no">427</span><span id="line-427"> + " (check Hadoop, HBase and WALPlayer M/R job logs) ", ee);</span>
-<span class="source-line-no">428</span><span id="line-428"> }</span>
-<span class="source-line-no">429</span><span id="line-429"> }</span>
-<span class="source-line-no">430</span><span id="line-430"></span>
-<span class="source-line-no">431</span><span id="line-431"> private void incrementalCopyBulkloadHFiles(FileSystem tgtFs, TableName tn) throws IOException {</span>
-<span class="source-line-no">432</span><span id="line-432"> Path bulkOutDir = getBulkOutputDirForTable(tn);</span>
+<span class="source-line-no">402</span><span id="line-402"> protected void walToHFiles(List<String> dirPaths, List<String> tableList) throws IOException {</span>
+<span class="source-line-no">403</span><span id="line-403"> Tool player = new WALPlayer();</span>
+<span class="source-line-no">404</span><span id="line-404"></span>
+<span class="source-line-no">405</span><span id="line-405"> // Player reads all files in arbitrary directory structure and creates</span>
+<span class="source-line-no">406</span><span id="line-406"> // a Map task for each file. We use ';' as separator</span>
+<span class="source-line-no">407</span><span id="line-407"> // because WAL file names contains ','</span>
+<span class="source-line-no">408</span><span id="line-408"> String dirs = StringUtils.join(dirPaths, ';');</span>
+<span class="source-line-no">409</span><span id="line-409"> String jobname = "Incremental_Backup-" + backupId;</span>
+<span class="source-line-no">410</span><span id="line-410"></span>
+<span class="source-line-no">411</span><span id="line-411"> Path bulkOutputPath = getBulkOutputDir();</span>
+<span class="source-line-no">412</span><span id="line-412"> conf.set(WALPlayer.BULK_OUTPUT_CONF_KEY, bulkOutputPath.toString());</span>
+<span class="source-line-no">413</span><span id="line-413"> conf.set(WALPlayer.INPUT_FILES_SEPARATOR_KEY, ";");</span>
+<span class="source-line-no">414</span><span id="line-414"> conf.setBoolean(WALPlayer.MULTI_TABLES_SUPPORT, true);</span>
+<span class="source-line-no">415</span><span id="line-415"> conf.set(JOB_NAME_CONF_KEY, jobname);</span>
+<span class="source-line-no">416</span><span id="line-416"> String[] playerArgs = { dirs, StringUtils.join(tableList, ",") };</span>
+<span class="source-line-no">417</span><span id="line-417"></span>
+<span class="source-line-no">418</span><span id="line-418"> try {</span>
+<span class="source-line-no">419</span><span id="line-419"> player.setConf(conf);</span>
+<span class="source-line-no">420</span><span id="line-420"> int result = player.run(playerArgs);</span>
+<span class="source-line-no">421</span><span id="line-421"> if (result != 0) {</span>
+<span class="source-line-no">422</span><span id="line-422"> throw new IOException("WAL Player failed");</span>
+<span class="source-line-no">423</span><span id="line-423"> }</span>
+<span class="source-line-no">424</span><span id="line-424"> conf.unset(WALPlayer.INPUT_FILES_SEPARATOR_KEY);</span>
+<span class="source-line-no">425</span><span id="line-425"> conf.unset(JOB_NAME_CONF_KEY);</span>
+<span class="source-line-no">426</span><span id="line-426"> } catch (IOException e) {</span>
+<span class="source-line-no">427</span><span id="line-427"> throw e;</span>
+<span class="source-line-no">428</span><span id="line-428"> } catch (Exception ee) {</span>
+<span class="source-line-no">429</span><span id="line-429"> throw new IOException("Can not convert from directory " + dirs</span>
+<span class="source-line-no">430</span><span id="line-430"> + " (check Hadoop, HBase and WALPlayer M/R job logs) ", ee);</span>
+<span class="source-line-no">431</span><span id="line-431"> }</span>
+<span class="source-line-no">432</span><span id="line-432"> }</span>
<span class="source-line-no">433</span><span id="line-433"></span>
-<span class="source-line-no">434</span><span id="line-434"> if (tgtFs.exists(bulkOutDir)) {</span>
-<span class="source-line-no">435</span><span id="line-435"> conf.setInt(MapReduceBackupCopyJob.NUMBER_OF_LEVELS_TO_PRESERVE_KEY, 2);</span>
-<span class="source-line-no">436</span><span id="line-436"> Path tgtPath = getTargetDirForTable(tn);</span>
-<span class="source-line-no">437</span><span id="line-437"> try {</span>
-<span class="source-line-no">438</span><span id="line-438"> RemoteIterator<LocatedFileStatus> locatedFiles = tgtFs.listFiles(bulkOutDir, true);</span>
-<span class="source-line-no">439</span><span id="line-439"> List<String> files = new ArrayList<>();</span>
-<span class="source-line-no">440</span><span id="line-440"> while (locatedFiles.hasNext()) {</span>
-<span class="source-line-no">441</span><span id="line-441"> LocatedFileStatus file = locatedFiles.next();</span>
-<span class="source-line-no">442</span><span id="line-442"> if (file.isFile() && HFile.isHFileFormat(tgtFs, file.getPath())) {</span>
-<span class="source-line-no">443</span><span id="line-443"> files.add(file.getPath().toString());</span>
-<span class="source-line-no">444</span><span id="line-444"> }</span>
-<span class="source-line-no">445</span><span id="line-445"> }</span>
-<span class="source-line-no">446</span><span id="line-446"> incrementalCopyHFiles(files.toArray(files.toArray(new String[0])), tgtPath.toString());</span>
-<span class="source-line-no">447</span><span id="line-447"> } finally {</span>
-<span class="source-line-no">448</span><span id="line-448"> conf.unset(MapReduceBackupCopyJob.NUMBER_OF_LEVELS_TO_PRESERVE_KEY);</span>
-<span class="source-line-no">449</span><span id="line-449"> }</span>
-<span class="source-line-no">450</span><span id="line-450"> }</span>
-<span class="source-line-no">451</span><span id="line-451"> }</span>
-<span class="source-line-no">452</span><span id="line-452"></span>
-<span class="source-line-no">453</span><span id="line-453"> protected Path getBulkOutputDirForTable(TableName table) {</span>
-<span class="source-line-no">454</span><span id="line-454"> Path tablePath = getBulkOutputDir();</span>
-<span class="source-line-no">455</span><span id="line-455"> tablePath = new Path(tablePath, table.getNamespaceAsString());</span>
-<span class="source-line-no">456</span><span id="line-456"> tablePath = new Path(tablePath, table.getQualifierAsString());</span>
-<span class="source-line-no">457</span><span id="line-457"> return new Path(tablePath, "data");</span>
-<span class="source-line-no">458</span><span id="line-458"> }</span>
-<span class="source-line-no">459</span><span id="line-459"></span>
-<span class="source-line-no">460</span><span id="line-460"> protected Path getBulkOutputDir() {</span>
-<span class="source-line-no">461</span><span id="line-461"> String backupId = backupInfo.getBackupId();</span>
-<span class="source-line-no">462</span><span id="line-462"> Path path = new Path(backupInfo.getBackupRootDir());</span>
-<span class="source-line-no">463</span><span id="line-463"> path = new Path(path, ".tmp");</span>
-<span class="source-line-no">464</span><span id="line-464"> path = new Path(path, backupId);</span>
-<span class="source-line-no">465</span><span id="line-465"> return path;</span>
-<span class="source-line-no">466</span><span id="line-466"> }</span>
-<span class="source-line-no">467</span><span id="line-467"></span>
-<span class="source-line-no">468</span><span id="line-468"> private Path getTargetDirForTable(TableName table) {</span>
-<span class="source-line-no">469</span><span id="line-469"> Path path = new Path(backupInfo.getBackupRootDir() + Path.SEPARATOR + backupInfo.getBackupId());</span>
-<span class="source-line-no">470</span><span id="line-470"> path = new Path(path, table.getNamespaceAsString());</span>
-<span class="source-line-no">471</span><span id="line-471"> path = new Path(path, table.getQualifierAsString());</span>
-<span class="source-line-no">472</span><span id="line-472"> return path;</span>
-<span class="source-line-no">473</span><span id="line-473"> }</span>
-<span class="source-line-no">474</span><span id="line-474"></span>
-<span class="source-line-no">475</span><span id="line-475"> private void setupRegionLocator() throws IOException {</span>
-<span class="source-line-no">476</span><span id="line-476"> Map<TableName, String> fullBackupIds = getFullBackupIds();</span>
-<span class="source-line-no">477</span><span id="line-477"> try (BackupAdminImpl backupAdmin = new BackupAdminImpl(conn)) {</span>
-<span class="source-line-no">478</span><span id="line-478"></span>
-<span class="source-line-no">479</span><span id="line-479"> for (TableName tableName : backupInfo.getTables()) {</span>
-<span class="source-line-no">480</span><span id="line-480"> String fullBackupId = fullBackupIds.get(tableName);</span>
-<span class="source-line-no">481</span><span id="line-481"> BackupInfo fullBackupInfo = backupAdmin.getBackupInfo(fullBackupId);</span>
-<span class="source-line-no">482</span><span id="line-482"> String snapshotName = fullBackupInfo.getSnapshotName(tableName);</span>
-<span class="source-line-no">483</span><span id="line-483"> Path root = HBackupFileSystem.getTableBackupPath(tableName,</span>
-<span class="source-line-no">484</span><span id="line-484"> new Path(fullBackupInfo.getBackupRootDir()), fullBackupId);</span>
-<span class="source-line-no">485</span><span id="line-485"> String manifestDir =</span>
-<span class="source-line-no">486</span><span id="line-486"> SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotName, root).toString();</span>
-<span class="source-line-no">487</span><span id="line-487"> SnapshotRegionLocator.setSnapshotManifestDir(conf, manifestDir, tableName);</span>
-<span class="source-line-no">488</span><span id="line-488"> }</span>
-<span class="source-line-no">489</span><span id="line-489"> }</span>
-<span class="source-line-no">490</span><span id="line-490"> }</span>
-<span class="source-line-no">491</span><span id="line-491"></span>
-<span class="source-line-no">492</span><span id="line-492"> private Map<TableName, String> getFullBackupIds() throws IOException {</span>
-<span class="source-line-no">493</span><span id="line-493"> // Ancestors are stored from newest to oldest, so we can iterate backwards</span>
-<span class="source-line-no">494</span><span id="line-494"> // in order to populate our backupId map with the most recent full backup</span>
-<span class="source-line-no">495</span><span id="line-495"> // for a given table</span>
-<span class="source-line-no">496</span><span id="line-496"> List<BackupManifest.BackupImage> images = getAncestors(backupInfo);</span>
-<span class="source-line-no">497</span><span id="line-497"> Map<TableName, String> results = new HashMap<>();</span>
-<span class="source-line-no">498</span><span id="line-498"> for (int i = images.size() - 1; i >= 0; i--) {</span>
-<span class="source-line-no">499</span><span id="line-499"> BackupManifest.BackupImage image = images.get(i);</span>
-<span class="source-line-no">500</span><span id="line-500"> if (image.getType() != BackupType.FULL) {</span>
-<span class="source-line-no">501</span><span id="line-501"> continue;</span>
-<span class="source-line-no">502</span><span id="line-502"> }</span>
-<span class="source-line-no">503</span><span id="line-503"></span>
-<span class="source-line-no">504</span><span id="line-504"> for (TableName tn : image.getTableNames()) {</span>
-<span class="source-line-no">505</span><span id="line-505"> results.put(tn, image.getBackupId());</span>
-<span class="source-line-no">506</span><span id="line-506"> }</span>
-<span class="source-line-no">507</span><span id="line-507"> }</span>
-<span class="source-line-no">508</span><span id="line-508"> return results;</span>
-<span class="source-line-no">509</span><span id="line-509"> }</span>
-<span class="source-line-no">510</span><span id="line-510"></span>
-<span class="source-line-no">511</span><span id="line-511"> /**</span>
-<span class="source-line-no">512</span><span id="line-512"> * Verifies that the current table descriptor CFs matches the descriptor CFs of the last full</span>
-<span class="source-line-no">513</span><span id="line-513"> * backup for the tables. This ensures CF compatibility across incremental backups. If a mismatch</span>
-<span class="source-line-no">514</span><span id="line-514"> * is detected, a full table backup should be taken, rather than an incremental one</span>
-<span class="source-line-no">515</span><span id="line-515"> */</span>
-<span class="source-line-no">516</span><span id="line-516"> private void verifyCfCompatibility(Set<TableName> tables,</span>
-<span class="source-line-no">517</span><span id="line-517"> Map<TableName, String> tablesToFullBackupId) throws IOException, ColumnFamilyMismatchException {</span>
-<span class="source-line-no">518</span><span id="line-518"> ColumnFamilyMismatchException.ColumnFamilyMismatchExceptionBuilder exBuilder =</span>
-<span class="source-line-no">519</span><span id="line-519"> ColumnFamilyMismatchException.newBuilder();</span>
-<span class="source-line-no">520</span><span id="line-520"> try (Admin admin = conn.getAdmin(); BackupAdminImpl backupAdmin = new BackupAdminImpl(conn)) {</span>
-<span class="source-line-no">521</span><span id="line-521"> for (TableName tn : tables) {</span>
-<span class="source-line-no">522</span><span id="line-522"> String backupId = tablesToFullBackupId.get(tn);</span>
-<span class="source-line-no">523</span><span id="line-523"> BackupInfo fullBackupInfo = backupAdmin.getBackupInfo(backupId);</span>
-<span class="source-line-no">524</span><span id="line-524"></span>
-<span class="source-line-no">525</span><span id="line-525"> ColumnFamilyDescriptor[] currentCfs = admin.getDescriptor(tn).getColumnFamilies();</span>
-<span class="source-line-no">526</span><span id="line-526"> String snapshotName = fullBackupInfo.getSnapshotName(tn);</span>
-<span class="source-line-no">527</span><span id="line-527"> Path root = HBackupFileSystem.getTableBackupPath(tn,</span>
-<span class="source-line-no">528</span><span id="line-528"> new Path(fullBackupInfo.getBackupRootDir()), fullBackupInfo.getBackupId());</span>
-<span class="source-line-no">529</span><span id="line-529"> Path manifestDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotName, root);</span>
-<span class="source-line-no">530</span><span id="line-530"></span>
-<span class="source-line-no">531</span><span id="line-531"> FileSystem fs;</span>
-<span class="source-line-no">532</span><span id="line-532"> try {</span>
-<span class="source-line-no">533</span><span id="line-533"> fs = FileSystem.get(new URI(fullBackupInfo.getBackupRootDir()), conf);</span>
-<span class="source-line-no">534</span><span id="line-534"> } catch (URISyntaxException e) {</span>
-<span class="source-line-no">535</span><span id="line-535"> throw new IOException("Unable to get fs for backup " + fullBackupInfo.getBackupId(), e);</span>
-<span class="source-line-no">536</span><span id="line-536"> }</span>
-<span class="source-line-no">537</span><span id="line-537"></span>
-<span class="source-line-no">538</span><span id="line-538"> SnapshotProtos.SnapshotDescription snapshotDescription =</span>
-<span class="source-line-no">539</span><span id="line-539"> SnapshotDescriptionUtils.readSnapshotInfo(fs, manifestDir);</span>
-<span class="source-line-no">540</span><span id="line-540"> SnapshotManifest manifest =</span>
-<span class="source-line-no">541</span><span id="line-541"> SnapshotManifest.open(conf, fs, manifestDir, snapshotDescription);</span>
-<span class="source-line-no">542</span><span id="line-542"></span>
-<span class="source-line-no">543</span><span id="line-543"> ColumnFamilyDescriptor[] backupCfs = manifest.getTableDescriptor().getColumnFamilies();</span>
-<span class="source-line-no">544</span><span id="line-544"> if (!areCfsCompatible(currentCfs, backupCfs)) {</span>
-<span class="source-line-no">545</span><span id="line-545"> exBuilder.addMismatchedTable(tn, currentCfs, backupCfs);</span>
-<span class="source-line-no">546</span><span id="line-546"> }</span>
-<span class="source-line-no">547</span><span id="line-547"> }</span>
-<span class="source-line-no">548</span><span id="line-548"> }</span>
-<span class="source-line-no">549</span><span id="line-549"></span>
-<span class="source-line-no">550</span><span id="line-550"> ColumnFamilyMismatchException ex = exBuilder.build();</span>
-<span class="source-line-no">551</span><span id="line-551"> if (!ex.getMismatchedTables().isEmpty()) {</span>
-<span class="source-line-no">552</span><span id="line-552"> throw ex;</span>
-<span class="source-line-no">553</span><span id="line-553"> }</span>
-<span class="source-line-no">554</span><span id="line-554"> }</span>
-<span class="source-line-no">555</span><span id="line-555"></span>
-<span class="source-line-no">556</span><span id="line-556"> private static boolean areCfsCompatible(ColumnFamilyDescriptor[] currentCfs,</span>
-<span class="source-line-no">557</span><span id="line-557"> ColumnFamilyDescriptor[] backupCfs) {</span>
-<span class="source-line-no">558</span><span id="line-558"> if (currentCfs.length != backupCfs.length) {</span>
-<span class="source-line-no">559</span><span id="line-559"> return false;</span>
-<span class="source-line-no">560</span><span id="line-560"> }</span>
-<span class="source-line-no">561</span><span id="line-561"></span>
-<span class="source-line-no">562</span><span id="line-562"> for (int i = 0; i < backupCfs.length; i++) {</span>
-<span class="source-line-no">563</span><span id="line-563"> String currentCf = currentCfs[i].getNameAsString();</span>
-<span class="source-line-no">564</span><span id="line-564"> String backupCf = backupCfs[i].getNameAsString();</span>
+<span class="source-line-no">434</span><span id="line-434"> private void incrementalCopyBulkloadHFiles(FileSystem tgtFs, TableName tn) throws IOException {</span>
+<span class="source-line-no">435</span><span id="line-435"> Path bulkOutDir = getBulkOutputDirForTable(tn);</span>
+<span class="source-line-no">436</span><span id="line-436"></span>
+<span class="source-line-no">437</span><span id="line-437"> if (tgtFs.exists(bulkOutDir)) {</span>
+<span class="source-line-no">438</span><span id="line-438"> conf.setInt(MapReduceBackupCopyJob.NUMBER_OF_LEVELS_TO_PRESERVE_KEY, 2);</span>
+<span class="source-line-no">439</span><span id="line-439"> Path tgtPath = getTargetDirForTable(tn);</span>
+<span class="source-line-no">440</span><span id="line-440"> try {</span>
+<span class="source-line-no">441</span><span id="line-441"> RemoteIterator<LocatedFileStatus> locatedFiles = tgtFs.listFiles(bulkOutDir, true);</span>
+<span class="source-line-no">442</span><span id="line-442"> List<String> files = new ArrayList<>();</span>
+<span class="source-line-no">443</span><span id="line-443"> while (locatedFiles.hasNext()) {</span>
+<span class="source-line-no">444</span><span id="line-444"> LocatedFileStatus file = locatedFiles.next();</span>
+<span class="source-line-no">445</span><span id="line-445"> if (file.isFile() && HFile.isHFileFormat(tgtFs, file.getPath())) {</span>
+<span class="source-line-no">446</span><span id="line-446"> files.add(file.getPath().toString());</span>
+<span class="source-line-no">447</span><span id="line-447"> }</span>
+<span class="source-line-no">448</span><span id="line-448"> }</span>
+<span class="source-line-no">449</span><span id="line-449"> incrementalCopyHFiles(files.toArray(files.toArray(new String[0])), tgtPath.toString());</span>
+<span class="source-line-no">450</span><span id="line-450"> } finally {</span>
+<span class="source-line-no">451</span><span id="line-451"> conf.unset(MapReduceBackupCopyJob.NUMBER_OF_LEVELS_TO_PRESERVE_KEY);</span>
+<span class="source-line-no">452</span><span id="line-452"> }</span>
+<span class="source-line-no">453</span><span id="line-453"> }</span>
+<span class="source-line-no">454</span><span id="line-454"> }</span>
+<span class="source-line-no">455</span><span id="line-455"></span>
+<span class="source-line-no">456</span><span id="line-456"> protected Path getBulkOutputDirForTable(TableName table) {</span>
+<span class="source-line-no">457</span><span id="line-457"> Path tablePath = getBulkOutputDir();</span>
+<span class="source-line-no">458</span><span id="line-458"> tablePath = new Path(tablePath, table.getNamespaceAsString());</span>
+<span class="source-line-no">459</span><span id="line-459"> tablePath = new Path(tablePath, table.getQualifierAsString());</span>
+<span class="source-line-no">460</span><span id="line-460"> return new Path(tablePath, "data");</span>
+<span class="source-line-no">461</span><span id="line-461"> }</span>
+<span class="source-line-no">462</span><span id="line-462"></span>
+<span class="source-line-no">463</span><span id="line-463"> protected Path getBulkOutputDir() {</span>
+<span class="source-line-no">464</span><span id="line-464"> String backupId = backupInfo.getBackupId();</span>
+<span class="source-line-no">465</span><span id="line-465"> Path path = new Path(backupInfo.getBackupRootDir());</span>
+<span class="source-line-no">466</span><span id="line-466"> path = new Path(path, ".tmp");</span>
+<span class="source-line-no">467</span><span id="line-467"> path = new Path(path, backupId);</span>
+<span class="source-line-no">468</span><span id="line-468"> return path;</span>
+<span class="source-line-no">469</span><span id="line-469"> }</span>
+<span class="source-line-no">470</span><span id="line-470"></span>
+<span class="source-line-no">471</span><span id="line-471"> private Path getTargetDirForTable(TableName table) {</span>
+<span class="source-line-no">472</span><span id="line-472"> Path path = new Path(backupInfo.getBackupRootDir() + Path.SEPARATOR + backupInfo.getBackupId());</span>
+<span class="source-line-no">473</span><span id="line-473"> path = new Path(path, table.getNamespaceAsString());</span>
+<span class="source-line-no">474</span><span id="line-474"> path = new Path(path, table.getQualifierAsString());</span>
+<span class="source-line-no">475</span><span id="line-475"> return path;</span>
+<span class="source-line-no">476</span><span id="line-476"> }</span>
+<span class="source-line-no">477</span><span id="line-477"></span>
+<span class="source-line-no">478</span><span id="line-478"> private void setupRegionLocator() throws IOException {</span>
+<span class="source-line-no">479</span><span id="line-479"> Map<TableName, String> fullBackupIds = getFullBackupIds();</span>
+<span class="source-line-no">480</span><span id="line-480"> try (BackupAdminImpl backupAdmin = new BackupAdminImpl(conn)) {</span>
+<span class="source-line-no">481</span><span id="line-481"></span>
+<span class="source-line-no">482</span><span id="line-482"> for (TableName tableName : backupInfo.getTables()) {</span>
+<span class="source-line-no">483</span><span id="line-483"> String fullBackupId = fullBackupIds.get(tableName);</span>
+<span class="source-line-no">484</span><span id="line-484"> BackupInfo fullBackupInfo = backupAdmin.getBackupInfo(fullBackupId);</span>
+<span class="source-line-no">485</span><span id="line-485"> String snapshotName = fullBackupInfo.getSnapshotName(tableName);</span>
+<span class="source-line-no">486</span><span id="line-486"> Path root = HBackupFileSystem.getTableBackupPath(tableName,</span>
+<span class="source-line-no">487</span><span id="line-487"> new Path(fullBackupInfo.getBackupRootDir()), fullBackupId);</span>
+<span class="source-line-no">488</span><span id="line-488"> String manifestDir =</span>
+<span class="source-line-no">489</span><span id="line-489"> SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotName, root).toString();</span>
+<span class="source-line-no">490</span><span id="line-490"> SnapshotRegionLocator.setSnapshotManifestDir(conf, manifestDir, tableName);</span>
+<span class="source-line-no">491</span><span id="line-491"> }</span>
+<span class="source-line-no">492</span><span id="line-492"> }</span>
+<span class="source-line-no">493</span><span id="line-493"> }</span>
+<span class="source-line-no">494</span><span id="line-494"></span>
+<span class="source-line-no">495</span><span id="line-495"> private Map<TableName, String> getFullBackupIds() throws IOException {</span>
+<span class="source-line-no">496</span><span id="line-496"> // Ancestors are stored from newest to oldest, so we can iterate backwards</span>
+<span class="source-line-no">497</span><span id="line-497"> // in order to populate our backupId map with the most recent full backup</span>
+<span class="source-line-no">498</span><span id="line-498"> // for a given table</span>
+<span class="source-line-no">499</span><span id="line-499"> List<BackupManifest.BackupImage> images = getAncestors(backupInfo);</span>
+<span class="source-line-no">500</span><span id="line-500"> Map<TableName, String> results = new HashMap<>();</span>
+<span class="source-line-no">501</span><span id="line-501"> for (int i = images.size() - 1; i >= 0; i--) {</span>
+<span class="source-line-no">502</span><span id="line-502"> BackupManifest.BackupImage image = images.get(i);</span>
+<span class="source-line-no">503</span><span id="line-503"> if (image.getType() != BackupType.FULL) {</span>
+<span class="source-line-no">504</span><span id="line-504"> continue;</span>
+<span class="source-line-no">505</span><span id="line-505"> }</span>
+<span class="source-line-no">506</span><span id="line-506"></span>
+<span class="source-line-no">507</span><span id="line-507"> for (TableName tn : image.getTableNames()) {</span>
+<span class="source-line-no">508</span><span id="line-508"> results.put(tn, image.getBackupId());</span>
+<span class="source-line-no">509</span><span id="line-509"> }</span>
+<span class="source-line-no">510</span><span id="line-510"> }</span>
+<span class="source-line-no">511</span><span id="line-511"> return results;</span>
+<span class="source-line-no">512</span><span id="line-512"> }</span>
+<span class="source-line-no">513</span><span id="line-513"></span>
+<span class="source-line-no">514</span><span id="line-514"> /**</span>
+<span class="source-line-no">515</span><span id="line-515"> * Verifies that the current table descriptor CFs matches the descriptor CFs of the last full</span>
+<span class="source-line-no">516</span><span id="line-516"> * backup for the tables. This ensures CF compatibility across incremental backups. If a mismatch</span>
+<span class="source-line-no">517</span><span id="line-517"> * is detected, a full table backup should be taken, rather than an incremental one</span>
+<span class="source-line-no">518</span><span id="line-518"> */</span>
+<span class="source-line-no">519</span><span id="line-519"> private void verifyCfCompatibility(Set<TableName> tables,</span>
+<span class="source-line-no">520</span><span id="line-520"> Map<TableName, String> tablesToFullBackupId) throws IOException, ColumnFamilyMismatchException {</span>
+<span class="source-line-no">521</span><span id="line-521"> ColumnFamilyMismatchException.ColumnFamilyMismatchExceptionBuilder exBuilder =</span>
+<span class="source-line-no">522</span><span id="line-522"> ColumnFamilyMismatchException.newBuilder();</span>
+<span class="source-line-no">523</span><span id="line-523"> try (Admin admin = conn.getAdmin(); BackupAdminImpl backupAdmin = new BackupAdminImpl(conn)) {</span>
+<span class="source-line-no">524</span><span id="line-524"> for (TableName tn : tables) {</span>
+<span class="source-line-no">525</span><span id="line-525"> String backupId = tablesToFullBackupId.get(tn);</span>
+<span class="source-line-no">526</span><span id="line-526"> BackupInfo fullBackupInfo = backupAdmin.getBackupInfo(backupId);</span>
+<span class="source-line-no">527</span><span id="line-527"></span>
+<span class="source-line-no">528</span><span id="line-528"> ColumnFamilyDescriptor[] currentCfs = admin.getDescriptor(tn).getColumnFamilies();</span>
+<span class="source-line-no">529</span><span id="line-529"> String snapshotName = fullBackupInfo.getSnapshotName(tn);</span>
+<span class="source-line-no">530</span><span id="line-530"> Path root = HBackupFileSystem.getTableBackupPath(tn,</span>
+<span class="source-line-no">531</span><span id="line-531"> new Path(fullBackupInfo.getBackupRootDir()), fullBackupInfo.getBackupId());</span>
+<span class="source-line-no">532</span><span id="line-532"> Path manifestDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotName, root);</span>
+<span class="source-line-no">533</span><span id="line-533"></span>
+<span class="source-line-no">534</span><span id="line-534"> FileSystem fs;</span>
+<span class="source-line-no">535</span><span id="line-535"> try {</span>
+<span class="source-line-no">536</span><span id="line-536"> fs = FileSystem.get(new URI(fullBackupInfo.getBackupRootDir()), conf);</span>
+<span class="source-line-no">537</span><span id="line-537"> } catch (URISyntaxException e) {</span>
+<span class="source-line-no">538</span><span id="line-538"> throw new IOException("Unable to get fs for backup " + fullBackupInfo.getBackupId(), e);</span>
+<span class="source-line-no">539</span><span id="line-539"> }</span>
+<span class="source-line-no">540</span><span id="line-540"></span>
+<span class="source-line-no">541</span><span id="line-541"> SnapshotProtos.SnapshotDescription snapshotDescription =</span>
+<span class="source-line-no">542</span><span id="line-542"> SnapshotDescriptionUtils.readSnapshotInfo(fs, manifestDir);</span>
+<span class="source-line-no">543</span><span id="line-543"> SnapshotManifest manifest =</span>
+<span class="source-line-no">544</span><span id="line-544"> SnapshotManifest.open(conf, fs, manifestDir, snapshotDescription);</span>
+<span class="source-line-no">545</span><span id="line-545"> if (</span>
+<span class="source-line-no">546</span><span id="line-546"> SnapshotDescriptionUtils.isExpiredSnapshot(snapshotDescription.getTtl(),</span>
+<span class="source-line-no">547</span><span id="line-547"> snapshotDescription.getCreationTime(), EnvironmentEdgeManager.currentTime())</span>
+<span class="source-line-no">548</span><span id="line-548"> ) {</span>
+<span class="source-line-no">549</span><span id="line-549"> throw new SnapshotTTLExpiredException(</span>
+<span class="source-line-no">550</span><span id="line-550"> ProtobufUtil.createSnapshotDesc(snapshotDescription));</span>
+<span class="source-line-no">551</span><span id="line-551"> }</span>
+<span class="source-line-no">552</span><span id="line-552"></span>
+<span class="source-line-no">553</span><span id="line-553"> ColumnFamilyDescriptor[] backupCfs = manifest.getTableDescriptor().getColumnFamilies();</span>
+<span class="source-line-no">554</span><span id="line-554"> if (!areCfsCompatible(currentCfs, backupCfs)) {</span>
+<span class="source-line-no">555</span><span id="line-555"> exBuilder.addMismatchedTable(tn, currentCfs, backupCfs);</span>
+<span class="source-line-no">556</span><span id="line-556"> }</span>
+<span class="source-line-no">557</span><span id="line-557"> }</span>
+<span class="source-line-no">558</span><span id="line-558"> }</span>
+<span class="source-line-no">559</span><span id="line-559"></span>
+<span class="source-line-no">560</span><span id="line-560"> ColumnFamilyMismatchException ex = exBuilder.build();</span>
+<span class="source-line-no">561</span><span id="line-561"> if (!ex.getMismatchedTables().isEmpty()) {</span>
+<span class="source-line-no">562</span><span id="line-562"> throw ex;</span>
+<span class="source-line-no">563</span><span id="line-563"> }</span>
+<span class="source-line-no">564</span><span id="line-564"> }</span>
<span class="source-line-no">565</span><span id="line-565"></span>
-<span class="source-line-no">566</span><span id="line-566"> if (!currentCf.equals(backupCf)) {</span>
-<span class="source-line-no">567</span><span id="line-567"> return false;</span>
-<span class="source-line-no">568</span><span id="line-568"> }</span>
-<span class="source-line-no">569</span><span id="line-569"> }</span>
-<span class="source-line-no">570</span><span id="line-570"></span>
-<span class="source-line-no">571</span><span id="line-571"> return true;</span>
-<span class="source-line-no">572</span><span id="line-572"> }</span>
-<span class="source-line-no">573</span><span id="line-573">}</span>
+<span class="source-line-no">566</span><span id="line-566"> private static boolean areCfsCompatible(ColumnFamilyDescriptor[] currentCfs,</span>
+<span class="source-line-no">567</span><span id="line-567"> ColumnFamilyDescriptor[] backupCfs) {</span>
+<span class="source-line-no">568</span><span id="line-568"> if (currentCfs.length != backupCfs.length) {</span>
+<span class="source-line-no">569</span><span id="line-569"> return false;</span>
+<span class="source-line-no">570</span><span id="line-570"> }</span>
+<span class="source-line-no">571</span><span id="line-571"></span>
+<span class="source-line-no">572</span><span id="line-572"> for (int i = 0; i < backupCfs.length; i++) {</span>
+<span class="source-line-no">573</span><span id="line-573"> String currentCf = currentCfs[i].getNameAsString();</span>
+<span class="source-line-no">574</span><span id="line-574"> String backupCf = backupCfs[i].getNameAsString();</span>
+<span class="source-line-no">575</span><span id="line-575"></span>
+<span class="source-line-no">576</span><span id="line-576"> if (!currentCf.equals(backupCf)) {</span>
+<span class="source-line-no">577</span><span id="line-577"> return false;</span>
+<span class="source-line-no">578</span><span id="line-578"> }</span>
+<span class="source-line-no">579</span><span id="line-579"> }</span>
+<span class="source-line-no">580</span><span id="line-580"></span>
+<span class="source-line-no">581</span><span id="line-581"> return true;</span>
+<span class="source-line-no">582</span><span id="line-582"> }</span>
+<span class="source-line-no">583</span><span id="line-583">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html
index 8de368b51a8..e72405ab0a3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/util/RestoreTool.html
@@ -59,502 +59,516 @@
<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.regionserver.StoreFileInfo;</span>
<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.snapshot.SnapshotManifest;</span>
-<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.tool.BulkLoadHFilesTool;</span>
-<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.util.FSTableDescriptors;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.slf4j.Logger;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
-<span class="source-line-no">058</span><span id="line-58"></span>
-<span class="source-line-no">059</span><span id="line-59">/**</span>
-<span class="source-line-no">060</span><span id="line-60"> * A collection for methods used by multiple classes to restore HBase tables.</span>
-<span class="source-line-no">061</span><span id="line-61"> */</span>
-<span class="source-line-no">062</span><span id="line-62">@InterfaceAudience.Private</span>
-<span class="source-line-no">063</span><span id="line-63">public class RestoreTool {</span>
-<span class="source-line-no">064</span><span id="line-64"> public static final Logger LOG = LoggerFactory.getLogger(RestoreTool.class);</span>
-<span class="source-line-no">065</span><span id="line-65"> private final static long TABLE_AVAILABILITY_WAIT_TIME = 180000;</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67"> private final String[] ignoreDirs = { HConstants.RECOVERED_EDITS_DIR };</span>
-<span class="source-line-no">068</span><span id="line-68"> protected Configuration conf;</span>
-<span class="source-line-no">069</span><span id="line-69"> protected Path backupRootPath;</span>
-<span class="source-line-no">070</span><span id="line-70"> protected Path restoreRootDir;</span>
-<span class="source-line-no">071</span><span id="line-71"> protected String backupId;</span>
-<span class="source-line-no">072</span><span id="line-72"> protected FileSystem fs;</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74"> // store table name and snapshot dir mapping</span>
-<span class="source-line-no">075</span><span id="line-75"> private final HashMap<TableName, Path> snapshotMap = new HashMap<>();</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> public RestoreTool(Configuration conf, final Path backupRootPath, final Path restoreRootDir,</span>
-<span class="source-line-no">078</span><span id="line-78"> final String backupId) throws IOException {</span>
-<span class="source-line-no">079</span><span id="line-79"> this.conf = conf;</span>
-<span class="source-line-no">080</span><span id="line-80"> this.backupRootPath = backupRootPath;</span>
-<span class="source-line-no">081</span><span id="line-81"> this.backupId = backupId;</span>
-<span class="source-line-no">082</span><span id="line-82"> this.fs = backupRootPath.getFileSystem(conf);</span>
-<span class="source-line-no">083</span><span id="line-83"> this.restoreRootDir = restoreRootDir;</span>
-<span class="source-line-no">084</span><span id="line-84"> }</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86"> /**</span>
-<span class="source-line-no">087</span><span id="line-87"> * return value represent path for:</span>
-<span class="source-line-no">088</span><span id="line-88"> * ".../user/biadmin/backup1/default/t1_dn/backup_1396650096738/archive/data/default/t1_dn"</span>
-<span class="source-line-no">089</span><span id="line-89"> * @param tableName table name</span>
-<span class="source-line-no">090</span><span id="line-90"> * @return path to table archive</span>
-<span class="source-line-no">091</span><span id="line-91"> * @throws IOException exception</span>
-<span class="source-line-no">092</span><span id="line-92"> */</span>
-<span class="source-line-no">093</span><span id="line-93"> Path getTableArchivePath(TableName tableName) throws IOException {</span>
-<span class="source-line-no">094</span><span id="line-94"> Path baseDir =</span>
-<span class="source-line-no">095</span><span id="line-95"> new Path(HBackupFileSystem.getTableBackupPath(tableName, backupRootPath, backupId),</span>
-<span class="source-line-no">096</span><span id="line-96"> HConstants.HFILE_ARCHIVE_DIRECTORY);</span>
-<span class="source-line-no">097</span><span id="line-97"> Path dataDir = new Path(baseDir, HConstants.BASE_NAMESPACE_DIR);</span>
-<span class="source-line-no">098</span><span id="line-98"> Path archivePath = new Path(dataDir, tableName.getNamespaceAsString());</span>
-<span class="source-line-no">099</span><span id="line-99"> Path tableArchivePath = new Path(archivePath, tableName.getQualifierAsString());</span>
-<span class="source-line-no">100</span><span id="line-100"> if (!fs.exists(tableArchivePath) || !fs.getFileStatus(tableArchivePath).isDirectory()) {</span>
-<span class="source-line-no">101</span><span id="line-101"> LOG.debug("Folder tableArchivePath: " + tableArchivePath.toString() + " does not exists");</span>
-<span class="source-line-no">102</span><span id="line-102"> tableArchivePath = null; // empty table has no archive</span>
-<span class="source-line-no">103</span><span id="line-103"> }</span>
-<span class="source-line-no">104</span><span id="line-104"> return tableArchivePath;</span>
-<span class="source-line-no">105</span><span id="line-105"> }</span>
-<span class="source-line-no">106</span><span id="line-106"></span>
-<span class="source-line-no">107</span><span id="line-107"> /**</span>
-<span class="source-line-no">108</span><span id="line-108"> * Gets region list</span>
-<span class="source-line-no">109</span><span id="line-109"> * @param tableName table name</span>
-<span class="source-line-no">110</span><span id="line-110"> * @return RegionList region list</span>
-<span class="source-line-no">111</span><span id="line-111"> * @throws IOException exception</span>
-<span class="source-line-no">112</span><span id="line-112"> */</span>
-<span class="source-line-no">113</span><span id="line-113"> ArrayList<Path> getRegionList(TableName tableName) throws IOException {</span>
-<span class="source-line-no">114</span><span id="line-114"> Path tableArchivePath = getTableArchivePath(tableName);</span>
-<span class="source-line-no">115</span><span id="line-115"> ArrayList<Path> regionDirList = new ArrayList<>();</span>
-<span class="source-line-no">116</span><span id="line-116"> FileStatus[] children = fs.listStatus(tableArchivePath);</span>
-<span class="source-line-no">117</span><span id="line-117"> for (FileStatus childStatus : children) {</span>
-<span class="source-line-no">118</span><span id="line-118"> // here child refer to each region(Name)</span>
-<span class="source-line-no">119</span><span id="line-119"> Path child = childStatus.getPath();</span>
-<span class="source-line-no">120</span><span id="line-120"> regionDirList.add(child);</span>
-<span class="source-line-no">121</span><span id="line-121"> }</span>
-<span class="source-line-no">122</span><span id="line-122"> return regionDirList;</span>
-<span class="source-line-no">123</span><span id="line-123"> }</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125"> void modifyTableSync(Connection conn, TableDescriptor desc) throws IOException {</span>
-<span class="source-line-no">126</span><span id="line-126"> try (Admin admin = conn.getAdmin()) {</span>
-<span class="source-line-no">127</span><span id="line-127"> admin.modifyTable(desc);</span>
-<span class="source-line-no">128</span><span id="line-128"> int attempt = 0;</span>
-<span class="source-line-no">129</span><span id="line-129"> int maxAttempts = 600;</span>
-<span class="source-line-no">130</span><span id="line-130"> while (!admin.isTableAvailable(desc.getTableName())) {</span>
-<span class="source-line-no">131</span><span id="line-131"> Thread.sleep(100);</span>
-<span class="source-line-no">132</span><span id="line-132"> attempt++;</span>
-<span class="source-line-no">133</span><span id="line-133"> if (attempt++ > maxAttempts) {</span>
-<span class="source-line-no">134</span><span id="line-134"> throw new IOException("Timeout expired " + (maxAttempts * 100) + "ms");</span>
-<span class="source-line-no">135</span><span id="line-135"> }</span>
-<span class="source-line-no">136</span><span id="line-136"> }</span>
-<span class="source-line-no">137</span><span id="line-137"> } catch (Exception e) {</span>
-<span class="source-line-no">138</span><span id="line-138"> throw new IOException(e);</span>
-<span class="source-line-no">139</span><span id="line-139"> }</span>
-<span class="source-line-no">140</span><span id="line-140"> }</span>
-<span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142"> /**</span>
-<span class="source-line-no">143</span><span id="line-143"> * During incremental backup operation. Call WalPlayer to replay WAL in backup image Currently</span>
-<span class="source-line-no">144</span><span id="line-144"> * tableNames and newTablesNames only contain single table, will be expanded to multiple tables in</span>
-<span class="source-line-no">145</span><span id="line-145"> * the future</span>
-<span class="source-line-no">146</span><span id="line-146"> * @param conn HBase connection</span>
-<span class="source-line-no">147</span><span id="line-147"> * @param tableBackupPath backup path</span>
-<span class="source-line-no">148</span><span id="line-148"> * @param logDirs : incremental backup folders, which contains WAL</span>
-<span class="source-line-no">149</span><span id="line-149"> * @param tableNames : source tableNames(table names were backuped)</span>
-<span class="source-line-no">150</span><span id="line-150"> * @param newTableNames : target tableNames(table names to be restored to)</span>
-<span class="source-line-no">151</span><span id="line-151"> * @param incrBackupId incremental backup Id</span>
-<span class="source-line-no">152</span><span id="line-152"> * @param keepOriginalSplits whether the original region splits from the full backup should be</span>
-<span class="source-line-no">153</span><span id="line-153"> * kept</span>
-<span class="source-line-no">154</span><span id="line-154"> * @throws IOException exception</span>
-<span class="source-line-no">155</span><span id="line-155"> */</span>
-<span class="source-line-no">156</span><span id="line-156"> public void incrementalRestoreTable(Connection conn, Path tableBackupPath, Path[] logDirs,</span>
-<span class="source-line-no">157</span><span id="line-157"> TableName[] tableNames, TableName[] newTableNames, String incrBackupId,</span>
-<span class="source-line-no">158</span><span id="line-158"> boolean keepOriginalSplits) throws IOException {</span>
-<span class="source-line-no">159</span><span id="line-159"> try (Admin admin = conn.getAdmin()) {</span>
-<span class="source-line-no">160</span><span id="line-160"> if (tableNames.length != newTableNames.length) {</span>
-<span class="source-line-no">161</span><span id="line-161"> throw new IOException("Number of source tables and target tables does not match!");</span>
-<span class="source-line-no">162</span><span id="line-162"> }</span>
-<span class="source-line-no">163</span><span id="line-163"> FileSystem fileSys = tableBackupPath.getFileSystem(this.conf);</span>
-<span class="source-line-no">164</span><span id="line-164"></span>
-<span class="source-line-no">165</span><span id="line-165"> // for incremental backup image, expect the table already created either by user or previous</span>
-<span class="source-line-no">166</span><span id="line-166"> // full backup. Here, check that all new tables exists</span>
-<span class="source-line-no">167</span><span id="line-167"> for (TableName tableName : newTableNames) {</span>
-<span class="source-line-no">168</span><span id="line-168"> if (!admin.tableExists(tableName)) {</span>
-<span class="source-line-no">169</span><span id="line-169"> throw new IOException("HBase table " + tableName</span>
-<span class="source-line-no">170</span><span id="line-170"> + " does not exist. Create the table first, e.g. by restoring a full backup.");</span>
-<span class="source-line-no">171</span><span id="line-171"> }</span>
-<span class="source-line-no">172</span><span id="line-172"> }</span>
-<span class="source-line-no">173</span><span id="line-173"> // adjust table schema</span>
-<span class="source-line-no">174</span><span id="line-174"> for (int i = 0; i < tableNames.length; i++) {</span>
-<span class="source-line-no">175</span><span id="line-175"> TableName tableName = tableNames[i];</span>
-<span class="source-line-no">176</span><span id="line-176"> TableDescriptor tableDescriptor = getTableDescriptor(fileSys, tableName, incrBackupId);</span>
-<span class="source-line-no">177</span><span id="line-177"> if (tableDescriptor == null) {</span>
-<span class="source-line-no">178</span><span id="line-178"> throw new IOException("Can't find " + tableName + "'s descriptor.");</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"> LOG.debug("Found descriptor " + tableDescriptor + " through " + incrBackupId);</span>
-<span class="source-line-no">181</span><span id="line-181"></span>
-<span class="source-line-no">182</span><span id="line-182"> TableName newTableName = newTableNames[i];</span>
-<span class="source-line-no">183</span><span id="line-183"> TableDescriptor newTableDescriptor = admin.getDescriptor(newTableName);</span>
-<span class="source-line-no">184</span><span id="line-184"> List<ColumnFamilyDescriptor> families = Arrays.asList(tableDescriptor.getColumnFamilies());</span>
-<span class="source-line-no">185</span><span id="line-185"> List<ColumnFamilyDescriptor> existingFamilies =</span>
-<span class="source-line-no">186</span><span id="line-186"> Arrays.asList(newTableDescriptor.getColumnFamilies());</span>
-<span class="source-line-no">187</span><span id="line-187"> TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(newTableDescriptor);</span>
-<span class="source-line-no">188</span><span id="line-188"> boolean schemaChangeNeeded = false;</span>
-<span class="source-line-no">189</span><span id="line-189"> for (ColumnFamilyDescriptor family : families) {</span>
-<span class="source-line-no">190</span><span id="line-190"> if (!existingFamilies.contains(family)) {</span>
-<span class="source-line-no">191</span><span id="line-191"> builder.setColumnFamily(family);</span>
-<span class="source-line-no">192</span><span id="line-192"> schemaChangeNeeded = true;</span>
-<span class="source-line-no">193</span><span id="line-193"> }</span>
-<span class="source-line-no">194</span><span id="line-194"> }</span>
-<span class="source-line-no">195</span><span id="line-195"> for (ColumnFamilyDescriptor family : existingFamilies) {</span>
-<span class="source-line-no">196</span><span id="line-196"> if (!families.contains(family)) {</span>
-<span class="source-line-no">197</span><span id="line-197"> builder.removeColumnFamily(family.getName());</span>
-<span class="source-line-no">198</span><span id="line-198"> schemaChangeNeeded = true;</span>
-<span class="source-line-no">199</span><span id="line-199"> }</span>
-<span class="source-line-no">200</span><span id="line-200"> }</span>
-<span class="source-line-no">201</span><span id="line-201"> if (schemaChangeNeeded) {</span>
-<span class="source-line-no">202</span><span id="line-202"> modifyTableSync(conn, builder.build());</span>
-<span class="source-line-no">203</span><span id="line-203"> LOG.info("Changed " + newTableDescriptor.getTableName() + " to: " + newTableDescriptor);</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"> }</span>
-<span class="source-line-no">206</span><span id="line-206"> configureForRestoreJob(keepOriginalSplits);</span>
-<span class="source-line-no">207</span><span id="line-207"> RestoreJob restoreService = BackupRestoreFactory.getRestoreJob(conf);</span>
-<span class="source-line-no">208</span><span id="line-208"></span>
-<span class="source-line-no">209</span><span id="line-209"> restoreService.run(logDirs, tableNames, restoreRootDir, newTableNames, false);</span>
-<span class="source-line-no">210</span><span id="line-210"> }</span>
-<span class="source-line-no">211</span><span id="line-211"> }</span>
-<span class="source-line-no">212</span><span id="line-212"></span>
-<span class="source-line-no">213</span><span id="line-213"> public void fullRestoreTable(Connection conn, Path tableBackupPath, TableName tableName,</span>
-<span class="source-line-no">214</span><span id="line-214"> TableName newTableName, boolean truncateIfExists, boolean isKeepOriginalSplits,</span>
-<span class="source-line-no">215</span><span id="line-215"> String lastIncrBackupId) throws IOException {</span>
-<span class="source-line-no">216</span><span id="line-216"> createAndRestoreTable(conn, tableName, newTableName, tableBackupPath, truncateIfExists,</span>
-<span class="source-line-no">217</span><span id="line-217"> isKeepOriginalSplits, lastIncrBackupId);</span>
-<span class="source-line-no">218</span><span id="line-218"> }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220"> /**</span>
-<span class="source-line-no">221</span><span id="line-221"> * Returns value represent path for path to backup table snapshot directory:</span>
-<span class="source-line-no">222</span><span id="line-222"> * "/$USER/SBACKUP_ROOT/backup_id/namespace/table/.hbase-snapshot"</span>
-<span class="source-line-no">223</span><span id="line-223"> * @param backupRootPath backup root path</span>
-<span class="source-line-no">224</span><span id="line-224"> * @param tableName table name</span>
-<span class="source-line-no">225</span><span id="line-225"> * @param backupId backup Id</span>
-<span class="source-line-no">226</span><span id="line-226"> * @return path for snapshot</span>
-<span class="source-line-no">227</span><span id="line-227"> */</span>
-<span class="source-line-no">228</span><span id="line-228"> Path getTableSnapshotPath(Path backupRootPath, TableName tableName, String backupId) {</span>
-<span class="source-line-no">229</span><span id="line-229"> return new Path(HBackupFileSystem.getTableBackupPath(tableName, backupRootPath, backupId),</span>
-<span class="source-line-no">230</span><span id="line-230"> HConstants.SNAPSHOT_DIR_NAME);</span>
-<span class="source-line-no">231</span><span id="line-231"> }</span>
-<span class="source-line-no">232</span><span id="line-232"></span>
-<span class="source-line-no">233</span><span id="line-233"> /**</span>
-<span class="source-line-no">234</span><span id="line-234"> * Returns value represent path for:</span>
-<span class="source-line-no">235</span><span id="line-235"> * ""/$USER/SBACKUP_ROOT/backup_id/namespace/table/.hbase-snapshot/</span>
-<span class="source-line-no">236</span><span id="line-236"> * snapshot_1396650097621_namespace_table" this path contains .snapshotinfo, .tabledesc (0.96 and</span>
-<span class="source-line-no">237</span><span id="line-237"> * 0.98) this path contains .snapshotinfo, .data.manifest (trunk)</span>
-<span class="source-line-no">238</span><span id="line-238"> * @param tableName table name</span>
-<span class="source-line-no">239</span><span id="line-239"> * @return path to table info</span>
-<span class="source-line-no">240</span><span id="line-240"> * @throws IOException exception</span>
-<span class="source-line-no">241</span><span id="line-241"> */</span>
-<span class="source-line-no">242</span><span id="line-242"> Path getTableInfoPath(TableName tableName) throws IOException {</span>
-<span class="source-line-no">243</span><span id="line-243"> Path tableSnapShotPath = getTableSnapshotPath(backupRootPath, tableName, backupId);</span>
-<span class="source-line-no">244</span><span id="line-244"> Path tableInfoPath = null;</span>
-<span class="source-line-no">245</span><span id="line-245"></span>
-<span class="source-line-no">246</span><span id="line-246"> // can't build the path directly as the timestamp values are different</span>
-<span class="source-line-no">247</span><span id="line-247"> FileStatus[] snapshots = fs.listStatus(tableSnapShotPath,</span>
-<span class="source-line-no">248</span><span id="line-248"> new SnapshotDescriptionUtils.CompletedSnaphotDirectoriesFilter(fs));</span>
-<span class="source-line-no">249</span><span id="line-249"> for (FileStatus snapshot : snapshots) {</span>
-<span class="source-line-no">250</span><span id="line-250"> tableInfoPath = snapshot.getPath();</span>
-<span class="source-line-no">251</span><span id="line-251"> // SnapshotManifest.DATA_MANIFEST_NAME = "data.manifest";</span>
-<span class="source-line-no">252</span><span id="line-252"> if (tableInfoPath.getName().endsWith("data.manifest")) {</span>
-<span class="source-line-no">253</span><span id="line-253"> break;</span>
-<span class="source-line-no">254</span><span id="line-254"> }</span>
-<span class="source-line-no">255</span><span id="line-255"> }</span>
-<span class="source-line-no">256</span><span id="line-256"> return tableInfoPath;</span>
-<span class="source-line-no">257</span><span id="line-257"> }</span>
-<span class="source-line-no">258</span><span id="line-258"></span>
-<span class="source-line-no">259</span><span id="line-259"> /**</span>
-<span class="source-line-no">260</span><span id="line-260"> * Get table descriptor</span>
-<span class="source-line-no">261</span><span id="line-261"> * @param tableName is the table backed up</span>
-<span class="source-line-no">262</span><span id="line-262"> * @return {@link TableDescriptor} saved in backup image of the table</span>
-<span class="source-line-no">263</span><span id="line-263"> */</span>
-<span class="source-line-no">264</span><span id="line-264"> TableDescriptor getTableDesc(TableName tableName) throws IOException {</span>
-<span class="source-line-no">265</span><span id="line-265"> Path tableInfoPath = this.getTableInfoPath(tableName);</span>
-<span class="source-line-no">266</span><span id="line-266"> SnapshotDescription desc = SnapshotDescriptionUtils.readSnapshotInfo(fs, tableInfoPath);</span>
-<span class="source-line-no">267</span><span id="line-267"> SnapshotManifest manifest = SnapshotManifest.open(conf, fs, tableInfoPath, desc);</span>
-<span class="source-line-no">268</span><span id="line-268"> TableDescriptor tableDescriptor = manifest.getTableDescriptor();</span>
-<span class="source-line-no">269</span><span id="line-269"> if (!tableDescriptor.getTableName().equals(tableName)) {</span>
-<span class="source-line-no">270</span><span id="line-270"> LOG.error("couldn't find Table Desc for table: " + tableName + " under tableInfoPath: "</span>
-<span class="source-line-no">271</span><span id="line-271"> + tableInfoPath.toString());</span>
-<span class="source-line-no">272</span><span id="line-272"> LOG.error(</span>
-<span class="source-line-no">273</span><span id="line-273"> "tableDescriptor.getNameAsString() = " + tableDescriptor.getTableName().getNameAsString());</span>
-<span class="source-line-no">274</span><span id="line-274"> throw new FileNotFoundException("couldn't find Table Desc for table: " + tableName</span>
-<span class="source-line-no">275</span><span id="line-275"> + " under tableInfoPath: " + tableInfoPath.toString());</span>
-<span class="source-line-no">276</span><span id="line-276"> }</span>
-<span class="source-line-no">277</span><span id="line-277"> return tableDescriptor;</span>
-<span class="source-line-no">278</span><span id="line-278"> }</span>
-<span class="source-line-no">279</span><span id="line-279"></span>
-<span class="source-line-no">280</span><span id="line-280"> private TableDescriptor getTableDescriptor(FileSystem fileSys, TableName tableName,</span>
-<span class="source-line-no">281</span><span id="line-281"> String lastIncrBackupId) throws IOException {</span>
-<span class="source-line-no">282</span><span id="line-282"> if (lastIncrBackupId != null) {</span>
-<span class="source-line-no">283</span><span id="line-283"> String target =</span>
-<span class="source-line-no">284</span><span id="line-284"> BackupUtils.getTableBackupDir(backupRootPath.toString(), lastIncrBackupId, tableName);</span>
-<span class="source-line-no">285</span><span id="line-285"> return FSTableDescriptors.getTableDescriptorFromFs(fileSys, new Path(target));</span>
-<span class="source-line-no">286</span><span id="line-286"> }</span>
-<span class="source-line-no">287</span><span id="line-287"> return null;</span>
-<span class="source-line-no">288</span><span id="line-288"> }</span>
-<span class="source-line-no">289</span><span id="line-289"></span>
-<span class="source-line-no">290</span><span id="line-290"> private void createAndRestoreTable(Connection conn, TableName tableName, TableName newTableName,</span>
-<span class="source-line-no">291</span><span id="line-291"> Path tableBackupPath, boolean truncateIfExists, boolean isKeepOriginalSplits,</span>
-<span class="source-line-no">292</span><span id="line-292"> String lastIncrBackupId) throws IOException {</span>
-<span class="source-line-no">293</span><span id="line-293"> if (newTableName == null) {</span>
-<span class="source-line-no">294</span><span id="line-294"> newTableName = tableName;</span>
-<span class="source-line-no">295</span><span id="line-295"> }</span>
-<span class="source-line-no">296</span><span id="line-296"> FileSystem fileSys = tableBackupPath.getFileSystem(this.conf);</span>
+<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.snapshot.SnapshotTTLExpiredException;</span>
+<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.tool.BulkLoadHFilesTool;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.util.FSTableDescriptors;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.slf4j.Logger;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61">/**</span>
+<span class="source-line-no">062</span><span id="line-62"> * A collection for methods used by multiple classes to restore HBase tables.</span>
+<span class="source-line-no">063</span><span id="line-63"> */</span>
+<span class="source-line-no">064</span><span id="line-64">@InterfaceAudience.Private</span>
+<span class="source-line-no">065</span><span id="line-65">public class RestoreTool {</span>
+<span class="source-line-no">066</span><span id="line-66"> public static final Logger LOG = LoggerFactory.getLogger(RestoreTool.class);</span>
+<span class="source-line-no">067</span><span id="line-67"> private final static long TABLE_AVAILABILITY_WAIT_TIME = 180000;</span>
+<span class="source-line-no">068</span><span id="line-68"></span>
+<span class="source-line-no">069</span><span id="line-69"> private final String[] ignoreDirs = { HConstants.RECOVERED_EDITS_DIR };</span>
+<span class="source-line-no">070</span><span id="line-70"> protected Configuration conf;</span>
+<span class="source-line-no">071</span><span id="line-71"> protected Path backupRootPath;</span>
+<span class="source-line-no">072</span><span id="line-72"> protected Path restoreRootDir;</span>
+<span class="source-line-no">073</span><span id="line-73"> protected String backupId;</span>
+<span class="source-line-no">074</span><span id="line-74"> protected FileSystem fs;</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76"> // store table name and snapshot dir mapping</span>
+<span class="source-line-no">077</span><span id="line-77"> private final HashMap<TableName, Path> snapshotMap = new HashMap<>();</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79"> public RestoreTool(Configuration conf, final Path backupRootPath, final Path restoreRootDir,</span>
+<span class="source-line-no">080</span><span id="line-80"> final String backupId) throws IOException {</span>
+<span class="source-line-no">081</span><span id="line-81"> this.conf = conf;</span>
+<span class="source-line-no">082</span><span id="line-82"> this.backupRootPath = backupRootPath;</span>
+<span class="source-line-no">083</span><span id="line-83"> this.backupId = backupId;</span>
+<span class="source-line-no">084</span><span id="line-84"> this.fs = backupRootPath.getFileSystem(conf);</span>
+<span class="source-line-no">085</span><span id="line-85"> this.restoreRootDir = restoreRootDir;</span>
+<span class="source-line-no">086</span><span id="line-86"> }</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88"> /**</span>
+<span class="source-line-no">089</span><span id="line-89"> * return value represent path for:</span>
+<span class="source-line-no">090</span><span id="line-90"> * ".../user/biadmin/backup1/default/t1_dn/backup_1396650096738/archive/data/default/t1_dn"</span>
+<span class="source-line-no">091</span><span id="line-91"> * @param tableName table name</span>
+<span class="source-line-no">092</span><span id="line-92"> * @return path to table archive</span>
+<span class="source-line-no">093</span><span id="line-93"> * @throws IOException exception</span>
+<span class="source-line-no">094</span><span id="line-94"> */</span>
+<span class="source-line-no">095</span><span id="line-95"> Path getTableArchivePath(TableName tableName) throws IOException {</span>
+<span class="source-line-no">096</span><span id="line-96"> Path baseDir =</span>
+<span class="source-line-no">097</span><span id="line-97"> new Path(HBackupFileSystem.getTableBackupPath(tableName, backupRootPath, backupId),</span>
+<span class="source-line-no">098</span><span id="line-98"> HConstants.HFILE_ARCHIVE_DIRECTORY);</span>
+<span class="source-line-no">099</span><span id="line-99"> Path dataDir = new Path(baseDir, HConstants.BASE_NAMESPACE_DIR);</span>
+<span class="source-line-no">100</span><span id="line-100"> Path archivePath = new Path(dataDir, tableName.getNamespaceAsString());</span>
+<span class="source-line-no">101</span><span id="line-101"> Path tableArchivePath = new Path(archivePath, tableName.getQualifierAsString());</span>
+<span class="source-line-no">102</span><span id="line-102"> if (!fs.exists(tableArchivePath) || !fs.getFileStatus(tableArchivePath).isDirectory()) {</span>
+<span class="source-line-no">103</span><span id="line-103"> LOG.debug("Folder tableArchivePath: " + tableArchivePath.toString() + " does not exists");</span>
+<span class="source-line-no">104</span><span id="line-104"> tableArchivePath = null; // empty table has no archive</span>
+<span class="source-line-no">105</span><span id="line-105"> }</span>
+<span class="source-line-no">106</span><span id="line-106"> return tableArchivePath;</span>
+<span class="source-line-no">107</span><span id="line-107"> }</span>
+<span class="source-line-no">108</span><span id="line-108"></span>
+<span class="source-line-no">109</span><span id="line-109"> /**</span>
+<span class="source-line-no">110</span><span id="line-110"> * Gets region list</span>
+<span class="source-line-no">111</span><span id="line-111"> * @param tableName table name</span>
+<span class="source-line-no">112</span><span id="line-112"> * @return RegionList region list</span>
+<span class="source-line-no">113</span><span id="line-113"> * @throws IOException exception</span>
+<span class="source-line-no">114</span><span id="line-114"> */</span>
+<span class="source-line-no">115</span><span id="line-115"> ArrayList<Path> getRegionList(TableName tableName) throws IOException {</span>
+<span class="source-line-no">116</span><span id="line-116"> Path tableArchivePath = getTableArchivePath(tableName);</span>
+<span class="source-line-no">117</span><span id="line-117"> ArrayList<Path> regionDirList = new ArrayList<>();</span>
+<span class="source-line-no">118</span><span id="line-118"> FileStatus[] children = fs.listStatus(tableArchivePath);</span>
+<span class="source-line-no">119</span><span id="line-119"> for (FileStatus childStatus : children) {</span>
+<span class="source-line-no">120</span><span id="line-120"> // here child refer to each region(Name)</span>
+<span class="source-line-no">121</span><span id="line-121"> Path child = childStatus.getPath();</span>
+<span class="source-line-no">122</span><span id="line-122"> regionDirList.add(child);</span>
+<span class="source-line-no">123</span><span id="line-123"> }</span>
+<span class="source-line-no">124</span><span id="line-124"> return regionDirList;</span>
+<span class="source-line-no">125</span><span id="line-125"> }</span>
+<span class="source-line-no">126</span><span id="line-126"></span>
+<span class="source-line-no">127</span><span id="line-127"> void modifyTableSync(Connection conn, TableDescriptor desc) throws IOException {</span>
+<span class="source-line-no">128</span><span id="line-128"> try (Admin admin = conn.getAdmin()) {</span>
+<span class="source-line-no">129</span><span id="line-129"> admin.modifyTable(desc);</span>
+<span class="source-line-no">130</span><span id="line-130"> int attempt = 0;</span>
+<span class="source-line-no">131</span><span id="line-131"> int maxAttempts = 600;</span>
+<span class="source-line-no">132</span><span id="line-132"> while (!admin.isTableAvailable(desc.getTableName())) {</span>
+<span class="source-line-no">133</span><span id="line-133"> Thread.sleep(100);</span>
+<span class="source-line-no">134</span><span id="line-134"> attempt++;</span>
+<span class="source-line-no">135</span><span id="line-135"> if (attempt++ > maxAttempts) {</span>
+<span class="source-line-no">136</span><span id="line-136"> throw new IOException("Timeout expired " + (maxAttempts * 100) + "ms");</span>
+<span class="source-line-no">137</span><span id="line-137"> }</span>
+<span class="source-line-no">138</span><span id="line-138"> }</span>
+<span class="source-line-no">139</span><span id="line-139"> } catch (Exception e) {</span>
+<span class="source-line-no">140</span><span id="line-140"> throw new IOException(e);</span>
+<span class="source-line-no">141</span><span id="line-141"> }</span>
+<span class="source-line-no">142</span><span id="line-142"> }</span>
+<span class="source-line-no">143</span><span id="line-143"></span>
+<span class="source-line-no">144</span><span id="line-144"> /**</span>
+<span class="source-line-no">145</span><span id="line-145"> * During incremental backup operation. Call WalPlayer to replay WAL in backup image Currently</span>
+<span class="source-line-no">146</span><span id="line-146"> * tableNames and newTablesNames only contain single table, will be expanded to multiple tables in</span>
+<span class="source-line-no">147</span><span id="line-147"> * the future</span>
+<span class="source-line-no">148</span><span id="line-148"> * @param conn HBase connection</span>
+<span class="source-line-no">149</span><span id="line-149"> * @param tableBackupPath backup path</span>
+<span class="source-line-no">150</span><span id="line-150"> * @param logDirs : incremental backup folders, which contains WAL</span>
+<span class="source-line-no">151</span><span id="line-151"> * @param tableNames : source tableNames(table names were backuped)</span>
+<span class="source-line-no">152</span><span id="line-152"> * @param newTableNames : target tableNames(table names to be restored to)</span>
+<span class="source-line-no">153</span><span id="line-153"> * @param incrBackupId incremental backup Id</span>
+<span class="source-line-no">154</span><span id="line-154"> * @param keepOriginalSplits whether the original region splits from the full backup should be</span>
+<span class="source-line-no">155</span><span id="line-155"> * kept</span>
+<span class="source-line-no">156</span><span id="line-156"> * @throws IOException exception</span>
+<span class="source-line-no">157</span><span id="line-157"> */</span>
+<span class="source-line-no">158</span><span id="line-158"> public void incrementalRestoreTable(Connection conn, Path tableBackupPath, Path[] logDirs,</span>
+<span class="source-line-no">159</span><span id="line-159"> TableName[] tableNames, TableName[] newTableNames, String incrBackupId,</span>
+<span class="source-line-no">160</span><span id="line-160"> boolean keepOriginalSplits) throws IOException {</span>
+<span class="source-line-no">161</span><span id="line-161"> try (Admin admin = conn.getAdmin()) {</span>
+<span class="source-line-no">162</span><span id="line-162"> if (tableNames.length != newTableNames.length) {</span>
+<span class="source-line-no">163</span><span id="line-163"> throw new IOException("Number of source tables and target tables does not match!");</span>
+<span class="source-line-no">164</span><span id="line-164"> }</span>
+<span class="source-line-no">165</span><span id="line-165"> FileSystem fileSys = tableBackupPath.getFileSystem(this.conf);</span>
+<span class="source-line-no">166</span><span id="line-166"></span>
+<span class="source-line-no">167</span><span id="line-167"> // for incremental backup image, expect the table already created either by user or previous</span>
+<span class="source-line-no">168</span><span id="line-168"> // full backup. Here, check that all new tables exists</span>
+<span class="source-line-no">169</span><span id="line-169"> for (TableName tableName : newTableNames) {</span>
+<span class="source-line-no">170</span><span id="line-170"> if (!admin.tableExists(tableName)) {</span>
+<span class="source-line-no">171</span><span id="line-171"> throw new IOException("HBase table " + tableName</span>
+<span class="source-line-no">172</span><span id="line-172"> + " does not exist. Create the table first, e.g. by restoring a full backup.");</span>
+<span class="source-line-no">173</span><span id="line-173"> }</span>
+<span class="source-line-no">174</span><span id="line-174"> }</span>
+<span class="source-line-no">175</span><span id="line-175"> // adjust table schema</span>
+<span class="source-line-no">176</span><span id="line-176"> for (int i = 0; i < tableNames.length; i++) {</span>
+<span class="source-line-no">177</span><span id="line-177"> TableName tableName = tableNames[i];</span>
+<span class="source-line-no">178</span><span id="line-178"> TableDescriptor tableDescriptor = getTableDescriptor(fileSys, tableName, incrBackupId);</span>
+<span class="source-line-no">179</span><span id="line-179"> if (tableDescriptor == null) {</span>
+<span class="source-line-no">180</span><span id="line-180"> throw new IOException("Can't find " + tableName + "'s descriptor.");</span>
+<span class="source-line-no">181</span><span id="line-181"> }</span>
+<span class="source-line-no">182</span><span id="line-182"> LOG.debug("Found descriptor " + tableDescriptor + " through " + incrBackupId);</span>
+<span class="source-line-no">183</span><span id="line-183"></span>
+<span class="source-line-no">184</span><span id="line-184"> TableName newTableName = newTableNames[i];</span>
+<span class="source-line-no">185</span><span id="line-185"> TableDescriptor newTableDescriptor = admin.getDescriptor(newTableName);</span>
+<span class="source-line-no">186</span><span id="line-186"> List<ColumnFamilyDescriptor> families = Arrays.asList(tableDescriptor.getColumnFamilies());</span>
+<span class="source-line-no">187</span><span id="line-187"> List<ColumnFamilyDescriptor> existingFamilies =</span>
+<span class="source-line-no">188</span><span id="line-188"> Arrays.asList(newTableDescriptor.getColumnFamilies());</span>
+<span class="source-line-no">189</span><span id="line-189"> TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(newTableDescriptor);</span>
+<span class="source-line-no">190</span><span id="line-190"> boolean schemaChangeNeeded = false;</span>
+<span class="source-line-no">191</span><span id="line-191"> for (ColumnFamilyDescriptor family : families) {</span>
+<span class="source-line-no">192</span><span id="line-192"> if (!existingFamilies.contains(family)) {</span>
+<span class="source-line-no">193</span><span id="line-193"> builder.setColumnFamily(family);</span>
+<span class="source-line-no">194</span><span id="line-194"> schemaChangeNeeded = true;</span>
+<span class="source-line-no">195</span><span id="line-195"> }</span>
+<span class="source-line-no">196</span><span id="line-196"> }</span>
+<span class="source-line-no">197</span><span id="line-197"> for (ColumnFamilyDescriptor family : existingFamilies) {</span>
+<span class="source-line-no">198</span><span id="line-198"> if (!families.contains(family)) {</span>
+<span class="source-line-no">199</span><span id="line-199"> builder.removeColumnFamily(family.getName());</span>
+<span class="source-line-no">200</span><span id="line-200"> schemaChangeNeeded = true;</span>
+<span class="source-line-no">201</span><span id="line-201"> }</span>
+<span class="source-line-no">202</span><span id="line-202"> }</span>
+<span class="source-line-no">203</span><span id="line-203"> if (schemaChangeNeeded) {</span>
+<span class="source-line-no">204</span><span id="line-204"> modifyTableSync(conn, builder.build());</span>
+<span class="source-line-no">205</span><span id="line-205"> LOG.info("Changed " + newTableDescriptor.getTableName() + " to: " + newTableDescriptor);</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> }</span>
+<span class="source-line-no">208</span><span id="line-208"> configureForRestoreJob(keepOriginalSplits);</span>
+<span class="source-line-no">209</span><span id="line-209"> RestoreJob restoreService = BackupRestoreFactory.getRestoreJob(conf);</span>
+<span class="source-line-no">210</span><span id="line-210"></span>
+<span class="source-line-no">211</span><span id="line-211"> restoreService.run(logDirs, tableNames, restoreRootDir, newTableNames, false);</span>
+<span class="source-line-no">212</span><span id="line-212"> }</span>
+<span class="source-line-no">213</span><span id="line-213"> }</span>
+<span class="source-line-no">214</span><span id="line-214"></span>
+<span class="source-line-no">215</span><span id="line-215"> public void fullRestoreTable(Connection conn, Path tableBackupPath, TableName tableName,</span>
+<span class="source-line-no">216</span><span id="line-216"> TableName newTableName, boolean truncateIfExists, boolean isKeepOriginalSplits,</span>
+<span class="source-line-no">217</span><span id="line-217"> String lastIncrBackupId) throws IOException {</span>
+<span class="source-line-no">218</span><span id="line-218"> createAndRestoreTable(conn, tableName, newTableName, tableBackupPath, truncateIfExists,</span>
+<span class="source-line-no">219</span><span id="line-219"> isKeepOriginalSplits, lastIncrBackupId);</span>
+<span class="source-line-no">220</span><span id="line-220"> }</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222"> /**</span>
+<span class="source-line-no">223</span><span id="line-223"> * Returns value represent path for path to backup table snapshot directory:</span>
+<span class="source-line-no">224</span><span id="line-224"> * "/$USER/SBACKUP_ROOT/backup_id/namespace/table/.hbase-snapshot"</span>
+<span class="source-line-no">225</span><span id="line-225"> * @param backupRootPath backup root path</span>
+<span class="source-line-no">226</span><span id="line-226"> * @param tableName table name</span>
+<span class="source-line-no">227</span><span id="line-227"> * @param backupId backup Id</span>
+<span class="source-line-no">228</span><span id="line-228"> * @return path for snapshot</span>
+<span class="source-line-no">229</span><span id="line-229"> */</span>
+<span class="source-line-no">230</span><span id="line-230"> Path getTableSnapshotPath(Path backupRootPath, TableName tableName, String backupId) {</span>
+<span class="source-line-no">231</span><span id="line-231"> return new Path(HBackupFileSystem.getTableBackupPath(tableName, backupRootPath, backupId),</span>
+<span class="source-line-no">232</span><span id="line-232"> HConstants.SNAPSHOT_DIR_NAME);</span>
+<span class="source-line-no">233</span><span id="line-233"> }</span>
+<span class="source-line-no">234</span><span id="line-234"></span>
+<span class="source-line-no">235</span><span id="line-235"> /**</span>
+<span class="source-line-no">236</span><span id="line-236"> * Returns value represent path for:</span>
+<span class="source-line-no">237</span><span id="line-237"> * ""/$USER/SBACKUP_ROOT/backup_id/namespace/table/.hbase-snapshot/</span>
+<span class="source-line-no">238</span><span id="line-238"> * snapshot_1396650097621_namespace_table" this path contains .snapshotinfo, .tabledesc (0.96 and</span>
+<span class="source-line-no">239</span><span id="line-239"> * 0.98) this path contains .snapshotinfo, .data.manifest (trunk)</span>
+<span class="source-line-no">240</span><span id="line-240"> * @param tableName table name</span>
+<span class="source-line-no">241</span><span id="line-241"> * @return path to table info</span>
+<span class="source-line-no">242</span><span id="line-242"> * @throws IOException exception</span>
+<span class="source-line-no">243</span><span id="line-243"> */</span>
+<span class="source-line-no">244</span><span id="line-244"> Path getTableInfoPath(TableName tableName) throws IOException {</span>
+<span class="source-line-no">245</span><span id="line-245"> Path tableSnapShotPath = getTableSnapshotPath(backupRootPath, tableName, backupId);</span>
+<span class="source-line-no">246</span><span id="line-246"> Path tableInfoPath = null;</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248"> // can't build the path directly as the timestamp values are different</span>
+<span class="source-line-no">249</span><span id="line-249"> FileStatus[] snapshots = fs.listStatus(tableSnapShotPath,</span>
+<span class="source-line-no">250</span><span id="line-250"> new SnapshotDescriptionUtils.CompletedSnaphotDirectoriesFilter(fs));</span>
+<span class="source-line-no">251</span><span id="line-251"> for (FileStatus snapshot : snapshots) {</span>
+<span class="source-line-no">252</span><span id="line-252"> tableInfoPath = snapshot.getPath();</span>
+<span class="source-line-no">253</span><span id="line-253"> // SnapshotManifest.DATA_MANIFEST_NAME = "data.manifest";</span>
+<span class="source-line-no">254</span><span id="line-254"> if (tableInfoPath.getName().endsWith("data.manifest")) {</span>
+<span class="source-line-no">255</span><span id="line-255"> break;</span>
+<span class="source-line-no">256</span><span id="line-256"> }</span>
+<span class="source-line-no">257</span><span id="line-257"> }</span>
+<span class="source-line-no">258</span><span id="line-258"> return tableInfoPath;</span>
+<span class="source-line-no">259</span><span id="line-259"> }</span>
+<span class="source-line-no">260</span><span id="line-260"></span>
+<span class="source-line-no">261</span><span id="line-261"> /**</span>
+<span class="source-line-no">262</span><span id="line-262"> * Get table descriptor</span>
+<span class="source-line-no">263</span><span id="line-263"> * @param tableName is the table backed up</span>
+<span class="source-line-no">264</span><span id="line-264"> * @return {@link TableDescriptor} saved in backup image of the table</span>
+<span class="source-line-no">265</span><span id="line-265"> */</span>
+<span class="source-line-no">266</span><span id="line-266"> TableDescriptor getTableDesc(TableName tableName) throws IOException {</span>
+<span class="source-line-no">267</span><span id="line-267"> Path tableInfoPath = this.getTableInfoPath(tableName);</span>
+<span class="source-line-no">268</span><span id="line-268"> SnapshotDescription desc = SnapshotDescriptionUtils.readSnapshotInfo(fs, tableInfoPath);</span>
+<span class="source-line-no">269</span><span id="line-269"> SnapshotManifest manifest = SnapshotManifest.open(conf, fs, tableInfoPath, desc);</span>
+<span class="source-line-no">270</span><span id="line-270"> if (</span>
+<span class="source-line-no">271</span><span id="line-271"> SnapshotDescriptionUtils.isExpiredSnapshot(desc.getTtl(), desc.getCreationTime(),</span>
+<span class="source-line-no">272</span><span id="line-272"> EnvironmentEdgeManager.currentTime())</span>
+<span class="source-line-no">273</span><span id="line-273"> ) {</span>
+<span class="source-line-no">274</span><span id="line-274"> throw new SnapshotTTLExpiredException(ProtobufUtil.createSnapshotDesc(desc));</span>
+<span class="source-line-no">275</span><span id="line-275"> }</span>
+<span class="source-line-no">276</span><span id="line-276"> TableDescriptor tableDescriptor = manifest.getTableDescriptor();</span>
+<span class="source-line-no">277</span><span id="line-277"> if (!tableDescriptor.getTableName().equals(tableName)) {</span>
+<span class="source-line-no">278</span><span id="line-278"> LOG.error("couldn't find Table Desc for table: " + tableName + " under tableInfoPath: "</span>
+<span class="source-line-no">279</span><span id="line-279"> + tableInfoPath.toString());</span>
+<span class="source-line-no">280</span><span id="line-280"> LOG.error(</span>
+<span class="source-line-no">281</span><span id="line-281"> "tableDescriptor.getNameAsString() = " + tableDescriptor.getTableName().getNameAsString());</span>
+<span class="source-line-no">282</span><span id="line-282"> throw new FileNotFoundException("couldn't find Table Desc for table: " + tableName</span>
+<span class="source-line-no">283</span><span id="line-283"> + " under tableInfoPath: " + tableInfoPath.toString());</span>
+<span class="source-line-no">284</span><span id="line-284"> }</span>
+<span class="source-line-no">285</span><span id="line-285"> return tableDescriptor;</span>
+<span class="source-line-no">286</span><span id="line-286"> }</span>
+<span class="source-line-no">287</span><span id="line-287"></span>
+<span class="source-line-no">288</span><span id="line-288"> private TableDescriptor getTableDescriptor(FileSystem fileSys, TableName tableName,</span>
+<span class="source-line-no">289</span><span id="line-289"> String lastIncrBackupId) throws IOException {</span>
+<span class="source-line-no">290</span><span id="line-290"> if (lastIncrBackupId != null) {</span>
+<span class="source-line-no">291</span><span id="line-291"> String target =</span>
+<span class="source-line-no">292</span><span id="line-292"> BackupUtils.getTableBackupDir(backupRootPath.toString(), lastIncrBackupId, tableName);</span>
+<span class="source-line-no">293</span><span id="line-293"> return FSTableDescriptors.getTableDescriptorFromFs(fileSys, new Path(target));</span>
+<span class="source-line-no">294</span><span id="line-294"> }</span>
+<span class="source-line-no">295</span><span id="line-295"> return null;</span>
+<span class="source-line-no">296</span><span id="line-296"> }</span>
<span class="source-line-no">297</span><span id="line-297"></span>
-<span class="source-line-no">298</span><span id="line-298"> // get table descriptor first</span>
-<span class="source-line-no">299</span><span id="line-299"> TableDescriptor tableDescriptor = getTableDescriptor(fileSys, tableName, lastIncrBackupId);</span>
-<span class="source-line-no">300</span><span id="line-300"> if (tableDescriptor != null) {</span>
-<span class="source-line-no">301</span><span id="line-301"> LOG.debug("Retrieved descriptor: " + tableDescriptor + " thru " + lastIncrBackupId);</span>
-<span class="source-line-no">302</span><span id="line-302"> }</span>
-<span class="source-line-no">303</span><span id="line-303"></span>
-<span class="source-line-no">304</span><span id="line-304"> if (tableDescriptor == null) {</span>
-<span class="source-line-no">305</span><span id="line-305"> Path tableSnapshotPath = getTableSnapshotPath(backupRootPath, tableName, backupId);</span>
-<span class="source-line-no">306</span><span id="line-306"> if (fileSys.exists(tableSnapshotPath)) {</span>
-<span class="source-line-no">307</span><span id="line-307"> // snapshot path exist means the backup path is in HDFS</span>
-<span class="source-line-no">308</span><span id="line-308"> // check whether snapshot dir already recorded for target table</span>
-<span class="source-line-no">309</span><span id="line-309"> if (snapshotMap.get(tableName) != null) {</span>
-<span class="source-line-no">310</span><span id="line-310"> SnapshotDescription desc =</span>
-<span class="source-line-no">311</span><span id="line-311"> SnapshotDescriptionUtils.readSnapshotInfo(fileSys, tableSnapshotPath);</span>
-<span class="source-line-no">312</span><span id="line-312"> SnapshotManifest manifest = SnapshotManifest.open(conf, fileSys, tableSnapshotPath, desc);</span>
-<span class="source-line-no">313</span><span id="line-313"> tableDescriptor = manifest.getTableDescriptor();</span>
-<span class="source-line-no">314</span><span id="line-314"> } else {</span>
-<span class="source-line-no">315</span><span id="line-315"> tableDescriptor = getTableDesc(tableName);</span>
-<span class="source-line-no">316</span><span id="line-316"> snapshotMap.put(tableName, getTableInfoPath(tableName));</span>
-<span class="source-line-no">317</span><span id="line-317"> }</span>
-<span class="source-line-no">318</span><span id="line-318"> if (tableDescriptor == null) {</span>
-<span class="source-line-no">319</span><span id="line-319"> LOG.debug("Found no table descriptor in the snapshot dir, previous schema would be lost");</span>
-<span class="source-line-no">320</span><span id="line-320"> }</span>
-<span class="source-line-no">321</span><span id="line-321"> } else {</span>
-<span class="source-line-no">322</span><span id="line-322"> throw new IOException(</span>
-<span class="source-line-no">323</span><span id="line-323"> "Table snapshot directory: " + tableSnapshotPath + " does not exist.");</span>
-<span class="source-line-no">324</span><span id="line-324"> }</span>
-<span class="source-line-no">325</span><span id="line-325"> }</span>
-<span class="source-line-no">326</span><span id="line-326"></span>
-<span class="source-line-no">327</span><span id="line-327"> Path tableArchivePath = getTableArchivePath(tableName);</span>
-<span class="source-line-no">328</span><span id="line-328"> if (tableArchivePath == null) {</span>
-<span class="source-line-no">329</span><span id="line-329"> if (tableDescriptor != null) {</span>
-<span class="source-line-no">330</span><span id="line-330"> // find table descriptor but no archive dir means the table is empty, create table and exit</span>
-<span class="source-line-no">331</span><span id="line-331"> if (LOG.isDebugEnabled()) {</span>
-<span class="source-line-no">332</span><span id="line-332"> LOG.debug("find table descriptor but no archive dir for table " + tableName</span>
-<span class="source-line-no">333</span><span id="line-333"> + ", will only create table");</span>
+<span class="source-line-no">298</span><span id="line-298"> private void createAndRestoreTable(Connection conn, TableName tableName, TableName newTableName,</span>
+<span class="source-line-no">299</span><span id="line-299"> Path tableBackupPath, boolean truncateIfExists, boolean isKeepOriginalSplits,</span>
+<span class="source-line-no">300</span><span id="line-300"> String lastIncrBackupId) throws IOException {</span>
+<span class="source-line-no">301</span><span id="line-301"> if (newTableName == null) {</span>
+<span class="source-line-no">302</span><span id="line-302"> newTableName = tableName;</span>
+<span class="source-line-no">303</span><span id="line-303"> }</span>
+<span class="source-line-no">304</span><span id="line-304"> FileSystem fileSys = tableBackupPath.getFileSystem(this.conf);</span>
+<span class="source-line-no">305</span><span id="line-305"></span>
+<span class="source-line-no">306</span><span id="line-306"> // get table descriptor first</span>
+<span class="source-line-no">307</span><span id="line-307"> TableDescriptor tableDescriptor = getTableDescriptor(fileSys, tableName, lastIncrBackupId);</span>
+<span class="source-line-no">308</span><span id="line-308"> if (tableDescriptor != null) {</span>
+<span class="source-line-no">309</span><span id="line-309"> LOG.debug("Retrieved descriptor: " + tableDescriptor + " thru " + lastIncrBackupId);</span>
+<span class="source-line-no">310</span><span id="line-310"> }</span>
+<span class="source-line-no">311</span><span id="line-311"></span>
+<span class="source-line-no">312</span><span id="line-312"> if (tableDescriptor == null) {</span>
+<span class="source-line-no">313</span><span id="line-313"> Path tableSnapshotPath = getTableSnapshotPath(backupRootPath, tableName, backupId);</span>
+<span class="source-line-no">314</span><span id="line-314"> if (fileSys.exists(tableSnapshotPath)) {</span>
+<span class="source-line-no">315</span><span id="line-315"> // snapshot path exist means the backup path is in HDFS</span>
+<span class="source-line-no">316</span><span id="line-316"> // check whether snapshot dir already recorded for target table</span>
+<span class="source-line-no">317</span><span id="line-317"> if (snapshotMap.get(tableName) != null) {</span>
+<span class="source-line-no">318</span><span id="line-318"> SnapshotDescription desc =</span>
+<span class="source-line-no">319</span><span id="line-319"> SnapshotDescriptionUtils.readSnapshotInfo(fileSys, tableSnapshotPath);</span>
+<span class="source-line-no">320</span><span id="line-320"> SnapshotManifest manifest = SnapshotManifest.open(conf, fileSys, tableSnapshotPath, desc);</span>
+<span class="source-line-no">321</span><span id="line-321"> if (</span>
+<span class="source-line-no">322</span><span id="line-322"> SnapshotDescriptionUtils.isExpiredSnapshot(desc.getTtl(), desc.getCreationTime(),</span>
+<span class="source-line-no">323</span><span id="line-323"> EnvironmentEdgeManager.currentTime())</span>
+<span class="source-line-no">324</span><span id="line-324"> ) {</span>
+<span class="source-line-no">325</span><span id="line-325"> throw new SnapshotTTLExpiredException(ProtobufUtil.createSnapshotDesc(desc));</span>
+<span class="source-line-no">326</span><span id="line-326"> }</span>
+<span class="source-line-no">327</span><span id="line-327"> tableDescriptor = manifest.getTableDescriptor();</span>
+<span class="source-line-no">328</span><span id="line-328"> } else {</span>
+<span class="source-line-no">329</span><span id="line-329"> tableDescriptor = getTableDesc(tableName);</span>
+<span class="source-line-no">330</span><span id="line-330"> snapshotMap.put(tableName, getTableInfoPath(tableName));</span>
+<span class="source-line-no">331</span><span id="line-331"> }</span>
+<span class="source-line-no">332</span><span id="line-332"> if (tableDescriptor == null) {</span>
+<span class="source-line-no">333</span><span id="line-333"> LOG.debug("Found no table descriptor in the snapshot dir, previous schema would be lost");</span>
<span class="source-line-no">334</span><span id="line-334"> }</span>
-<span class="source-line-no">335</span><span id="line-335"> tableDescriptor = TableDescriptorBuilder.copy(newTableName, tableDescriptor);</span>
-<span class="source-line-no">336</span><span id="line-336"> checkAndCreateTable(conn, newTableName, null, tableDescriptor, truncateIfExists);</span>
-<span class="source-line-no">337</span><span id="line-337"> return;</span>
-<span class="source-line-no">338</span><span id="line-338"> } else {</span>
-<span class="source-line-no">339</span><span id="line-339"> throw new IllegalStateException(</span>
-<span class="source-line-no">340</span><span id="line-340"> "Cannot restore hbase table because directory '" + " tableArchivePath is null.");</span>
-<span class="source-line-no">341</span><span id="line-341"> }</span>
-<span class="source-line-no">342</span><span id="line-342"> }</span>
-<span class="source-line-no">343</span><span id="line-343"></span>
-<span class="source-line-no">344</span><span id="line-344"> if (tableDescriptor == null) {</span>
-<span class="source-line-no">345</span><span id="line-345"> tableDescriptor = TableDescriptorBuilder.newBuilder(newTableName).build();</span>
-<span class="source-line-no">346</span><span id="line-346"> } else {</span>
-<span class="source-line-no">347</span><span id="line-347"> tableDescriptor = TableDescriptorBuilder.copy(newTableName, tableDescriptor);</span>
-<span class="source-line-no">348</span><span id="line-348"> }</span>
-<span class="source-line-no">349</span><span id="line-349"></span>
-<span class="source-line-no">350</span><span id="line-350"> // record all region dirs:</span>
-<span class="source-line-no">351</span><span id="line-351"> // load all files in dir</span>
-<span class="source-line-no">352</span><span id="line-352"> try {</span>
-<span class="source-line-no">353</span><span id="line-353"> ArrayList<Path> regionPathList = getRegionList(tableName);</span>
-<span class="source-line-no">354</span><span id="line-354"></span>
-<span class="source-line-no">355</span><span id="line-355"> // should only try to create the table with all region informations, so we could pre-split</span>
-<span class="source-line-no">356</span><span id="line-356"> // the regions in fine grain</span>
-<span class="source-line-no">357</span><span id="line-357"> checkAndCreateTable(conn, newTableName, regionPathList, tableDescriptor, truncateIfExists);</span>
-<span class="source-line-no">358</span><span id="line-358"> configureForRestoreJob(isKeepOriginalSplits);</span>
-<span class="source-line-no">359</span><span id="line-359"> RestoreJob restoreService = BackupRestoreFactory.getRestoreJob(conf);</span>
-<span class="source-line-no">360</span><span id="line-360"> Path[] paths = new Path[regionPathList.size()];</span>
-<span class="source-line-no">361</span><span id="line-361"> regionPathList.toArray(paths);</span>
-<span class="source-line-no">362</span><span id="line-362"> restoreService.run(paths, new TableName[] { tableName }, restoreRootDir,</span>
-<span class="source-line-no">363</span><span id="line-363"> new TableName[] { newTableName }, true);</span>
-<span class="source-line-no">364</span><span id="line-364"></span>
-<span class="source-line-no">365</span><span id="line-365"> } catch (Exception e) {</span>
-<span class="source-line-no">366</span><span id="line-366"> LOG.error(e.toString(), e);</span>
-<span class="source-line-no">367</span><span id="line-367"> throw new IllegalStateException("Cannot restore hbase table", e);</span>
-<span class="source-line-no">368</span><span id="line-368"> }</span>
-<span class="source-line-no">369</span><span id="line-369"> }</span>
-<span class="source-line-no">370</span><span id="line-370"></span>
-<span class="source-line-no">371</span><span id="line-371"> /**</span>
-<span class="source-line-no">372</span><span id="line-372"> * Gets region list</span>
-<span class="source-line-no">373</span><span id="line-373"> * @param tableArchivePath table archive path</span>
-<span class="source-line-no">374</span><span id="line-374"> * @return RegionList region list</span>
-<span class="source-line-no">375</span><span id="line-375"> * @throws IOException exception</span>
-<span class="source-line-no">376</span><span id="line-376"> */</span>
-<span class="source-line-no">377</span><span id="line-377"> ArrayList<Path> getRegionList(Path tableArchivePath) throws IOException {</span>
-<span class="source-line-no">378</span><span id="line-378"> ArrayList<Path> regionDirList = new ArrayList<>();</span>
-<span class="source-line-no">379</span><span id="line-379"> FileStatus[] children = fs.listStatus(tableArchivePath);</span>
-<span class="source-line-no">380</span><span id="line-380"> for (FileStatus childStatus : children) {</span>
-<span class="source-line-no">381</span><span id="line-381"> // here child refer to each region(Name)</span>
-<span class="source-line-no">382</span><span id="line-382"> Path child = childStatus.getPath();</span>
-<span class="source-line-no">383</span><span id="line-383"> regionDirList.add(child);</span>
-<span class="source-line-no">384</span><span id="line-384"> }</span>
-<span class="source-line-no">385</span><span id="line-385"> return regionDirList;</span>
-<span class="source-line-no">386</span><span id="line-386"> }</span>
-<span class="source-line-no">387</span><span id="line-387"></span>
-<span class="source-line-no">388</span><span id="line-388"> /**</span>
-<span class="source-line-no">389</span><span id="line-389"> * Calculate region boundaries and add all the column families to the table descriptor</span>
-<span class="source-line-no">390</span><span id="line-390"> * @param regionDirList region dir list</span>
-<span class="source-line-no">391</span><span id="line-391"> * @return a set of keys to store the boundaries</span>
-<span class="source-line-no">392</span><span id="line-392"> */</span>
-<span class="source-line-no">393</span><span id="line-393"> byte[][] generateBoundaryKeys(ArrayList<Path> regionDirList) throws IOException {</span>
-<span class="source-line-no">394</span><span id="line-394"> TreeMap<byte[], Integer> map = new TreeMap<>(Bytes.BYTES_COMPARATOR);</span>
-<span class="source-line-no">395</span><span id="line-395"> // Build a set of keys to store the boundaries</span>
-<span class="source-line-no">396</span><span id="line-396"> // calculate region boundaries and add all the column families to the table descriptor</span>
-<span class="source-line-no">397</span><span id="line-397"> for (Path regionDir : regionDirList) {</span>
-<span class="source-line-no">398</span><span id="line-398"> LOG.debug("Parsing region dir: " + regionDir);</span>
-<span class="source-line-no">399</span><span id="line-399"> Path hfofDir = regionDir;</span>
-<span class="source-line-no">400</span><span id="line-400"></span>
-<span class="source-line-no">401</span><span id="line-401"> if (!fs.exists(hfofDir)) {</span>
-<span class="source-line-no">402</span><span id="line-402"> LOG.warn("HFileOutputFormat dir " + hfofDir + " not found");</span>
-<span class="source-line-no">403</span><span id="line-403"> }</span>
-<span class="source-line-no">404</span><span id="line-404"></span>
-<span class="source-line-no">405</span><span id="line-405"> FileStatus[] familyDirStatuses = fs.listStatus(hfofDir);</span>
-<span class="source-line-no">406</span><span id="line-406"> if (familyDirStatuses == null) {</span>
-<span class="source-line-no">407</span><span id="line-407"> throw new IOException("No families found in " + hfofDir);</span>
-<span class="source-line-no">408</span><span id="line-408"> }</span>
-<span class="source-line-no">409</span><span id="line-409"></span>
-<span class="source-line-no">410</span><span id="line-410"> for (FileStatus stat : familyDirStatuses) {</span>
-<span class="source-line-no">411</span><span id="line-411"> if (!stat.isDirectory()) {</span>
-<span class="source-line-no">412</span><span id="line-412"> LOG.warn("Skipping non-directory " + stat.getPath());</span>
-<span class="source-line-no">413</span><span id="line-413"> continue;</span>
-<span class="source-line-no">414</span><span id="line-414"> }</span>
-<span class="source-line-no">415</span><span id="line-415"> boolean isIgnore = false;</span>
-<span class="source-line-no">416</span><span id="line-416"> String pathName = stat.getPath().getName();</span>
-<span class="source-line-no">417</span><span id="line-417"> for (String ignore : ignoreDirs) {</span>
-<span class="source-line-no">418</span><span id="line-418"> if (pathName.contains(ignore)) {</span>
-<span class="source-line-no">419</span><span id="line-419"> LOG.warn("Skipping non-family directory" + pathName);</span>
-<span class="source-line-no">420</span><span id="line-420"> isIgnore = true;</span>
-<span class="source-line-no">421</span><span id="line-421"> break;</span>
-<span class="source-line-no">422</span><span id="line-422"> }</span>
-<span class="source-line-no">423</span><span id="line-423"> }</span>
-<span class="source-line-no">424</span><span id="line-424"> if (isIgnore) {</span>
-<span class="source-line-no">425</span><span id="line-425"> continue;</span>
-<span class="source-line-no">426</span><span id="line-426"> }</span>
-<span class="source-line-no">427</span><span id="line-427"> Path familyDir = stat.getPath();</span>
-<span class="source-line-no">428</span><span id="line-428"> LOG.debug("Parsing family dir [" + familyDir.toString() + " in region [" + regionDir + "]");</span>
-<span class="source-line-no">429</span><span id="line-429"> // Skip _logs, etc</span>
-<span class="source-line-no">430</span><span id="line-430"> if (familyDir.getName().startsWith("_") || familyDir.getName().startsWith(".")) {</span>
-<span class="source-line-no">431</span><span id="line-431"> continue;</span>
-<span class="source-line-no">432</span><span id="line-432"> }</span>
-<span class="source-line-no">433</span><span id="line-433"></span>
-<span class="source-line-no">434</span><span id="line-434"> // start to parse hfile inside one family dir</span>
-<span class="source-line-no">435</span><span id="line-435"> Path[] hfiles = FileUtil.stat2Paths(fs.listStatus(familyDir));</span>
-<span class="source-line-no">436</span><span id="line-436"> for (Path hfile : hfiles) {</span>
-<span class="source-line-no">437</span><span id="line-437"> if (</span>
-<span class="source-line-no">438</span><span id="line-438"> hfile.getName().startsWith("_") || hfile.getName().startsWith(".")</span>
-<span class="source-line-no">439</span><span id="line-439"> || StoreFileInfo.isReference(hfile.getName())</span>
-<span class="source-line-no">440</span><span id="line-440"> || HFileLink.isHFileLink(hfile.getName())</span>
-<span class="source-line-no">441</span><span id="line-441"> ) {</span>
-<span class="source-line-no">442</span><span id="line-442"> continue;</span>
-<span class="source-line-no">443</span><span id="line-443"> }</span>
-<span class="source-line-no">444</span><span id="line-444"> HFile.Reader reader = HFile.createReader(fs, hfile, conf);</span>
-<span class="source-line-no">445</span><span id="line-445"> final byte[] first, last;</span>
-<span class="source-line-no">446</span><span id="line-446"> try {</span>
-<span class="source-line-no">447</span><span id="line-447"> if (reader.getEntries() == 0) {</span>
-<span class="source-line-no">448</span><span id="line-448"> LOG.debug("Skipping hfile with 0 entries: " + hfile);</span>
-<span class="source-line-no">449</span><span id="line-449"> continue;</span>
-<span class="source-line-no">450</span><span id="line-450"> }</span>
-<span class="source-line-no">451</span><span id="line-451"> first = reader.getFirstRowKey().get();</span>
-<span class="source-line-no">452</span><span id="line-452"> last = reader.getLastRowKey().get();</span>
-<span class="source-line-no">453</span><span id="line-453"> LOG.debug("Trying to figure out region boundaries hfile=" + hfile + " first="</span>
-<span class="source-line-no">454</span><span id="line-454"> + Bytes.toStringBinary(first) + " last=" + Bytes.toStringBinary(last));</span>
-<span class="source-line-no">455</span><span id="line-455"></span>
-<span class="source-line-no">456</span><span id="line-456"> // To eventually infer start key-end key boundaries</span>
-<span class="source-line-no">457</span><span id="line-457"> Integer value = map.containsKey(first) ? (Integer) map.get(first) : 0;</span>
-<span class="source-line-no">458</span><span id="line-458"> map.put(first, value + 1);</span>
-<span class="source-line-no">459</span><span id="line-459"> value = map.containsKey(last) ? (Integer) map.get(last) : 0;</span>
-<span class="source-line-no">460</span><span id="line-460"> map.put(last, value - 1);</span>
-<span class="source-line-no">461</span><span id="line-461"> } finally {</span>
-<span class="source-line-no">462</span><span id="line-462"> reader.close();</span>
-<span class="source-line-no">463</span><span id="line-463"> }</span>
-<span class="source-line-no">464</span><span id="line-464"> }</span>
-<span class="source-line-no">465</span><span id="line-465"> }</span>
-<span class="source-line-no">466</span><span id="line-466"> }</span>
-<span class="source-line-no">467</span><span id="line-467"> return BulkLoadHFilesTool.inferBoundaries(map);</span>
-<span class="source-line-no">468</span><span id="line-468"> }</span>
+<span class="source-line-no">335</span><span id="line-335"> } else {</span>
+<span class="source-line-no">336</span><span id="line-336"> throw new IOException(</span>
+<span class="source-line-no">337</span><span id="line-337"> "Table snapshot directory: " + tableSnapshotPath + " does not exist.");</span>
+<span class="source-line-no">338</span><span id="line-338"> }</span>
+<span class="source-line-no">339</span><span id="line-339"> }</span>
+<span class="source-line-no">340</span><span id="line-340"></span>
+<span class="source-line-no">341</span><span id="line-341"> Path tableArchivePath = getTableArchivePath(tableName);</span>
+<span class="source-line-no">342</span><span id="line-342"> if (tableArchivePath == null) {</span>
+<span class="source-line-no">343</span><span id="line-343"> if (tableDescriptor != null) {</span>
+<span class="source-line-no">344</span><span id="line-344"> // find table descriptor but no archive dir means the table is empty, create table and exit</span>
+<span class="source-line-no">345</span><span id="line-345"> if (LOG.isDebugEnabled()) {</span>
+<span class="source-line-no">346</span><span id="line-346"> LOG.debug("find table descriptor but no archive dir for table " + tableName</span>
+<span class="source-line-no">347</span><span id="line-347"> + ", will only create table");</span>
+<span class="source-line-no">348</span><span id="line-348"> }</span>
+<span class="source-line-no">349</span><span id="line-349"> tableDescriptor = TableDescriptorBuilder.copy(newTableName, tableDescriptor);</span>
+<span class="source-line-no">350</span><span id="line-350"> checkAndCreateTable(conn, newTableName, null, tableDescriptor, truncateIfExists);</span>
+<span class="source-line-no">351</span><span id="line-351"> return;</span>
+<span class="source-line-no">352</span><span id="line-352"> } else {</span>
+<span class="source-line-no">353</span><span id="line-353"> throw new IllegalStateException(</span>
+<span class="source-line-no">354</span><span id="line-354"> "Cannot restore hbase table because directory '" + " tableArchivePath is null.");</span>
+<span class="source-line-no">355</span><span id="line-355"> }</span>
+<span class="source-line-no">356</span><span id="line-356"> }</span>
+<span class="source-line-no">357</span><span id="line-357"></span>
+<span class="source-line-no">358</span><span id="line-358"> if (tableDescriptor == null) {</span>
+<span class="source-line-no">359</span><span id="line-359"> tableDescriptor = TableDescriptorBuilder.newBuilder(newTableName).build();</span>
+<span class="source-line-no">360</span><span id="line-360"> } else {</span>
+<span class="source-line-no">361</span><span id="line-361"> tableDescriptor = TableDescriptorBuilder.copy(newTableName, tableDescriptor);</span>
+<span class="source-line-no">362</span><span id="line-362"> }</span>
+<span class="source-line-no">363</span><span id="line-363"></span>
+<span class="source-line-no">364</span><span id="line-364"> // record all region dirs:</span>
+<span class="source-line-no">365</span><span id="line-365"> // load all files in dir</span>
+<span class="source-line-no">366</span><span id="line-366"> try {</span>
+<span class="source-line-no">367</span><span id="line-367"> ArrayList<Path> regionPathList = getRegionList(tableName);</span>
+<span class="source-line-no">368</span><span id="line-368"></span>
+<span class="source-line-no">369</span><span id="line-369"> // should only try to create the table with all region informations, so we could pre-split</span>
+<span class="source-line-no">370</span><span id="line-370"> // the regions in fine grain</span>
+<span class="source-line-no">371</span><span id="line-371"> checkAndCreateTable(conn, newTableName, regionPathList, tableDescriptor, truncateIfExists);</span>
+<span class="source-line-no">372</span><span id="line-372"> configureForRestoreJob(isKeepOriginalSplits);</span>
+<span class="source-line-no">373</span><span id="line-373"> RestoreJob restoreService = BackupRestoreFactory.getRestoreJob(conf);</span>
+<span class="source-line-no">374</span><span id="line-374"> Path[] paths = new Path[regionPathList.size()];</span>
+<span class="source-line-no">375</span><span id="line-375"> regionPathList.toArray(paths);</span>
+<span class="source-line-no">376</span><span id="line-376"> restoreService.run(paths, new TableName[] { tableName }, restoreRootDir,</span>
+<span class="source-line-no">377</span><span id="line-377"> new TableName[] { newTableName }, true);</span>
+<span class="source-line-no">378</span><span id="line-378"></span>
+<span class="source-line-no">379</span><span id="line-379"> } catch (Exception e) {</span>
+<span class="source-line-no">380</span><span id="line-380"> LOG.error(e.toString(), e);</span>
+<span class="source-line-no">381</span><span id="line-381"> throw new IllegalStateException("Cannot restore hbase table", e);</span>
+<span class="source-line-no">382</span><span id="line-382"> }</span>
+<span class="source-line-no">383</span><span id="line-383"> }</span>
+<span class="source-line-no">384</span><span id="line-384"></span>
+<span class="source-line-no">385</span><span id="line-385"> /**</span>
+<span class="source-line-no">386</span><span id="line-386"> * Gets region list</span>
+<span class="source-line-no">387</span><span id="line-387"> * @param tableArchivePath table archive path</span>
+<span class="source-line-no">388</span><span id="line-388"> * @return RegionList region list</span>
+<span class="source-line-no">389</span><span id="line-389"> * @throws IOException exception</span>
+<span class="source-line-no">390</span><span id="line-390"> */</span>
+<span class="source-line-no">391</span><span id="line-391"> ArrayList<Path> getRegionList(Path tableArchivePath) throws IOException {</span>
+<span class="source-line-no">392</span><span id="line-392"> ArrayList<Path> regionDirList = new ArrayList<>();</span>
+<span class="source-line-no">393</span><span id="line-393"> FileStatus[] children = fs.listStatus(tableArchivePath);</span>
+<span class="source-line-no">394</span><span id="line-394"> for (FileStatus childStatus : children) {</span>
+<span class="source-line-no">395</span><span id="line-395"> // here child refer to each region(Name)</span>
+<span class="source-line-no">396</span><span id="line-396"> Path child = childStatus.getPath();</span>
+<span class="source-line-no">397</span><span id="line-397"> regionDirList.add(child);</span>
+<span class="source-line-no">398</span><span id="line-398"> }</span>
+<span class="source-line-no">399</span><span id="line-399"> return regionDirList;</span>
+<span class="source-line-no">400</span><span id="line-400"> }</span>
+<span class="source-line-no">401</span><span id="line-401"></span>
+<span class="source-line-no">402</span><span id="line-402"> /**</span>
+<span class="source-line-no">403</span><span id="line-403"> * Calculate region boundaries and add all the column families to the table descriptor</span>
+<span class="source-line-no">404</span><span id="line-404"> * @param regionDirList region dir list</span>
+<span class="source-line-no">405</span><span id="line-405"> * @return a set of keys to store the boundaries</span>
+<span class="source-line-no">406</span><span id="line-406"> */</span>
+<span class="source-line-no">407</span><span id="line-407"> byte[][] generateBoundaryKeys(ArrayList<Path> regionDirList) throws IOException {</span>
+<span class="source-line-no">408</span><span id="line-408"> TreeMap<byte[], Integer> map = new TreeMap<>(Bytes.BYTES_COMPARATOR);</span>
+<span class="source-line-no">409</span><span id="line-409"> // Build a set of keys to store the boundaries</span>
+<span class="source-line-no">410</span><span id="line-410"> // calculate region boundaries and add all the column families to the table descriptor</span>
+<span class="source-line-no">411</span><span id="line-411"> for (Path regionDir : regionDirList) {</span>
+<span class="source-line-no">412</span><span id="line-412"> LOG.debug("Parsing region dir: " + regionDir);</span>
+<span class="source-line-no">413</span><span id="line-413"> Path hfofDir = regionDir;</span>
+<span class="source-line-no">414</span><span id="line-414"></span>
+<span class="source-line-no">415</span><span id="line-415"> if (!fs.exists(hfofDir)) {</span>
+<span class="source-line-no">416</span><span id="line-416"> LOG.warn("HFileOutputFormat dir " + hfofDir + " not found");</span>
+<span class="source-line-no">417</span><span id="line-417"> }</span>
+<span class="source-line-no">418</span><span id="line-418"></span>
+<span class="source-line-no">419</span><span id="line-419"> FileStatus[] familyDirStatuses = fs.listStatus(hfofDir);</span>
+<span class="source-line-no">420</span><span id="line-420"> if (familyDirStatuses == null) {</span>
+<span class="source-line-no">421</span><span id="line-421"> throw new IOException("No families found in " + hfofDir);</span>
+<span class="source-line-no">422</span><span id="line-422"> }</span>
+<span class="source-line-no">423</span><span id="line-423"></span>
+<span class="source-line-no">424</span><span id="line-424"> for (FileStatus stat : familyDirStatuses) {</span>
+<span class="source-line-no">425</span><span id="line-425"> if (!stat.isDirectory()) {</span>
+<span class="source-line-no">426</span><span id="line-426"> LOG.warn("Skipping non-directory " + stat.getPath());</span>
+<span class="source-line-no">427</span><span id="line-427"> continue;</span>
+<span class="source-line-no">428</span><span id="line-428"> }</span>
+<span class="source-line-no">429</span><span id="line-429"> boolean isIgnore = false;</span>
+<span class="source-line-no">430</span><span id="line-430"> String pathName = stat.getPath().getName();</span>
+<span class="source-line-no">431</span><span id="line-431"> for (String ignore : ignoreDirs) {</span>
+<span class="source-line-no">432</span><span id="line-432"> if (pathName.contains(ignore)) {</span>
+<span class="source-line-no">433</span><span id="line-433"> LOG.warn("Skipping non-family directory" + pathName);</span>
+<span class="source-line-no">434</span><span id="line-434"> isIgnore = true;</span>
+<span class="source-line-no">435</span><span id="line-435"> break;</span>
+<span class="source-line-no">436</span><span id="line-436"> }</span>
+<span class="source-line-no">437</span><span id="line-437"> }</span>
+<span class="source-line-no">438</span><span id="line-438"> if (isIgnore) {</span>
+<span class="source-line-no">439</span><span id="line-439"> continue;</span>
+<span class="source-line-no">440</span><span id="line-440"> }</span>
+<span class="source-line-no">441</span><span id="line-441"> Path familyDir = stat.getPath();</span>
+<span class="source-line-no">442</span><span id="line-442"> LOG.debug("Parsing family dir [" + familyDir.toString() + " in region [" + regionDir + "]");</span>
+<span class="source-line-no">443</span><span id="line-443"> // Skip _logs, etc</span>
+<span class="source-line-no">444</span><span id="line-444"> if (familyDir.getName().startsWith("_") || familyDir.getName().startsWith(".")) {</span>
+<span class="source-line-no">445</span><span id="line-445"> continue;</span>
+<span class="source-line-no">446</span><span id="line-446"> }</span>
+<span class="source-line-no">447</span><span id="line-447"></span>
+<span class="source-line-no">448</span><span id="line-448"> // start to parse hfile inside one family dir</span>
+<span class="source-line-no">449</span><span id="line-449"> Path[] hfiles = FileUtil.stat2Paths(fs.listStatus(familyDir));</span>
+<span class="source-line-no">450</span><span id="line-450"> for (Path hfile : hfiles) {</span>
+<span class="source-line-no">451</span><span id="line-451"> if (</span>
+<span class="source-line-no">452</span><span id="line-452"> hfile.getName().startsWith("_") || hfile.getName().startsWith(".")</span>
+<span class="source-line-no">453</span><span id="line-453"> || StoreFileInfo.isReference(hfile.getName())</span>
+<span class="source-line-no">454</span><span id="line-454"> || HFileLink.isHFileLink(hfile.getName())</span>
+<span class="source-line-no">455</span><span id="line-455"> ) {</span>
+<span class="source-line-no">456</span><span id="line-456"> continue;</span>
+<span class="source-line-no">457</span><span id="line-457"> }</span>
+<span class="source-line-no">458</span><span id="line-458"> HFile.Reader reader = HFile.createReader(fs, hfile, conf);</span>
+<span class="source-line-no">459</span><span id="line-459"> final byte[] first, last;</span>
+<span class="source-line-no">460</span><span id="line-460"> try {</span>
+<span class="source-line-no">461</span><span id="line-461"> if (reader.getEntries() == 0) {</span>
+<span class="source-line-no">462</span><span id="line-462"> LOG.debug("Skipping hfile with 0 entries: " + hfile);</span>
+<span class="source-line-no">463</span><span id="line-463"> continue;</span>
+<span class="source-line-no">464</span><span id="line-464"> }</span>
+<span class="source-line-no">465</span><span id="line-465"> first = reader.getFirstRowKey().get();</span>
+<span class="source-line-no">466</span><span id="line-466"> last = reader.getLastRowKey().get();</span>
+<span class="source-line-no">467</span><span id="line-467"> LOG.debug("Trying to figure out region boundaries hfile=" + hfile + " first="</span>
+<span class="source-line-no">468</span><span id="line-468"> + Bytes.toStringBinary(first) + " last=" + Bytes.toStringBinary(last));</span>
<span class="source-line-no">469</span><span id="line-469"></span>
-<span class="source-line-no">470</span><span id="line-470"> /**</span>
-<span class="source-line-no">471</span><span id="line-471"> * Prepare the table for bulkload, most codes copied from {@code createTable} method in</span>
-<span class="source-line-no">472</span><span id="line-472"> * {@code BulkLoadHFilesTool}.</span>
-<span class="source-line-no">473</span><span id="line-473"> * @param conn connection</span>
-<span class="source-line-no">474</span><span id="line-474"> * @param targetTableName target table name</span>
-<span class="source-line-no">475</span><span id="line-475"> * @param regionDirList region directory list</span>
-<span class="source-line-no">476</span><span id="line-476"> * @param htd table descriptor</span>
-<span class="source-line-no">477</span><span id="line-477"> * @param truncateIfExists truncates table if exists</span>
-<span class="source-line-no">478</span><span id="line-478"> * @throws IOException exception</span>
-<span class="source-line-no">479</span><span id="line-479"> */</span>
-<span class="source-line-no">480</span><span id="line-480"> private void checkAndCreateTable(Connection conn, TableName targetTableName,</span>
-<span class="source-line-no">481</span><span id="line-481"> ArrayList<Path> regionDirList, TableDescriptor htd, boolean truncateIfExists)</span>
-<span class="source-line-no">482</span><span id="line-482"> throws IOException {</span>
-<span class="source-line-no">483</span><span id="line-483"> try (Admin admin = conn.getAdmin()) {</span>
-<span class="source-line-no">484</span><span id="line-484"> boolean createNew = false;</span>
-<span class="source-line-no">485</span><span id="line-485"> if (admin.tableExists(targetTableName)) {</span>
-<span class="source-line-no">486</span><span id="line-486"> if (truncateIfExists) {</span>
-<span class="source-line-no">487</span><span id="line-487"> LOG.info(</span>
-<span class="source-line-no">488</span><span id="line-488"> "Truncating exising target table '" + targetTableName + "', preserving region splits");</span>
-<span class="source-line-no">489</span><span id="line-489"> admin.disableTable(targetTableName);</span>
-<span class="source-line-no">490</span><span id="line-490"> admin.truncateTable(targetTableName, true);</span>
-<span class="source-line-no">491</span><span id="line-491"> } else {</span>
-<span class="source-line-no">492</span><span id="line-492"> LOG.info("Using exising target table '" + targetTableName + "'");</span>
-<span class="source-line-no">493</span><span id="line-493"> }</span>
-<span class="source-line-no">494</span><span id="line-494"> } else {</span>
-<span class="source-line-no">495</span><span id="line-495"> createNew = true;</span>
-<span class="source-line-no">496</span><span id="line-496"> }</span>
-<span class="source-line-no">497</span><span id="line-497"> if (createNew) {</span>
-<span class="source-line-no">498</span><span id="line-498"> LOG.info("Creating target table '" + targetTableName + "'");</span>
-<span class="source-line-no">499</span><span id="line-499"> byte[][] keys = null;</span>
-<span class="source-line-no">500</span><span id="line-500"> try {</span>
-<span class="source-line-no">501</span><span id="line-501"> if (regionDirList == null || regionDirList.size() == 0) {</span>
-<span class="source-line-no">502</span><span id="line-502"> admin.createTable(htd);</span>
-<span class="source-line-no">503</span><span id="line-503"> } else {</span>
-<span class="source-line-no">504</span><span id="line-504"> keys = generateBoundaryKeys(regionDirList);</span>
-<span class="source-line-no">505</span><span id="line-505"> if (keys.length > 0) {</span>
-<span class="source-line-no">506</span><span id="line-506"> // create table using table descriptor and region boundaries</span>
-<span class="source-line-no">507</span><span id="line-507"> admin.createTable(htd, keys);</span>
-<span class="source-line-no">508</span><span id="line-508"> } else {</span>
-<span class="source-line-no">509</span><span id="line-509"> admin.createTable(htd);</span>
-<span class="source-line-no">510</span><span id="line-510"> }</span>
-<span class="source-line-no">511</span><span id="line-511"> }</span>
-<span class="source-line-no">512</span><span id="line-512"> } catch (NamespaceNotFoundException e) {</span>
-<span class="source-line-no">513</span><span id="line-513"> LOG.warn("There was no namespace and the same will be created");</span>
-<span class="source-line-no">514</span><span id="line-514"> String namespaceAsString = targetTableName.getNamespaceAsString();</span>
-<span class="source-line-no">515</span><span id="line-515"> LOG.info("Creating target namespace '" + namespaceAsString + "'");</span>
-<span class="source-line-no">516</span><span id="line-516"> admin.createNamespace(NamespaceDescriptor.create(namespaceAsString).build());</span>
-<span class="source-line-no">517</span><span id="line-517"> if (null == keys) {</span>
-<span class="source-line-no">518</span><span id="line-518"> admin.createTable(htd);</span>
-<span class="source-line-no">519</span><span id="line-519"> } else {</span>
-<span class="source-line-no">520</span><span id="line-520"> admin.createTable(htd, keys);</span>
-<span class="source-line-no">521</span><span id="line-521"> }</span>
-<span class="source-line-no">522</span><span id="line-522"> }</span>
-<span class="source-line-no">523</span><span id="line-523"></span>
-<span class="source-line-no">524</span><span id="line-524"> }</span>
-<span class="source-line-no">525</span><span id="line-525"> long startTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">526</span><span id="line-526"> while (!admin.isTableAvailable(targetTableName)) {</span>
-<span class="source-line-no">527</span><span id="line-527"> try {</span>
-<span class="source-line-no">528</span><span id="line-528"> Thread.sleep(100);</span>
-<span class="source-line-no">529</span><span id="line-529"> } catch (InterruptedException ie) {</span>
-<span class="source-line-no">530</span><span id="line-530"> Thread.currentThread().interrupt();</span>
-<span class="source-line-no">531</span><span id="line-531"> }</span>
-<span class="source-line-no">532</span><span id="line-532"> if (EnvironmentEdgeManager.currentTime() - startTime > TABLE_AVAILABILITY_WAIT_TIME) {</span>
-<span class="source-line-no">533</span><span id="line-533"> throw new IOException("Time out " + TABLE_AVAILABILITY_WAIT_TIME + "ms expired, table "</span>
-<span class="source-line-no">534</span><span id="line-534"> + targetTableName + " is still not available");</span>
-<span class="source-line-no">535</span><span id="line-535"> }</span>
-<span class="source-line-no">536</span><span id="line-536"> }</span>
-<span class="source-line-no">537</span><span id="line-537"> }</span>
-<span class="source-line-no">538</span><span id="line-538"> }</span>
-<span class="source-line-no">539</span><span id="line-539"></span>
-<span class="source-line-no">540</span><span id="line-540"> private void configureForRestoreJob(boolean keepOriginalSplits) {</span>
-<span class="source-line-no">541</span><span id="line-541"> conf.setBoolean(RestoreJob.KEEP_ORIGINAL_SPLITS_KEY, keepOriginalSplits);</span>
-<span class="source-line-no">542</span><span id="line-542"> conf.set(RestoreJob.BACKUP_ROOT_PATH_KEY, backupRootPath.toString());</span>
-<span class="source-line-no">543</span><span id="line-543"> }</span>
-<span class="source-line-no">544</span><span id="line-544">}</span>
+<span class="source-line-no">470</span><span id="line-470"> // To eventually infer start key-end key boundaries</span>
+<span class="source-line-no">471</span><span id="line-471"> Integer value = map.containsKey(first) ? (Integer) map.get(first) : 0;</span>
+<span class="source-line-no">472</span><span id="line-472"> map.put(first, value + 1);</span>
+<span class="source-line-no">473</span><span id="line-473"> value = map.containsKey(last) ? (Integer) map.get(last) : 0;</span>
+<span class="source-line-no">474</span><span id="line-474"> map.put(last, value - 1);</span>
+<span class="source-line-no">475</span><span id="line-475"> } finally {</span>
+<span class="source-line-no">476</span><span id="line-476"> reader.close();</span>
+<span class="source-line-no">477</span><span id="line-477"> }</span>
+<span class="source-line-no">478</span><span id="line-478"> }</span>
+<span class="source-line-no">479</span><span id="line-479"> }</span>
+<span class="source-line-no">480</span><span id="line-480"> }</span>
+<span class="source-line-no">481</span><span id="line-481"> return BulkLoadHFilesTool.inferBoundaries(map);</span>
+<span class="source-line-no">482</span><span id="line-482"> }</span>
+<span class="source-line-no">483</span><span id="line-483"></span>
+<span class="source-line-no">484</span><span id="line-484"> /**</span>
+<span class="source-line-no">485</span><span id="line-485"> * Prepare the table for bulkload, most codes copied from {@code createTable} method in</span>
+<span class="source-line-no">486</span><span id="line-486"> * {@code BulkLoadHFilesTool}.</span>
+<span class="source-line-no">487</span><span id="line-487"> * @param conn connection</span>
+<span class="source-line-no">488</span><span id="line-488"> * @param targetTableName target table name</span>
+<span class="source-line-no">489</span><span id="line-489"> * @param regionDirList region directory list</span>
+<span class="source-line-no">490</span><span id="line-490"> * @param htd table descriptor</span>
+<span class="source-line-no">491</span><span id="line-491"> * @param truncateIfExists truncates table if exists</span>
+<span class="source-line-no">492</span><span id="line-492"> * @throws IOException exception</span>
+<span class="source-line-no">493</span><span id="line-493"> */</span>
+<span class="source-line-no">494</span><span id="line-494"> private void checkAndCreateTable(Connection conn, TableName targetTableName,</span>
+<span class="source-line-no">495</span><span id="line-495"> ArrayList<Path> regionDirList, TableDescriptor htd, boolean truncateIfExists)</span>
+<span class="source-line-no">496</span><span id="line-496"> throws IOException {</span>
+<span class="source-line-no">497</span><span id="line-497"> try (Admin admin = conn.getAdmin()) {</span>
+<span class="source-line-no">498</span><span id="line-498"> boolean createNew = false;</span>
+<span class="source-line-no">499</span><span id="line-499"> if (admin.tableExists(targetTableName)) {</span>
+<span class="source-line-no">500</span><span id="line-500"> if (truncateIfExists) {</span>
+<span class="source-line-no">501</span><span id="line-501"> LOG.info(</span>
+<span class="source-line-no">502</span><span id="line-502"> "Truncating exising target table '" + targetTableName + "', preserving region splits");</span>
+<span class="source-line-no">503</span><span id="line-503"> admin.disableTable(targetTableName);</span>
+<span class="source-line-no">504</span><span id="line-504"> admin.truncateTable(targetTableName, true);</span>
+<span class="source-line-no">505</span><span id="line-505"> } else {</span>
+<span class="source-line-no">506</span><span id="line-506"> LOG.info("Using exising target table '" + targetTableName + "'");</span>
+<span class="source-line-no">507</span><span id="line-507"> }</span>
+<span class="source-line-no">508</span><span id="line-508"> } else {</span>
+<span class="source-line-no">509</span><span id="line-509"> createNew = true;</span>
+<span class="source-line-no">510</span><span id="line-510"> }</span>
+<span class="source-line-no">511</span><span id="line-511"> if (createNew) {</span>
+<span class="source-line-no">512</span><span id="line-512"> LOG.info("Creating target table '" + targetTableName + "'");</span>
+<span class="source-line-no">513</span><span id="line-513"> byte[][] keys = null;</span>
+<span class="source-line-no">514</span><span id="line-514"> try {</span>
+<span class="source-line-no">515</span><span id="line-515"> if (regionDirList == null || regionDirList.size() == 0) {</span>
+<span class="source-line-no">516</span><span id="line-516"> admin.createTable(htd);</span>
+<span class="source-line-no">517</span><span id="line-517"> } else {</span>
+<span class="source-line-no">518</span><span id="line-518"> keys = generateBoundaryKeys(regionDirList);</span>
+<span class="source-line-no">519</span><span id="line-519"> if (keys.length > 0) {</span>
+<span class="source-line-no">520</span><span id="line-520"> // create table using table descriptor and region boundaries</span>
+<span class="source-line-no">521</span><span id="line-521"> admin.createTable(htd, keys);</span>
+<span class="source-line-no">522</span><span id="line-522"> } else {</span>
+<span class="source-line-no">523</span><span id="line-523"> admin.createTable(htd);</span>
+<span class="source-line-no">524</span><span id="line-524"> }</span>
+<span class="source-line-no">525</span><span id="line-525"> }</span>
+<span class="source-line-no">526</span><span id="line-526"> } catch (NamespaceNotFoundException e) {</span>
+<span class="source-line-no">527</span><span id="line-527"> LOG.warn("There was no namespace and the same will be created");</span>
+<span class="source-line-no">528</span><span id="line-528"> String namespaceAsString = targetTableName.getNamespaceAsString();</span>
+<span class="source-line-no">529</span><span id="line-529"> LOG.info("Creating target namespace '" + namespaceAsString + "'");</span>
+<span class="source-line-no">530</span><span id="line-530"> admin.createNamespace(NamespaceDescriptor.create(namespaceAsString).build());</span>
+<span class="source-line-no">531</span><span id="line-531"> if (null == keys) {</span>
+<span class="source-line-no">532</span><span id="line-532"> admin.createTable(htd);</span>
+<span class="source-line-no">533</span><span id="line-533"> } else {</span>
+<span class="source-line-no">534</span><span id="line-534"> admin.createTable(htd, keys);</span>
+<span class="source-line-no">535</span><span id="line-535"> }</span>
+<span class="source-line-no">536</span><span id="line-536"> }</span>
+<span class="source-line-no">537</span><span id="line-537"></span>
+<span class="source-line-no">538</span><span id="line-538"> }</span>
+<span class="source-line-no">539</span><span id="line-539"> long startTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">540</span><span id="line-540"> while (!admin.isTableAvailable(targetTableName)) {</span>
+<span class="source-line-no">541</span><span id="line-541"> try {</span>
+<span class="source-line-no">542</span><span id="line-542"> Thread.sleep(100);</span>
+<span class="source-line-no">543</span><span id="line-543"> } catch (InterruptedException ie) {</span>
+<span class="source-line-no">544</span><span id="line-544"> Thread.currentThread().interrupt();</span>
+<span class="source-line-no">545</span><span id="line-545"> }</span>
+<span class="source-line-no">546</span><span id="line-546"> if (EnvironmentEdgeManager.currentTime() - startTime > TABLE_AVAILABILITY_WAIT_TIME) {</span>
+<span class="source-line-no">547</span><span id="line-547"> throw new IOException("Time out " + TABLE_AVAILABILITY_WAIT_TIME + "ms expired, table "</span>
+<span class="source-line-no">548</span><span id="line-548"> + targetTableName + " is still not available");</span>
+<span class="source-line-no">549</span><span id="line-549"> }</span>
+<span class="source-line-no">550</span><span id="line-550"> }</span>
+<span class="source-line-no">551</span><span id="line-551"> }</span>
+<span class="source-line-no">552</span><span id="line-552"> }</span>
+<span class="source-line-no">553</span><span id="line-553"></span>
+<span class="source-line-no">554</span><span id="line-554"> private void configureForRestoreJob(boolean keepOriginalSplits) {</span>
+<span class="source-line-no">555</span><span id="line-555"> conf.setBoolean(RestoreJob.KEEP_ORIGINAL_SPLITS_KEY, keepOriginalSplits);</span>
+<span class="source-line-no">556</span><span id="line-556"> conf.set(RestoreJob.BACKUP_ROOT_PATH_KEY, backupRootPath.toString());</span>
+<span class="source-line-no">557</span><span id="line-557"> }</span>
+<span class="source-line-no">558</span><span id="line-558">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
index 213251c5981..bfa12d75fa7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.TableRecordWriter.html
@@ -49,251 +49,273 @@
<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Durability;</span>
<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Mutation;</span>
<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.mapreduce.JobContext;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputFormat;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.RecordWriter;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.slf4j.Logger;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">047</span><span id="line-47"></span>
-<span class="source-line-no">048</span><span id="line-48">/**</span>
-<span class="source-line-no">049</span><span id="line-49"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
-<span class="source-line-no">050</span><span id="line-50"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
-<span class="source-line-no">051</span><span id="line-51"> */</span>
-<span class="source-line-no">052</span><span id="line-52">@InterfaceAudience.Public</span>
-<span class="source-line-no">053</span><span id="line-53">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57"> /** Job parameter that specifies the output table. */</span>
-<span class="source-line-no">058</span><span id="line-58"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60"> /** Property value to use write-ahead logging */</span>
-<span class="source-line-no">061</span><span id="line-61"> public static final boolean WAL_ON = true;</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63"> /** Property value to disable write-ahead logging */</span>
-<span class="source-line-no">064</span><span id="line-64"> public static final boolean WAL_OFF = false;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
-<span class="source-line-no">067</span><span id="line-67"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69"> /**</span>
-<span class="source-line-no">070</span><span id="line-70"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">071</span><span id="line-71"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">072</span><span id="line-72"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">073</span><span id="line-73"> * Class, java.net.URI)</span>
-<span class="source-line-no">074</span><span id="line-74"> */</span>
-<span class="source-line-no">075</span><span id="line-75"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> /**</span>
-<span class="source-line-no">078</span><span id="line-78"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
-<span class="source-line-no">079</span><span id="line-79"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
-<span class="source-line-no">080</span><span id="line-80"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
-<span class="source-line-no">081</span><span id="line-81"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
-<span class="source-line-no">082</span><span id="line-82"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
-<span class="source-line-no">083</span><span id="line-83"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">084</span><span id="line-84"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">085</span><span id="line-85"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">086</span><span id="line-86"> */</span>
-<span class="source-line-no">087</span><span id="line-87"> @Deprecated</span>
-<span class="source-line-no">088</span><span id="line-88"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90"> /**</span>
-<span class="source-line-no">091</span><span id="line-91"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">092</span><span id="line-92"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">093</span><span id="line-93"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">094</span><span id="line-94"> * Class, String)</span>
-<span class="source-line-no">095</span><span id="line-95"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
-<span class="source-line-no">096</span><span id="line-96"> * peer cluster instead.</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.ReflectionUtils;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.JobContext;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.OutputFormat;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.RecordWriter;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.slf4j.Logger;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">/**</span>
+<span class="source-line-no">050</span><span id="line-50"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
+<span class="source-line-no">051</span><span id="line-51"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
+<span class="source-line-no">052</span><span id="line-52"> */</span>
+<span class="source-line-no">053</span><span id="line-53">@InterfaceAudience.Public</span>
+<span class="source-line-no">054</span><span id="line-54">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58"> /** Job parameter that specifies the output table. */</span>
+<span class="source-line-no">059</span><span id="line-59"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61"> /** Property value to use write-ahead logging */</span>
+<span class="source-line-no">062</span><span id="line-62"> public static final boolean WAL_ON = true;</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64"> /** Property value to disable write-ahead logging */</span>
+<span class="source-line-no">065</span><span id="line-65"> public static final boolean WAL_OFF = false;</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
+<span class="source-line-no">068</span><span id="line-68"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70"> /**</span>
+<span class="source-line-no">071</span><span id="line-71"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">072</span><span id="line-72"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">073</span><span id="line-73"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">074</span><span id="line-74"> * Class, java.net.URI)</span>
+<span class="source-line-no">075</span><span id="line-75"> */</span>
+<span class="source-line-no">076</span><span id="line-76"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78"> /**</span>
+<span class="source-line-no">079</span><span id="line-79"> * The configuration key for specifying a custom</span>
+<span class="source-line-no">080</span><span id="line-80"> * {@link org.apache.hadoop.mapreduce.OutputCommitter} implementation to be used by</span>
+<span class="source-line-no">081</span><span id="line-81"> * {@link TableOutputFormat}. The value for this property should be the fully qualified class name</span>
+<span class="source-line-no">082</span><span id="line-82"> * of the custom committer. If this property is not set, {@link TableOutputCommitter} will be used</span>
+<span class="source-line-no">083</span><span id="line-83"> * by default.</span>
+<span class="source-line-no">084</span><span id="line-84"> */</span>
+<span class="source-line-no">085</span><span id="line-85"> public static final String OUTPUT_COMMITTER_CLASS =</span>
+<span class="source-line-no">086</span><span id="line-86"> "hbase.mapreduce.tableoutputformat.output.committer.class";</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88"> /**</span>
+<span class="source-line-no">089</span><span id="line-89"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
+<span class="source-line-no">090</span><span id="line-90"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
+<span class="source-line-no">091</span><span id="line-91"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
+<span class="source-line-no">092</span><span id="line-92"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
+<span class="source-line-no">093</span><span id="line-93"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
+<span class="source-line-no">094</span><span id="line-94"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">095</span><span id="line-95"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">096</span><span id="line-96"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
<span class="source-line-no">097</span><span id="line-97"> */</span>
<span class="source-line-no">098</span><span id="line-98"> @Deprecated</span>
-<span class="source-line-no">099</span><span id="line-99"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">099</span><span id="line-99"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
<span class="source-line-no">100</span><span id="line-100"></span>
<span class="source-line-no">101</span><span id="line-101"> /**</span>
-<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify peer cluster's ZK client port.</span>
-<span class="source-line-no">103</span><span id="line-103"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">104</span><span id="line-104"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">105</span><span id="line-105"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">106</span><span id="line-106"> */</span>
-<span class="source-line-no">107</span><span id="line-107"> @Deprecated</span>
-<span class="source-line-no">108</span><span id="line-108"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
-<span class="source-line-no">109</span><span id="line-109"></span>
-<span class="source-line-no">110</span><span id="line-110"> /**</span>
-<span class="source-line-no">111</span><span id="line-111"> * Optional specification of the rs class name of the peer cluster.</span>
-<span class="source-line-no">112</span><span id="line-112"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">113</span><span id="line-113"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">114</span><span id="line-114"> */</span>
-<span class="source-line-no">115</span><span id="line-115"> @Deprecated</span>
-<span class="source-line-no">116</span><span id="line-116"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
-<span class="source-line-no">117</span><span id="line-117"> /**</span>
-<span class="source-line-no">118</span><span id="line-118"> * Optional specification of the rs impl name of the peer cluster</span>
-<span class="source-line-no">119</span><span id="line-119"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">120</span><span id="line-120"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">121</span><span id="line-121"> */</span>
-<span class="source-line-no">122</span><span id="line-122"> @Deprecated</span>
-<span class="source-line-no">123</span><span id="line-123"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125"> /** The configuration. */</span>
-<span class="source-line-no">126</span><span id="line-126"> private Configuration conf = null;</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128"> private static Connection createConnection(Configuration conf) throws IOException {</span>
-<span class="source-line-no">129</span><span id="line-129"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
-<span class="source-line-no">130</span><span id="line-130"> if (!StringUtils.isBlank(outputCluster)) {</span>
-<span class="source-line-no">131</span><span id="line-131"> URI uri;</span>
-<span class="source-line-no">132</span><span id="line-132"> try {</span>
-<span class="source-line-no">133</span><span id="line-133"> uri = new URI(outputCluster);</span>
-<span class="source-line-no">134</span><span id="line-134"> } catch (URISyntaxException e) {</span>
-<span class="source-line-no">135</span><span id="line-135"> throw new IOException(</span>
-<span class="source-line-no">136</span><span id="line-136"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
-<span class="source-line-no">137</span><span id="line-137"> e);</span>
-<span class="source-line-no">138</span><span id="line-138"> }</span>
-<span class="source-line-no">139</span><span id="line-139"> return ConnectionFactory.createConnection(uri, conf);</span>
-<span class="source-line-no">140</span><span id="line-140"> } else {</span>
-<span class="source-line-no">141</span><span id="line-141"> return ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">142</span><span id="line-142"> }</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> /**</span>
-<span class="source-line-no">146</span><span id="line-146"> * Writes the reducer output to an HBase table.</span>
-<span class="source-line-no">147</span><span id="line-147"> */</span>
-<span class="source-line-no">148</span><span id="line-148"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150"> private Connection connection;</span>
-<span class="source-line-no">151</span><span id="line-151"> private BufferedMutator mutator;</span>
-<span class="source-line-no">152</span><span id="line-152"> boolean useWriteAheadLogging;</span>
-<span class="source-line-no">153</span><span id="line-153"></span>
-<span class="source-line-no">154</span><span id="line-154"> public TableRecordWriter() throws IOException {</span>
-<span class="source-line-no">155</span><span id="line-155"> this.connection = createConnection(conf);</span>
-<span class="source-line-no">156</span><span id="line-156"> String tableName = conf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">157</span><span id="line-157"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
-<span class="source-line-no">158</span><span id="line-158"> LOG.info("Created table instance for " + tableName);</span>
-<span class="source-line-no">159</span><span id="line-159"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
-<span class="source-line-no">160</span><span id="line-160"> }</span>
-<span class="source-line-no">161</span><span id="line-161"></span>
-<span class="source-line-no">162</span><span id="line-162"> /**</span>
-<span class="source-line-no">163</span><span id="line-163"> * Closes the writer, in this case flush table commits.</span>
-<span class="source-line-no">164</span><span id="line-164"> * @param context The context.</span>
-<span class="source-line-no">165</span><span id="line-165"> * @throws IOException When closing the writer fails.</span>
-<span class="source-line-no">166</span><span id="line-166"> * @see RecordWriter#close(TaskAttemptContext)</span>
-<span class="source-line-no">167</span><span id="line-167"> */</span>
-<span class="source-line-no">168</span><span id="line-168"> @Override</span>
-<span class="source-line-no">169</span><span id="line-169"> public void close(TaskAttemptContext context) throws IOException {</span>
-<span class="source-line-no">170</span><span id="line-170"> try {</span>
-<span class="source-line-no">171</span><span id="line-171"> if (mutator != null) {</span>
-<span class="source-line-no">172</span><span id="line-172"> mutator.close();</span>
-<span class="source-line-no">173</span><span id="line-173"> }</span>
-<span class="source-line-no">174</span><span id="line-174"> } finally {</span>
-<span class="source-line-no">175</span><span id="line-175"> if (connection != null) {</span>
-<span class="source-line-no">176</span><span id="line-176"> connection.close();</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"> }</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"></span>
-<span class="source-line-no">181</span><span id="line-181"> /**</span>
-<span class="source-line-no">182</span><span id="line-182"> * Writes a key/value pair into the table.</span>
-<span class="source-line-no">183</span><span id="line-183"> * @param key The key.</span>
-<span class="source-line-no">184</span><span id="line-184"> * @param value The value.</span>
-<span class="source-line-no">185</span><span id="line-185"> * @throws IOException When writing fails.</span>
-<span class="source-line-no">186</span><span id="line-186"> * @see RecordWriter#write(Object, Object)</span>
-<span class="source-line-no">187</span><span id="line-187"> */</span>
-<span class="source-line-no">188</span><span id="line-188"> @Override</span>
-<span class="source-line-no">189</span><span id="line-189"> public void write(KEY key, Mutation value) throws IOException {</span>
-<span class="source-line-no">190</span><span id="line-190"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
-<span class="source-line-no">191</span><span id="line-191"> throw new IOException("Pass a Delete or a Put");</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"> if (!useWriteAheadLogging) {</span>
-<span class="source-line-no">194</span><span id="line-194"> value.setDurability(Durability.SKIP_WAL);</span>
-<span class="source-line-no">195</span><span id="line-195"> }</span>
-<span class="source-line-no">196</span><span id="line-196"> mutator.mutate(value);</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"> }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200"> /**</span>
-<span class="source-line-no">201</span><span id="line-201"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
-<span class="source-line-no">202</span><span id="line-202"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
-<span class="source-line-no">203</span><span id="line-203"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
-<span class="source-line-no">204</span><span id="line-204"> * Failure to do so will drop writes.</span>
-<span class="source-line-no">205</span><span id="line-205"> * @param context The current task context.</span>
-<span class="source-line-no">206</span><span id="line-206"> * @return The newly created writer instance.</span>
-<span class="source-line-no">207</span><span id="line-207"> * @throws IOException When creating the writer fails.</span>
-<span class="source-line-no">208</span><span id="line-208"> * @throws InterruptedException When the job is cancelled.</span>
-<span class="source-line-no">209</span><span id="line-209"> */</span>
-<span class="source-line-no">210</span><span id="line-210"> @Override</span>
-<span class="source-line-no">211</span><span id="line-211"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
-<span class="source-line-no">212</span><span id="line-212"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">213</span><span id="line-213"> return new TableRecordWriter();</span>
-<span class="source-line-no">214</span><span id="line-214"> }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216"> /**</span>
-<span class="source-line-no">217</span><span id="line-217"> * Checks if the output table exists and is enabled.</span>
-<span class="source-line-no">218</span><span id="line-218"> * @param context The current context.</span>
-<span class="source-line-no">219</span><span id="line-219"> * @throws IOException When the check fails.</span>
-<span class="source-line-no">220</span><span id="line-220"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">221</span><span id="line-221"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
-<span class="source-line-no">222</span><span id="line-222"> */</span>
-<span class="source-line-no">223</span><span id="line-223"> @Override</span>
-<span class="source-line-no">224</span><span id="line-224"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
-<span class="source-line-no">225</span><span id="line-225"> Configuration hConf = getConf();</span>
-<span class="source-line-no">226</span><span id="line-226"> if (hConf == null) {</span>
-<span class="source-line-no">227</span><span id="line-227"> hConf = context.getConfiguration();</span>
-<span class="source-line-no">228</span><span id="line-228"> }</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
-<span class="source-line-no">231</span><span id="line-231"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
-<span class="source-line-no">232</span><span id="line-232"> if (!admin.tableExists(tableName)) {</span>
-<span class="source-line-no">233</span><span id="line-233"> throw new TableNotFoundException(</span>
-<span class="source-line-no">234</span><span id="line-234"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
-<span class="source-line-no">235</span><span id="line-235"> }</span>
-<span class="source-line-no">236</span><span id="line-236"></span>
-<span class="source-line-no">237</span><span id="line-237"> if (!admin.isTableEnabled(tableName)) {</span>
-<span class="source-line-no">238</span><span id="line-238"> throw new TableNotEnabledException(</span>
-<span class="source-line-no">239</span><span id="line-239"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"> }</span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * Returns the output committer.</span>
-<span class="source-line-no">246</span><span id="line-246"> * @param context The current context.</span>
-<span class="source-line-no">247</span><span id="line-247"> * @return The committer.</span>
-<span class="source-line-no">248</span><span id="line-248"> * @throws IOException When creating the committer fails.</span>
-<span class="source-line-no">249</span><span id="line-249"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">250</span><span id="line-250"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
-<span class="source-line-no">251</span><span id="line-251"> */</span>
-<span class="source-line-no">252</span><span id="line-252"> @Override</span>
-<span class="source-line-no">253</span><span id="line-253"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
-<span class="source-line-no">254</span><span id="line-254"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">255</span><span id="line-255"> return new TableOutputCommitter();</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Override</span>
-<span class="source-line-no">259</span><span id="line-259"> public Configuration getConf() {</span>
-<span class="source-line-no">260</span><span id="line-260"> return conf;</span>
-<span class="source-line-no">261</span><span id="line-261"> }</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">103</span><span id="line-103"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">104</span><span id="line-104"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">105</span><span id="line-105"> * Class, String)</span>
+<span class="source-line-no">106</span><span id="line-106"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
+<span class="source-line-no">107</span><span id="line-107"> * peer cluster instead.</span>
+<span class="source-line-no">108</span><span id="line-108"> */</span>
+<span class="source-line-no">109</span><span id="line-109"> @Deprecated</span>
+<span class="source-line-no">110</span><span id="line-110"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112"> /**</span>
+<span class="source-line-no">113</span><span id="line-113"> * Optional job parameter to specify peer cluster's ZK client port.</span>
+<span class="source-line-no">114</span><span id="line-114"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">115</span><span id="line-115"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">116</span><span id="line-116"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
+<span class="source-line-no">117</span><span id="line-117"> */</span>
+<span class="source-line-no">118</span><span id="line-118"> @Deprecated</span>
+<span class="source-line-no">119</span><span id="line-119"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
+<span class="source-line-no">120</span><span id="line-120"></span>
+<span class="source-line-no">121</span><span id="line-121"> /**</span>
+<span class="source-line-no">122</span><span id="line-122"> * Optional specification of the rs class name of the peer cluster.</span>
+<span class="source-line-no">123</span><span id="line-123"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">124</span><span id="line-124"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">125</span><span id="line-125"> */</span>
+<span class="source-line-no">126</span><span id="line-126"> @Deprecated</span>
+<span class="source-line-no">127</span><span id="line-127"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
+<span class="source-line-no">128</span><span id="line-128"> /**</span>
+<span class="source-line-no">129</span><span id="line-129"> * Optional specification of the rs impl name of the peer cluster</span>
+<span class="source-line-no">130</span><span id="line-130"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">131</span><span id="line-131"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">132</span><span id="line-132"> */</span>
+<span class="source-line-no">133</span><span id="line-133"> @Deprecated</span>
+<span class="source-line-no">134</span><span id="line-134"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136"> /** The configuration. */</span>
+<span class="source-line-no">137</span><span id="line-137"> private Configuration conf = null;</span>
+<span class="source-line-no">138</span><span id="line-138"></span>
+<span class="source-line-no">139</span><span id="line-139"> private static Connection createConnection(Configuration conf) throws IOException {</span>
+<span class="source-line-no">140</span><span id="line-140"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
+<span class="source-line-no">141</span><span id="line-141"> if (!StringUtils.isBlank(outputCluster)) {</span>
+<span class="source-line-no">142</span><span id="line-142"> URI uri;</span>
+<span class="source-line-no">143</span><span id="line-143"> try {</span>
+<span class="source-line-no">144</span><span id="line-144"> uri = new URI(outputCluster);</span>
+<span class="source-line-no">145</span><span id="line-145"> } catch (URISyntaxException e) {</span>
+<span class="source-line-no">146</span><span id="line-146"> throw new IOException(</span>
+<span class="source-line-no">147</span><span id="line-147"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
+<span class="source-line-no">148</span><span id="line-148"> e);</span>
+<span class="source-line-no">149</span><span id="line-149"> }</span>
+<span class="source-line-no">150</span><span id="line-150"> return ConnectionFactory.createConnection(uri, conf);</span>
+<span class="source-line-no">151</span><span id="line-151"> } else {</span>
+<span class="source-line-no">152</span><span id="line-152"> return ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">153</span><span id="line-153"> }</span>
+<span class="source-line-no">154</span><span id="line-154"> }</span>
+<span class="source-line-no">155</span><span id="line-155"></span>
+<span class="source-line-no">156</span><span id="line-156"> /**</span>
+<span class="source-line-no">157</span><span id="line-157"> * Writes the reducer output to an HBase table.</span>
+<span class="source-line-no">158</span><span id="line-158"> */</span>
+<span class="source-line-no">159</span><span id="line-159"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
+<span class="source-line-no">160</span><span id="line-160"></span>
+<span class="source-line-no">161</span><span id="line-161"> private Connection connection;</span>
+<span class="source-line-no">162</span><span id="line-162"> private BufferedMutator mutator;</span>
+<span class="source-line-no">163</span><span id="line-163"> boolean useWriteAheadLogging;</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165"> public TableRecordWriter() throws IOException {</span>
+<span class="source-line-no">166</span><span id="line-166"> this.connection = createConnection(conf);</span>
+<span class="source-line-no">167</span><span id="line-167"> String tableName = conf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">168</span><span id="line-168"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
+<span class="source-line-no">169</span><span id="line-169"> LOG.info("Created table instance for " + tableName);</span>
+<span class="source-line-no">170</span><span id="line-170"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
+<span class="source-line-no">171</span><span id="line-171"> }</span>
+<span class="source-line-no">172</span><span id="line-172"></span>
+<span class="source-line-no">173</span><span id="line-173"> /**</span>
+<span class="source-line-no">174</span><span id="line-174"> * Closes the writer, in this case flush table commits.</span>
+<span class="source-line-no">175</span><span id="line-175"> * @param context The context.</span>
+<span class="source-line-no">176</span><span id="line-176"> * @throws IOException When closing the writer fails.</span>
+<span class="source-line-no">177</span><span id="line-177"> * @see RecordWriter#close(TaskAttemptContext)</span>
+<span class="source-line-no">178</span><span id="line-178"> */</span>
+<span class="source-line-no">179</span><span id="line-179"> @Override</span>
+<span class="source-line-no">180</span><span id="line-180"> public void close(TaskAttemptContext context) throws IOException {</span>
+<span class="source-line-no">181</span><span id="line-181"> try {</span>
+<span class="source-line-no">182</span><span id="line-182"> if (mutator != null) {</span>
+<span class="source-line-no">183</span><span id="line-183"> mutator.close();</span>
+<span class="source-line-no">184</span><span id="line-184"> }</span>
+<span class="source-line-no">185</span><span id="line-185"> } finally {</span>
+<span class="source-line-no">186</span><span id="line-186"> if (connection != null) {</span>
+<span class="source-line-no">187</span><span id="line-187"> connection.close();</span>
+<span class="source-line-no">188</span><span id="line-188"> }</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"> }</span>
+<span class="source-line-no">191</span><span id="line-191"></span>
+<span class="source-line-no">192</span><span id="line-192"> /**</span>
+<span class="source-line-no">193</span><span id="line-193"> * Writes a key/value pair into the table.</span>
+<span class="source-line-no">194</span><span id="line-194"> * @param key The key.</span>
+<span class="source-line-no">195</span><span id="line-195"> * @param value The value.</span>
+<span class="source-line-no">196</span><span id="line-196"> * @throws IOException When writing fails.</span>
+<span class="source-line-no">197</span><span id="line-197"> * @see RecordWriter#write(Object, Object)</span>
+<span class="source-line-no">198</span><span id="line-198"> */</span>
+<span class="source-line-no">199</span><span id="line-199"> @Override</span>
+<span class="source-line-no">200</span><span id="line-200"> public void write(KEY key, Mutation value) throws IOException {</span>
+<span class="source-line-no">201</span><span id="line-201"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
+<span class="source-line-no">202</span><span id="line-202"> throw new IOException("Pass a Delete or a Put");</span>
+<span class="source-line-no">203</span><span id="line-203"> }</span>
+<span class="source-line-no">204</span><span id="line-204"> if (!useWriteAheadLogging) {</span>
+<span class="source-line-no">205</span><span id="line-205"> value.setDurability(Durability.SKIP_WAL);</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> mutator.mutate(value);</span>
+<span class="source-line-no">208</span><span id="line-208"> }</span>
+<span class="source-line-no">209</span><span id="line-209"> }</span>
+<span class="source-line-no">210</span><span id="line-210"></span>
+<span class="source-line-no">211</span><span id="line-211"> /**</span>
+<span class="source-line-no">212</span><span id="line-212"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
+<span class="source-line-no">213</span><span id="line-213"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
+<span class="source-line-no">214</span><span id="line-214"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
+<span class="source-line-no">215</span><span id="line-215"> * Failure to do so will drop writes.</span>
+<span class="source-line-no">216</span><span id="line-216"> * @param context The current task context.</span>
+<span class="source-line-no">217</span><span id="line-217"> * @return The newly created writer instance.</span>
+<span class="source-line-no">218</span><span id="line-218"> * @throws IOException When creating the writer fails.</span>
+<span class="source-line-no">219</span><span id="line-219"> * @throws InterruptedException When the job is cancelled.</span>
+<span class="source-line-no">220</span><span id="line-220"> */</span>
+<span class="source-line-no">221</span><span id="line-221"> @Override</span>
+<span class="source-line-no">222</span><span id="line-222"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
+<span class="source-line-no">223</span><span id="line-223"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">224</span><span id="line-224"> return new TableRecordWriter();</span>
+<span class="source-line-no">225</span><span id="line-225"> }</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227"> /**</span>
+<span class="source-line-no">228</span><span id="line-228"> * Checks if the output table exists and is enabled.</span>
+<span class="source-line-no">229</span><span id="line-229"> * @param context The current context.</span>
+<span class="source-line-no">230</span><span id="line-230"> * @throws IOException When the check fails.</span>
+<span class="source-line-no">231</span><span id="line-231"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">232</span><span id="line-232"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
+<span class="source-line-no">233</span><span id="line-233"> */</span>
+<span class="source-line-no">234</span><span id="line-234"> @Override</span>
+<span class="source-line-no">235</span><span id="line-235"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
+<span class="source-line-no">236</span><span id="line-236"> Configuration hConf = getConf();</span>
+<span class="source-line-no">237</span><span id="line-237"> if (hConf == null) {</span>
+<span class="source-line-no">238</span><span id="line-238"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
+<span class="source-line-no">242</span><span id="line-242"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
+<span class="source-line-no">243</span><span id="line-243"> if (!admin.tableExists(tableName)) {</span>
+<span class="source-line-no">244</span><span id="line-244"> throw new TableNotFoundException(</span>
+<span class="source-line-no">245</span><span id="line-245"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
+<span class="source-line-no">246</span><span id="line-246"> }</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248"> if (!admin.isTableEnabled(tableName)) {</span>
+<span class="source-line-no">249</span><span id="line-249"> throw new TableNotEnabledException(</span>
+<span class="source-line-no">250</span><span id="line-250"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
+<span class="source-line-no">251</span><span id="line-251"> }</span>
+<span class="source-line-no">252</span><span id="line-252"> }</span>
+<span class="source-line-no">253</span><span id="line-253"> }</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> /**</span>
+<span class="source-line-no">256</span><span id="line-256"> * Returns the output committer.</span>
+<span class="source-line-no">257</span><span id="line-257"> * @param context The current context.</span>
+<span class="source-line-no">258</span><span id="line-258"> * @return The committer.</span>
+<span class="source-line-no">259</span><span id="line-259"> * @throws IOException When creating the committer fails.</span>
+<span class="source-line-no">260</span><span id="line-260"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">261</span><span id="line-261"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
+<span class="source-line-no">262</span><span id="line-262"> */</span>
<span class="source-line-no">263</span><span id="line-263"> @Override</span>
-<span class="source-line-no">264</span><span id="line-264"> public void setConf(Configuration otherConf) {</span>
-<span class="source-line-no">265</span><span id="line-265"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">266</span><span id="line-266"> if (tableName == null || tableName.length() <= 0) {</span>
-<span class="source-line-no">267</span><span id="line-267"> throw new IllegalArgumentException("Must specify table name");</span>
-<span class="source-line-no">268</span><span id="line-268"> }</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270"> String address = otherConf.get(QUORUM_ADDRESS);</span>
-<span class="source-line-no">271</span><span id="line-271"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> try {</span>
-<span class="source-line-no">274</span><span id="line-274"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
-<span class="source-line-no">275</span><span id="line-275"> if (zkClientPort != 0) {</span>
-<span class="source-line-no">276</span><span id="line-276"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
-<span class="source-line-no">277</span><span id="line-277"> }</span>
-<span class="source-line-no">278</span><span id="line-278"> } catch (IOException e) {</span>
-<span class="source-line-no">279</span><span id="line-279"> LOG.error(e.toString(), e);</span>
-<span class="source-line-no">280</span><span id="line-280"> throw new RuntimeException(e);</span>
-<span class="source-line-no">281</span><span id="line-281"> }</span>
-<span class="source-line-no">282</span><span id="line-282"> }</span>
-<span class="source-line-no">283</span><span id="line-283">}</span>
+<span class="source-line-no">264</span><span id="line-264"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
+<span class="source-line-no">265</span><span id="line-265"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">266</span><span id="line-266"> Configuration hConf = getConf();</span>
+<span class="source-line-no">267</span><span id="line-267"> if (hConf == null) {</span>
+<span class="source-line-no">268</span><span id="line-268"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">269</span><span id="line-269"> }</span>
+<span class="source-line-no">270</span><span id="line-270"></span>
+<span class="source-line-no">271</span><span id="line-271"> try {</span>
+<span class="source-line-no">272</span><span id="line-272"> Class<? extends OutputCommitter> outputCommitter =</span>
+<span class="source-line-no">273</span><span id="line-273"> hConf.getClass(OUTPUT_COMMITTER_CLASS, TableOutputCommitter.class, OutputCommitter.class);</span>
+<span class="source-line-no">274</span><span id="line-274"> return ReflectionUtils.newInstance(outputCommitter);</span>
+<span class="source-line-no">275</span><span id="line-275"> } catch (Exception e) {</span>
+<span class="source-line-no">276</span><span id="line-276"> throw new IOException("Could not create the configured OutputCommitter", e);</span>
+<span class="source-line-no">277</span><span id="line-277"> }</span>
+<span class="source-line-no">278</span><span id="line-278"> }</span>
+<span class="source-line-no">279</span><span id="line-279"></span>
+<span class="source-line-no">280</span><span id="line-280"> @Override</span>
+<span class="source-line-no">281</span><span id="line-281"> public Configuration getConf() {</span>
+<span class="source-line-no">282</span><span id="line-282"> return conf;</span>
+<span class="source-line-no">283</span><span id="line-283"> }</span>
+<span class="source-line-no">284</span><span id="line-284"></span>
+<span class="source-line-no">285</span><span id="line-285"> @Override</span>
+<span class="source-line-no">286</span><span id="line-286"> public void setConf(Configuration otherConf) {</span>
+<span class="source-line-no">287</span><span id="line-287"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">288</span><span id="line-288"> if (tableName == null || tableName.length() <= 0) {</span>
+<span class="source-line-no">289</span><span id="line-289"> throw new IllegalArgumentException("Must specify table name");</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> String address = otherConf.get(QUORUM_ADDRESS);</span>
+<span class="source-line-no">293</span><span id="line-293"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295"> try {</span>
+<span class="source-line-no">296</span><span id="line-296"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
+<span class="source-line-no">297</span><span id="line-297"> if (zkClientPort != 0) {</span>
+<span class="source-line-no">298</span><span id="line-298"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
+<span class="source-line-no">299</span><span id="line-299"> }</span>
+<span class="source-line-no">300</span><span id="line-300"> } catch (IOException e) {</span>
+<span class="source-line-no">301</span><span id="line-301"> LOG.error(e.toString(), e);</span>
+<span class="source-line-no">302</span><span id="line-302"> throw new RuntimeException(e);</span>
+<span class="source-line-no">303</span><span id="line-303"> }</span>
+<span class="source-line-no">304</span><span id="line-304"> }</span>
+<span class="source-line-no">305</span><span id="line-305">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
index 12cb1fea757..f3ebdbc83ee 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html
@@ -49,251 +49,273 @@
<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.Durability;</span>
<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Mutation;</span>
<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.Put;</span>
-<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.mapreduce.JobContext;</span>
-<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
-<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputFormat;</span>
-<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.RecordWriter;</span>
-<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
-<span class="source-line-no">044</span><span id="line-44">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">045</span><span id="line-45">import org.slf4j.Logger;</span>
-<span class="source-line-no">046</span><span id="line-46">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">047</span><span id="line-47"></span>
-<span class="source-line-no">048</span><span id="line-48">/**</span>
-<span class="source-line-no">049</span><span id="line-49"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
-<span class="source-line-no">050</span><span id="line-50"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
-<span class="source-line-no">051</span><span id="line-51"> */</span>
-<span class="source-line-no">052</span><span id="line-52">@InterfaceAudience.Public</span>
-<span class="source-line-no">053</span><span id="line-53">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57"> /** Job parameter that specifies the output table. */</span>
-<span class="source-line-no">058</span><span id="line-58"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60"> /** Property value to use write-ahead logging */</span>
-<span class="source-line-no">061</span><span id="line-61"> public static final boolean WAL_ON = true;</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63"> /** Property value to disable write-ahead logging */</span>
-<span class="source-line-no">064</span><span id="line-64"> public static final boolean WAL_OFF = false;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
-<span class="source-line-no">067</span><span id="line-67"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69"> /**</span>
-<span class="source-line-no">070</span><span id="line-70"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">071</span><span id="line-71"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">072</span><span id="line-72"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">073</span><span id="line-73"> * Class, java.net.URI)</span>
-<span class="source-line-no">074</span><span id="line-74"> */</span>
-<span class="source-line-no">075</span><span id="line-75"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> /**</span>
-<span class="source-line-no">078</span><span id="line-78"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
-<span class="source-line-no">079</span><span id="line-79"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
-<span class="source-line-no">080</span><span id="line-80"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
-<span class="source-line-no">081</span><span id="line-81"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
-<span class="source-line-no">082</span><span id="line-82"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
-<span class="source-line-no">083</span><span id="line-83"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">084</span><span id="line-84"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">085</span><span id="line-85"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">086</span><span id="line-86"> */</span>
-<span class="source-line-no">087</span><span id="line-87"> @Deprecated</span>
-<span class="source-line-no">088</span><span id="line-88"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90"> /**</span>
-<span class="source-line-no">091</span><span id="line-91"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
-<span class="source-line-no">092</span><span id="line-92"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
-<span class="source-line-no">093</span><span id="line-93"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
-<span class="source-line-no">094</span><span id="line-94"> * Class, String)</span>
-<span class="source-line-no">095</span><span id="line-95"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
-<span class="source-line-no">096</span><span id="line-96"> * peer cluster instead.</span>
+<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.util.ReflectionUtils;</span>
+<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.mapreduce.JobContext;</span>
+<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.mapreduce.OutputCommitter;</span>
+<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.mapreduce.OutputFormat;</span>
+<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.mapreduce.RecordWriter;</span>
+<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.mapreduce.TaskAttemptContext;</span>
+<span class="source-line-no">045</span><span id="line-45">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">046</span><span id="line-46">import org.slf4j.Logger;</span>
+<span class="source-line-no">047</span><span id="line-47">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">048</span><span id="line-48"></span>
+<span class="source-line-no">049</span><span id="line-49">/**</span>
+<span class="source-line-no">050</span><span id="line-50"> * Convert Map/Reduce output and write it to an HBase table. The KEY is ignored while the output</span>
+<span class="source-line-no">051</span><span id="line-51"> * value <u>must</u> be either a {@link Put} or a {@link Delete} instance.</span>
+<span class="source-line-no">052</span><span id="line-52"> */</span>
+<span class="source-line-no">053</span><span id="line-53">@InterfaceAudience.Public</span>
+<span class="source-line-no">054</span><span id="line-54">public class TableOutputFormat<KEY> extends OutputFormat<KEY, Mutation> implements Configurable {</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56"> private static final Logger LOG = LoggerFactory.getLogger(TableOutputFormat.class);</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58"> /** Job parameter that specifies the output table. */</span>
+<span class="source-line-no">059</span><span id="line-59"> public static final String OUTPUT_TABLE = "hbase.mapred.outputtable";</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61"> /** Property value to use write-ahead logging */</span>
+<span class="source-line-no">062</span><span id="line-62"> public static final boolean WAL_ON = true;</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64"> /** Property value to disable write-ahead logging */</span>
+<span class="source-line-no">065</span><span id="line-65"> public static final boolean WAL_OFF = false;</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67"> /** Set this to {@link #WAL_OFF} to turn off write-ahead logging (WAL) */</span>
+<span class="source-line-no">068</span><span id="line-68"> public static final String WAL_PROPERTY = "hbase.mapreduce.tableoutputformat.write.wal";</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70"> /**</span>
+<span class="source-line-no">071</span><span id="line-71"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">072</span><span id="line-72"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">073</span><span id="line-73"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">074</span><span id="line-74"> * Class, java.net.URI)</span>
+<span class="source-line-no">075</span><span id="line-75"> */</span>
+<span class="source-line-no">076</span><span id="line-76"> public static final String OUTPUT_CLUSTER = "hbase.mapred.outputcluster";</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78"> /**</span>
+<span class="source-line-no">079</span><span id="line-79"> * The configuration key for specifying a custom</span>
+<span class="source-line-no">080</span><span id="line-80"> * {@link org.apache.hadoop.mapreduce.OutputCommitter} implementation to be used by</span>
+<span class="source-line-no">081</span><span id="line-81"> * {@link TableOutputFormat}. The value for this property should be the fully qualified class name</span>
+<span class="source-line-no">082</span><span id="line-82"> * of the custom committer. If this property is not set, {@link TableOutputCommitter} will be used</span>
+<span class="source-line-no">083</span><span id="line-83"> * by default.</span>
+<span class="source-line-no">084</span><span id="line-84"> */</span>
+<span class="source-line-no">085</span><span id="line-85"> public static final String OUTPUT_COMMITTER_CLASS =</span>
+<span class="source-line-no">086</span><span id="line-86"> "hbase.mapreduce.tableoutputformat.output.committer.class";</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88"> /**</span>
+<span class="source-line-no">089</span><span id="line-89"> * Prefix for configuration property overrides to apply in {@link #setConf(Configuration)}. For</span>
+<span class="source-line-no">090</span><span id="line-90"> * keys matching this prefix, the prefix is stripped, and the value is set in the configuration</span>
+<span class="source-line-no">091</span><span id="line-91"> * with the resulting key, ie. the entry "hbase.mapred.output.key1 = value1" would be set in the</span>
+<span class="source-line-no">092</span><span id="line-92"> * configuration as "key1 = value1". Use this to set properties which should only be applied to</span>
+<span class="source-line-no">093</span><span id="line-93"> * the {@code TableOutputFormat} configuration and not the input configuration.</span>
+<span class="source-line-no">094</span><span id="line-94"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">095</span><span id="line-95"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">096</span><span id="line-96"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
<span class="source-line-no">097</span><span id="line-97"> */</span>
<span class="source-line-no">098</span><span id="line-98"> @Deprecated</span>
-<span class="source-line-no">099</span><span id="line-99"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">099</span><span id="line-99"> public static final String OUTPUT_CONF_PREFIX = "hbase.mapred.output.";</span>
<span class="source-line-no">100</span><span id="line-100"></span>
<span class="source-line-no">101</span><span id="line-101"> /**</span>
-<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify peer cluster's ZK client port.</span>
-<span class="source-line-no">103</span><span id="line-103"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
-<span class="source-line-no">104</span><span id="line-104"> * specifying configurations any more, you can specify any configuration with the</span>
-<span class="source-line-no">105</span><span id="line-105"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
-<span class="source-line-no">106</span><span id="line-106"> */</span>
-<span class="source-line-no">107</span><span id="line-107"> @Deprecated</span>
-<span class="source-line-no">108</span><span id="line-108"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
-<span class="source-line-no">109</span><span id="line-109"></span>
-<span class="source-line-no">110</span><span id="line-110"> /**</span>
-<span class="source-line-no">111</span><span id="line-111"> * Optional specification of the rs class name of the peer cluster.</span>
-<span class="source-line-no">112</span><span id="line-112"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">113</span><span id="line-113"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">114</span><span id="line-114"> */</span>
-<span class="source-line-no">115</span><span id="line-115"> @Deprecated</span>
-<span class="source-line-no">116</span><span id="line-116"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
-<span class="source-line-no">117</span><span id="line-117"> /**</span>
-<span class="source-line-no">118</span><span id="line-118"> * Optional specification of the rs impl name of the peer cluster</span>
-<span class="source-line-no">119</span><span id="line-119"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
-<span class="source-line-no">120</span><span id="line-120"> * long ago, see HBASE-6044.</span>
-<span class="source-line-no">121</span><span id="line-121"> */</span>
-<span class="source-line-no">122</span><span id="line-122"> @Deprecated</span>
-<span class="source-line-no">123</span><span id="line-123"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125"> /** The configuration. */</span>
-<span class="source-line-no">126</span><span id="line-126"> private Configuration conf = null;</span>
-<span class="source-line-no">127</span><span id="line-127"></span>
-<span class="source-line-no">128</span><span id="line-128"> private static Connection createConnection(Configuration conf) throws IOException {</span>
-<span class="source-line-no">129</span><span id="line-129"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
-<span class="source-line-no">130</span><span id="line-130"> if (!StringUtils.isBlank(outputCluster)) {</span>
-<span class="source-line-no">131</span><span id="line-131"> URI uri;</span>
-<span class="source-line-no">132</span><span id="line-132"> try {</span>
-<span class="source-line-no">133</span><span id="line-133"> uri = new URI(outputCluster);</span>
-<span class="source-line-no">134</span><span id="line-134"> } catch (URISyntaxException e) {</span>
-<span class="source-line-no">135</span><span id="line-135"> throw new IOException(</span>
-<span class="source-line-no">136</span><span id="line-136"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
-<span class="source-line-no">137</span><span id="line-137"> e);</span>
-<span class="source-line-no">138</span><span id="line-138"> }</span>
-<span class="source-line-no">139</span><span id="line-139"> return ConnectionFactory.createConnection(uri, conf);</span>
-<span class="source-line-no">140</span><span id="line-140"> } else {</span>
-<span class="source-line-no">141</span><span id="line-141"> return ConnectionFactory.createConnection(conf);</span>
-<span class="source-line-no">142</span><span id="line-142"> }</span>
-<span class="source-line-no">143</span><span id="line-143"> }</span>
-<span class="source-line-no">144</span><span id="line-144"></span>
-<span class="source-line-no">145</span><span id="line-145"> /**</span>
-<span class="source-line-no">146</span><span id="line-146"> * Writes the reducer output to an HBase table.</span>
-<span class="source-line-no">147</span><span id="line-147"> */</span>
-<span class="source-line-no">148</span><span id="line-148"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150"> private Connection connection;</span>
-<span class="source-line-no">151</span><span id="line-151"> private BufferedMutator mutator;</span>
-<span class="source-line-no">152</span><span id="line-152"> boolean useWriteAheadLogging;</span>
-<span class="source-line-no">153</span><span id="line-153"></span>
-<span class="source-line-no">154</span><span id="line-154"> public TableRecordWriter() throws IOException {</span>
-<span class="source-line-no">155</span><span id="line-155"> this.connection = createConnection(conf);</span>
-<span class="source-line-no">156</span><span id="line-156"> String tableName = conf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">157</span><span id="line-157"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
-<span class="source-line-no">158</span><span id="line-158"> LOG.info("Created table instance for " + tableName);</span>
-<span class="source-line-no">159</span><span id="line-159"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
-<span class="source-line-no">160</span><span id="line-160"> }</span>
-<span class="source-line-no">161</span><span id="line-161"></span>
-<span class="source-line-no">162</span><span id="line-162"> /**</span>
-<span class="source-line-no">163</span><span id="line-163"> * Closes the writer, in this case flush table commits.</span>
-<span class="source-line-no">164</span><span id="line-164"> * @param context The context.</span>
-<span class="source-line-no">165</span><span id="line-165"> * @throws IOException When closing the writer fails.</span>
-<span class="source-line-no">166</span><span id="line-166"> * @see RecordWriter#close(TaskAttemptContext)</span>
-<span class="source-line-no">167</span><span id="line-167"> */</span>
-<span class="source-line-no">168</span><span id="line-168"> @Override</span>
-<span class="source-line-no">169</span><span id="line-169"> public void close(TaskAttemptContext context) throws IOException {</span>
-<span class="source-line-no">170</span><span id="line-170"> try {</span>
-<span class="source-line-no">171</span><span id="line-171"> if (mutator != null) {</span>
-<span class="source-line-no">172</span><span id="line-172"> mutator.close();</span>
-<span class="source-line-no">173</span><span id="line-173"> }</span>
-<span class="source-line-no">174</span><span id="line-174"> } finally {</span>
-<span class="source-line-no">175</span><span id="line-175"> if (connection != null) {</span>
-<span class="source-line-no">176</span><span id="line-176"> connection.close();</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"> }</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"></span>
-<span class="source-line-no">181</span><span id="line-181"> /**</span>
-<span class="source-line-no">182</span><span id="line-182"> * Writes a key/value pair into the table.</span>
-<span class="source-line-no">183</span><span id="line-183"> * @param key The key.</span>
-<span class="source-line-no">184</span><span id="line-184"> * @param value The value.</span>
-<span class="source-line-no">185</span><span id="line-185"> * @throws IOException When writing fails.</span>
-<span class="source-line-no">186</span><span id="line-186"> * @see RecordWriter#write(Object, Object)</span>
-<span class="source-line-no">187</span><span id="line-187"> */</span>
-<span class="source-line-no">188</span><span id="line-188"> @Override</span>
-<span class="source-line-no">189</span><span id="line-189"> public void write(KEY key, Mutation value) throws IOException {</span>
-<span class="source-line-no">190</span><span id="line-190"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
-<span class="source-line-no">191</span><span id="line-191"> throw new IOException("Pass a Delete or a Put");</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"> if (!useWriteAheadLogging) {</span>
-<span class="source-line-no">194</span><span id="line-194"> value.setDurability(Durability.SKIP_WAL);</span>
-<span class="source-line-no">195</span><span id="line-195"> }</span>
-<span class="source-line-no">196</span><span id="line-196"> mutator.mutate(value);</span>
-<span class="source-line-no">197</span><span id="line-197"> }</span>
-<span class="source-line-no">198</span><span id="line-198"> }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200"> /**</span>
-<span class="source-line-no">201</span><span id="line-201"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
-<span class="source-line-no">202</span><span id="line-202"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
-<span class="source-line-no">203</span><span id="line-203"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
-<span class="source-line-no">204</span><span id="line-204"> * Failure to do so will drop writes.</span>
-<span class="source-line-no">205</span><span id="line-205"> * @param context The current task context.</span>
-<span class="source-line-no">206</span><span id="line-206"> * @return The newly created writer instance.</span>
-<span class="source-line-no">207</span><span id="line-207"> * @throws IOException When creating the writer fails.</span>
-<span class="source-line-no">208</span><span id="line-208"> * @throws InterruptedException When the job is cancelled.</span>
-<span class="source-line-no">209</span><span id="line-209"> */</span>
-<span class="source-line-no">210</span><span id="line-210"> @Override</span>
-<span class="source-line-no">211</span><span id="line-211"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
-<span class="source-line-no">212</span><span id="line-212"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">213</span><span id="line-213"> return new TableRecordWriter();</span>
-<span class="source-line-no">214</span><span id="line-214"> }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216"> /**</span>
-<span class="source-line-no">217</span><span id="line-217"> * Checks if the output table exists and is enabled.</span>
-<span class="source-line-no">218</span><span id="line-218"> * @param context The current context.</span>
-<span class="source-line-no">219</span><span id="line-219"> * @throws IOException When the check fails.</span>
-<span class="source-line-no">220</span><span id="line-220"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">221</span><span id="line-221"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
-<span class="source-line-no">222</span><span id="line-222"> */</span>
-<span class="source-line-no">223</span><span id="line-223"> @Override</span>
-<span class="source-line-no">224</span><span id="line-224"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
-<span class="source-line-no">225</span><span id="line-225"> Configuration hConf = getConf();</span>
-<span class="source-line-no">226</span><span id="line-226"> if (hConf == null) {</span>
-<span class="source-line-no">227</span><span id="line-227"> hConf = context.getConfiguration();</span>
-<span class="source-line-no">228</span><span id="line-228"> }</span>
-<span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
-<span class="source-line-no">231</span><span id="line-231"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
-<span class="source-line-no">232</span><span id="line-232"> if (!admin.tableExists(tableName)) {</span>
-<span class="source-line-no">233</span><span id="line-233"> throw new TableNotFoundException(</span>
-<span class="source-line-no">234</span><span id="line-234"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
-<span class="source-line-no">235</span><span id="line-235"> }</span>
-<span class="source-line-no">236</span><span id="line-236"></span>
-<span class="source-line-no">237</span><span id="line-237"> if (!admin.isTableEnabled(tableName)) {</span>
-<span class="source-line-no">238</span><span id="line-238"> throw new TableNotEnabledException(</span>
-<span class="source-line-no">239</span><span id="line-239"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"> }</span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * Returns the output committer.</span>
-<span class="source-line-no">246</span><span id="line-246"> * @param context The current context.</span>
-<span class="source-line-no">247</span><span id="line-247"> * @return The committer.</span>
-<span class="source-line-no">248</span><span id="line-248"> * @throws IOException When creating the committer fails.</span>
-<span class="source-line-no">249</span><span id="line-249"> * @throws InterruptedException When the job is aborted.</span>
-<span class="source-line-no">250</span><span id="line-250"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
-<span class="source-line-no">251</span><span id="line-251"> */</span>
-<span class="source-line-no">252</span><span id="line-252"> @Override</span>
-<span class="source-line-no">253</span><span id="line-253"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
-<span class="source-line-no">254</span><span id="line-254"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">255</span><span id="line-255"> return new TableOutputCommitter();</span>
-<span class="source-line-no">256</span><span id="line-256"> }</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> @Override</span>
-<span class="source-line-no">259</span><span id="line-259"> public Configuration getConf() {</span>
-<span class="source-line-no">260</span><span id="line-260"> return conf;</span>
-<span class="source-line-no">261</span><span id="line-261"> }</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">102</span><span id="line-102"> * Optional job parameter to specify a peer cluster. Used specifying remote cluster when copying</span>
+<span class="source-line-no">103</span><span id="line-103"> * between hbase clusters (the source is picked up from <code>hbase-site.xml</code>).</span>
+<span class="source-line-no">104</span><span id="line-104"> * @see TableMapReduceUtil#initTableReducerJob(String, Class, org.apache.hadoop.mapreduce.Job,</span>
+<span class="source-line-no">105</span><span id="line-105"> * Class, String)</span>
+<span class="source-line-no">106</span><span id="line-106"> * @deprecated Since 3.0.0, will be removed in 4.0.0. Use {@link #OUTPUT_CLUSTER} to specify the</span>
+<span class="source-line-no">107</span><span id="line-107"> * peer cluster instead.</span>
+<span class="source-line-no">108</span><span id="line-108"> */</span>
+<span class="source-line-no">109</span><span id="line-109"> @Deprecated</span>
+<span class="source-line-no">110</span><span id="line-110"> public static final String QUORUM_ADDRESS = OUTPUT_CONF_PREFIX + "quorum";</span>
+<span class="source-line-no">111</span><span id="line-111"></span>
+<span class="source-line-no">112</span><span id="line-112"> /**</span>
+<span class="source-line-no">113</span><span id="line-113"> * Optional job parameter to specify peer cluster's ZK client port.</span>
+<span class="source-line-no">114</span><span id="line-114"> * @deprecated Since 3.0.0, will be removed in 4.0.0. You do not need to use this way for</span>
+<span class="source-line-no">115</span><span id="line-115"> * specifying configurations any more, you can specify any configuration with the</span>
+<span class="source-line-no">116</span><span id="line-116"> * connection uri's queries specified by the {@link #OUTPUT_CLUSTER} parameter.</span>
+<span class="source-line-no">117</span><span id="line-117"> */</span>
+<span class="source-line-no">118</span><span id="line-118"> @Deprecated</span>
+<span class="source-line-no">119</span><span id="line-119"> public static final String QUORUM_PORT = OUTPUT_CONF_PREFIX + "quorum.port";</span>
+<span class="source-line-no">120</span><span id="line-120"></span>
+<span class="source-line-no">121</span><span id="line-121"> /**</span>
+<span class="source-line-no">122</span><span id="line-122"> * Optional specification of the rs class name of the peer cluster.</span>
+<span class="source-line-no">123</span><span id="line-123"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">124</span><span id="line-124"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">125</span><span id="line-125"> */</span>
+<span class="source-line-no">126</span><span id="line-126"> @Deprecated</span>
+<span class="source-line-no">127</span><span id="line-127"> public static final String REGION_SERVER_CLASS = OUTPUT_CONF_PREFIX + "rs.class";</span>
+<span class="source-line-no">128</span><span id="line-128"> /**</span>
+<span class="source-line-no">129</span><span id="line-129"> * Optional specification of the rs impl name of the peer cluster</span>
+<span class="source-line-no">130</span><span id="line-130"> * @deprecated Since 2.5.9, 2.6.1 and 2.7.0, will be removed in 4.0.0. Does not take effect from</span>
+<span class="source-line-no">131</span><span id="line-131"> * long ago, see HBASE-6044.</span>
+<span class="source-line-no">132</span><span id="line-132"> */</span>
+<span class="source-line-no">133</span><span id="line-133"> @Deprecated</span>
+<span class="source-line-no">134</span><span id="line-134"> public static final String REGION_SERVER_IMPL = OUTPUT_CONF_PREFIX + "rs.impl";</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136"> /** The configuration. */</span>
+<span class="source-line-no">137</span><span id="line-137"> private Configuration conf = null;</span>
+<span class="source-line-no">138</span><span id="line-138"></span>
+<span class="source-line-no">139</span><span id="line-139"> private static Connection createConnection(Configuration conf) throws IOException {</span>
+<span class="source-line-no">140</span><span id="line-140"> String outputCluster = conf.get(OUTPUT_CLUSTER);</span>
+<span class="source-line-no">141</span><span id="line-141"> if (!StringUtils.isBlank(outputCluster)) {</span>
+<span class="source-line-no">142</span><span id="line-142"> URI uri;</span>
+<span class="source-line-no">143</span><span id="line-143"> try {</span>
+<span class="source-line-no">144</span><span id="line-144"> uri = new URI(outputCluster);</span>
+<span class="source-line-no">145</span><span id="line-145"> } catch (URISyntaxException e) {</span>
+<span class="source-line-no">146</span><span id="line-146"> throw new IOException(</span>
+<span class="source-line-no">147</span><span id="line-147"> "malformed connection uri: " + outputCluster + ", please check config " + OUTPUT_CLUSTER,</span>
+<span class="source-line-no">148</span><span id="line-148"> e);</span>
+<span class="source-line-no">149</span><span id="line-149"> }</span>
+<span class="source-line-no">150</span><span id="line-150"> return ConnectionFactory.createConnection(uri, conf);</span>
+<span class="source-line-no">151</span><span id="line-151"> } else {</span>
+<span class="source-line-no">152</span><span id="line-152"> return ConnectionFactory.createConnection(conf);</span>
+<span class="source-line-no">153</span><span id="line-153"> }</span>
+<span class="source-line-no">154</span><span id="line-154"> }</span>
+<span class="source-line-no">155</span><span id="line-155"></span>
+<span class="source-line-no">156</span><span id="line-156"> /**</span>
+<span class="source-line-no">157</span><span id="line-157"> * Writes the reducer output to an HBase table.</span>
+<span class="source-line-no">158</span><span id="line-158"> */</span>
+<span class="source-line-no">159</span><span id="line-159"> protected class TableRecordWriter extends RecordWriter<KEY, Mutation> {</span>
+<span class="source-line-no">160</span><span id="line-160"></span>
+<span class="source-line-no">161</span><span id="line-161"> private Connection connection;</span>
+<span class="source-line-no">162</span><span id="line-162"> private BufferedMutator mutator;</span>
+<span class="source-line-no">163</span><span id="line-163"> boolean useWriteAheadLogging;</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165"> public TableRecordWriter() throws IOException {</span>
+<span class="source-line-no">166</span><span id="line-166"> this.connection = createConnection(conf);</span>
+<span class="source-line-no">167</span><span id="line-167"> String tableName = conf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">168</span><span id="line-168"> this.mutator = connection.getBufferedMutator(TableName.valueOf(tableName));</span>
+<span class="source-line-no">169</span><span id="line-169"> LOG.info("Created table instance for " + tableName);</span>
+<span class="source-line-no">170</span><span id="line-170"> this.useWriteAheadLogging = conf.getBoolean(WAL_PROPERTY, WAL_ON);</span>
+<span class="source-line-no">171</span><span id="line-171"> }</span>
+<span class="source-line-no">172</span><span id="line-172"></span>
+<span class="source-line-no">173</span><span id="line-173"> /**</span>
+<span class="source-line-no">174</span><span id="line-174"> * Closes the writer, in this case flush table commits.</span>
+<span class="source-line-no">175</span><span id="line-175"> * @param context The context.</span>
+<span class="source-line-no">176</span><span id="line-176"> * @throws IOException When closing the writer fails.</span>
+<span class="source-line-no">177</span><span id="line-177"> * @see RecordWriter#close(TaskAttemptContext)</span>
+<span class="source-line-no">178</span><span id="line-178"> */</span>
+<span class="source-line-no">179</span><span id="line-179"> @Override</span>
+<span class="source-line-no">180</span><span id="line-180"> public void close(TaskAttemptContext context) throws IOException {</span>
+<span class="source-line-no">181</span><span id="line-181"> try {</span>
+<span class="source-line-no">182</span><span id="line-182"> if (mutator != null) {</span>
+<span class="source-line-no">183</span><span id="line-183"> mutator.close();</span>
+<span class="source-line-no">184</span><span id="line-184"> }</span>
+<span class="source-line-no">185</span><span id="line-185"> } finally {</span>
+<span class="source-line-no">186</span><span id="line-186"> if (connection != null) {</span>
+<span class="source-line-no">187</span><span id="line-187"> connection.close();</span>
+<span class="source-line-no">188</span><span id="line-188"> }</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"> }</span>
+<span class="source-line-no">191</span><span id="line-191"></span>
+<span class="source-line-no">192</span><span id="line-192"> /**</span>
+<span class="source-line-no">193</span><span id="line-193"> * Writes a key/value pair into the table.</span>
+<span class="source-line-no">194</span><span id="line-194"> * @param key The key.</span>
+<span class="source-line-no">195</span><span id="line-195"> * @param value The value.</span>
+<span class="source-line-no">196</span><span id="line-196"> * @throws IOException When writing fails.</span>
+<span class="source-line-no">197</span><span id="line-197"> * @see RecordWriter#write(Object, Object)</span>
+<span class="source-line-no">198</span><span id="line-198"> */</span>
+<span class="source-line-no">199</span><span id="line-199"> @Override</span>
+<span class="source-line-no">200</span><span id="line-200"> public void write(KEY key, Mutation value) throws IOException {</span>
+<span class="source-line-no">201</span><span id="line-201"> if (!(value instanceof Put) && !(value instanceof Delete)) {</span>
+<span class="source-line-no">202</span><span id="line-202"> throw new IOException("Pass a Delete or a Put");</span>
+<span class="source-line-no">203</span><span id="line-203"> }</span>
+<span class="source-line-no">204</span><span id="line-204"> if (!useWriteAheadLogging) {</span>
+<span class="source-line-no">205</span><span id="line-205"> value.setDurability(Durability.SKIP_WAL);</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> mutator.mutate(value);</span>
+<span class="source-line-no">208</span><span id="line-208"> }</span>
+<span class="source-line-no">209</span><span id="line-209"> }</span>
+<span class="source-line-no">210</span><span id="line-210"></span>
+<span class="source-line-no">211</span><span id="line-211"> /**</span>
+<span class="source-line-no">212</span><span id="line-212"> * Creates a new record writer. Be aware that the baseline javadoc gives the impression that there</span>
+<span class="source-line-no">213</span><span id="line-213"> * is a single {@link RecordWriter} per job but in HBase, it is more natural if we give you a new</span>
+<span class="source-line-no">214</span><span id="line-214"> * RecordWriter per call of this method. You must close the returned RecordWriter when done.</span>
+<span class="source-line-no">215</span><span id="line-215"> * Failure to do so will drop writes.</span>
+<span class="source-line-no">216</span><span id="line-216"> * @param context The current task context.</span>
+<span class="source-line-no">217</span><span id="line-217"> * @return The newly created writer instance.</span>
+<span class="source-line-no">218</span><span id="line-218"> * @throws IOException When creating the writer fails.</span>
+<span class="source-line-no">219</span><span id="line-219"> * @throws InterruptedException When the job is cancelled.</span>
+<span class="source-line-no">220</span><span id="line-220"> */</span>
+<span class="source-line-no">221</span><span id="line-221"> @Override</span>
+<span class="source-line-no">222</span><span id="line-222"> public RecordWriter<KEY, Mutation> getRecordWriter(TaskAttemptContext context)</span>
+<span class="source-line-no">223</span><span id="line-223"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">224</span><span id="line-224"> return new TableRecordWriter();</span>
+<span class="source-line-no">225</span><span id="line-225"> }</span>
+<span class="source-line-no">226</span><span id="line-226"></span>
+<span class="source-line-no">227</span><span id="line-227"> /**</span>
+<span class="source-line-no">228</span><span id="line-228"> * Checks if the output table exists and is enabled.</span>
+<span class="source-line-no">229</span><span id="line-229"> * @param context The current context.</span>
+<span class="source-line-no">230</span><span id="line-230"> * @throws IOException When the check fails.</span>
+<span class="source-line-no">231</span><span id="line-231"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">232</span><span id="line-232"> * @see OutputFormat#checkOutputSpecs(JobContext)</span>
+<span class="source-line-no">233</span><span id="line-233"> */</span>
+<span class="source-line-no">234</span><span id="line-234"> @Override</span>
+<span class="source-line-no">235</span><span id="line-235"> public void checkOutputSpecs(JobContext context) throws IOException, InterruptedException {</span>
+<span class="source-line-no">236</span><span id="line-236"> Configuration hConf = getConf();</span>
+<span class="source-line-no">237</span><span id="line-237"> if (hConf == null) {</span>
+<span class="source-line-no">238</span><span id="line-238"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241"> try (Connection connection = createConnection(hConf); Admin admin = connection.getAdmin()) {</span>
+<span class="source-line-no">242</span><span id="line-242"> TableName tableName = TableName.valueOf(hConf.get(OUTPUT_TABLE));</span>
+<span class="source-line-no">243</span><span id="line-243"> if (!admin.tableExists(tableName)) {</span>
+<span class="source-line-no">244</span><span id="line-244"> throw new TableNotFoundException(</span>
+<span class="source-line-no">245</span><span id="line-245"> "Can't write, table does not exist:" + tableName.getNameAsString());</span>
+<span class="source-line-no">246</span><span id="line-246"> }</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248"> if (!admin.isTableEnabled(tableName)) {</span>
+<span class="source-line-no">249</span><span id="line-249"> throw new TableNotEnabledException(</span>
+<span class="source-line-no">250</span><span id="line-250"> "Can't write, table is not enabled: " + tableName.getNameAsString());</span>
+<span class="source-line-no">251</span><span id="line-251"> }</span>
+<span class="source-line-no">252</span><span id="line-252"> }</span>
+<span class="source-line-no">253</span><span id="line-253"> }</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> /**</span>
+<span class="source-line-no">256</span><span id="line-256"> * Returns the output committer.</span>
+<span class="source-line-no">257</span><span id="line-257"> * @param context The current context.</span>
+<span class="source-line-no">258</span><span id="line-258"> * @return The committer.</span>
+<span class="source-line-no">259</span><span id="line-259"> * @throws IOException When creating the committer fails.</span>
+<span class="source-line-no">260</span><span id="line-260"> * @throws InterruptedException When the job is aborted.</span>
+<span class="source-line-no">261</span><span id="line-261"> * @see OutputFormat#getOutputCommitter(TaskAttemptContext)</span>
+<span class="source-line-no">262</span><span id="line-262"> */</span>
<span class="source-line-no">263</span><span id="line-263"> @Override</span>
-<span class="source-line-no">264</span><span id="line-264"> public void setConf(Configuration otherConf) {</span>
-<span class="source-line-no">265</span><span id="line-265"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
-<span class="source-line-no">266</span><span id="line-266"> if (tableName == null || tableName.length() <= 0) {</span>
-<span class="source-line-no">267</span><span id="line-267"> throw new IllegalArgumentException("Must specify table name");</span>
-<span class="source-line-no">268</span><span id="line-268"> }</span>
-<span class="source-line-no">269</span><span id="line-269"></span>
-<span class="source-line-no">270</span><span id="line-270"> String address = otherConf.get(QUORUM_ADDRESS);</span>
-<span class="source-line-no">271</span><span id="line-271"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> try {</span>
-<span class="source-line-no">274</span><span id="line-274"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
-<span class="source-line-no">275</span><span id="line-275"> if (zkClientPort != 0) {</span>
-<span class="source-line-no">276</span><span id="line-276"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
-<span class="source-line-no">277</span><span id="line-277"> }</span>
-<span class="source-line-no">278</span><span id="line-278"> } catch (IOException e) {</span>
-<span class="source-line-no">279</span><span id="line-279"> LOG.error(e.toString(), e);</span>
-<span class="source-line-no">280</span><span id="line-280"> throw new RuntimeException(e);</span>
-<span class="source-line-no">281</span><span id="line-281"> }</span>
-<span class="source-line-no">282</span><span id="line-282"> }</span>
-<span class="source-line-no">283</span><span id="line-283">}</span>
+<span class="source-line-no">264</span><span id="line-264"> public OutputCommitter getOutputCommitter(TaskAttemptContext context)</span>
+<span class="source-line-no">265</span><span id="line-265"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">266</span><span id="line-266"> Configuration hConf = getConf();</span>
+<span class="source-line-no">267</span><span id="line-267"> if (hConf == null) {</span>
+<span class="source-line-no">268</span><span id="line-268"> hConf = context.getConfiguration();</span>
+<span class="source-line-no">269</span><span id="line-269"> }</span>
+<span class="source-line-no">270</span><span id="line-270"></span>
+<span class="source-line-no">271</span><span id="line-271"> try {</span>
+<span class="source-line-no">272</span><span id="line-272"> Class<? extends OutputCommitter> outputCommitter =</span>
+<span class="source-line-no">273</span><span id="line-273"> hConf.getClass(OUTPUT_COMMITTER_CLASS, TableOutputCommitter.class, OutputCommitter.class);</span>
+<span class="source-line-no">274</span><span id="line-274"> return ReflectionUtils.newInstance(outputCommitter);</span>
+<span class="source-line-no">275</span><span id="line-275"> } catch (Exception e) {</span>
+<span class="source-line-no">276</span><span id="line-276"> throw new IOException("Could not create the configured OutputCommitter", e);</span>
+<span class="source-line-no">277</span><span id="line-277"> }</span>
+<span class="source-line-no">278</span><span id="line-278"> }</span>
+<span class="source-line-no">279</span><span id="line-279"></span>
+<span class="source-line-no">280</span><span id="line-280"> @Override</span>
+<span class="source-line-no">281</span><span id="line-281"> public Configuration getConf() {</span>
+<span class="source-line-no">282</span><span id="line-282"> return conf;</span>
+<span class="source-line-no">283</span><span id="line-283"> }</span>
+<span class="source-line-no">284</span><span id="line-284"></span>
+<span class="source-line-no">285</span><span id="line-285"> @Override</span>
+<span class="source-line-no">286</span><span id="line-286"> public void setConf(Configuration otherConf) {</span>
+<span class="source-line-no">287</span><span id="line-287"> String tableName = otherConf.get(OUTPUT_TABLE);</span>
+<span class="source-line-no">288</span><span id="line-288"> if (tableName == null || tableName.length() <= 0) {</span>
+<span class="source-line-no">289</span><span id="line-289"> throw new IllegalArgumentException("Must specify table name");</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> String address = otherConf.get(QUORUM_ADDRESS);</span>
+<span class="source-line-no">293</span><span id="line-293"> int zkClientPort = otherConf.getInt(QUORUM_PORT, 0);</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295"> try {</span>
+<span class="source-line-no">296</span><span id="line-296"> this.conf = HBaseConfiguration.createClusterConf(otherConf, address, OUTPUT_CONF_PREFIX);</span>
+<span class="source-line-no">297</span><span id="line-297"> if (zkClientPort != 0) {</span>
+<span class="source-line-no">298</span><span id="line-298"> this.conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, zkClientPort);</span>
+<span class="source-line-no">299</span><span id="line-299"> }</span>
+<span class="source-line-no">300</span><span id="line-300"> } catch (IOException e) {</span>
+<span class="source-line-no">301</span><span id="line-301"> LOG.error(e.toString(), e);</span>
+<span class="source-line-no">302</span><span id="line-302"> throw new RuntimeException(e);</span>
+<span class="source-line-no">303</span><span id="line-303"> }</span>
+<span class="source-line-no">304</span><span id="line-304"> }</span>
+<span class="source-line-no">305</span><span id="line-305">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.DeadServerMetricRegionChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.DeadServerMetricRegionChore.html
index 875cf0377a9..2d0a233ed7b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.DeadServerMetricRegionChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.DeadServerMetricRegionChore.html
@@ -1125,7 +1125,7 @@
<span class="source-line-no">1112</span><span id="line-1112"> }</span>
<span class="source-line-no">1113</span><span id="line-1113"></span>
<span class="source-line-no">1114</span><span id="line-1114"> /**</span>
-<span class="source-line-no">1115</span><span id="line-1115"> * Called by DsiableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
+<span class="source-line-no">1115</span><span id="line-1115"> * Called by DisableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
<span class="source-line-no">1116</span><span id="line-1116"> * procedure if the region is in transition, so you may need to call this method multiple times.</span>
<span class="source-line-no">1117</span><span id="line-1117"> * @param tableName the table for closing excess region replicas</span>
<span class="source-line-no">1118</span><span id="line-1118"> * @param submit for submitting procedure</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
index 7566c9191ae..ed7b5edff31 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
@@ -1125,7 +1125,7 @@
<span class="source-line-no">1112</span><span id="line-1112"> }</span>
<span class="source-line-no">1113</span><span id="line-1113"></span>
<span class="source-line-no">1114</span><span id="line-1114"> /**</span>
-<span class="source-line-no">1115</span><span id="line-1115"> * Called by DsiableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
+<span class="source-line-no">1115</span><span id="line-1115"> * Called by DisableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
<span class="source-line-no">1116</span><span id="line-1116"> * procedure if the region is in transition, so you may need to call this method multiple times.</span>
<span class="source-line-no">1117</span><span id="line-1117"> * @param tableName the table for closing excess region replicas</span>
<span class="source-line-no">1118</span><span id="line-1118"> * @param submit for submitting procedure</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
index 8080ba98e28..c43a8aaa5d1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
@@ -1125,7 +1125,7 @@
<span class="source-line-no">1112</span><span id="line-1112"> }</span>
<span class="source-line-no">1113</span><span id="line-1113"></span>
<span class="source-line-no">1114</span><span id="line-1114"> /**</span>
-<span class="source-line-no">1115</span><span id="line-1115"> * Called by DsiableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
+<span class="source-line-no">1115</span><span id="line-1115"> * Called by DisableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
<span class="source-line-no">1116</span><span id="line-1116"> * procedure if the region is in transition, so you may need to call this method multiple times.</span>
<span class="source-line-no">1117</span><span id="line-1117"> * @param tableName the table for closing excess region replicas</span>
<span class="source-line-no">1118</span><span id="line-1118"> * @param submit for submitting procedure</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionMetaLoadingVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionMetaLoadingVisitor.html
index 23f90f26c66..f13cf64662d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionMetaLoadingVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionMetaLoadingVisitor.html
@@ -1125,7 +1125,7 @@
<span class="source-line-no">1112</span><span id="line-1112"> }</span>
<span class="source-line-no">1113</span><span id="line-1113"></span>
<span class="source-line-no">1114</span><span id="line-1114"> /**</span>
-<span class="source-line-no">1115</span><span id="line-1115"> * Called by DsiableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
+<span class="source-line-no">1115</span><span id="line-1115"> * Called by DisableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
<span class="source-line-no">1116</span><span id="line-1116"> * procedure if the region is in transition, so you may need to call this method multiple times.</span>
<span class="source-line-no">1117</span><span id="line-1117"> * @param tableName the table for closing excess region replicas</span>
<span class="source-line-no">1118</span><span id="line-1118"> * @param submit for submitting procedure</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index ffe03948bcc..a46f145e7ec 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -1125,7 +1125,7 @@
<span class="source-line-no">1112</span><span id="line-1112"> }</span>
<span class="source-line-no">1113</span><span id="line-1113"></span>
<span class="source-line-no">1114</span><span id="line-1114"> /**</span>
-<span class="source-line-no">1115</span><span id="line-1115"> * Called by DsiableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
+<span class="source-line-no">1115</span><span id="line-1115"> * Called by DisableTableProcedure to unassign all regions for a table. Will skip submit unassign</span>
<span class="source-line-no">1116</span><span id="line-1116"> * procedure if the region is in transition, so you may need to call this method multiple times.</span>
<span class="source-line-no">1117</span><span id="line-1117"> * @param tableName the table for closing excess region replicas</span>
<span class="source-line-no">1118</span><span id="line-1118"> * @param submit for submitting procedure</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html
index 07d77f127f3..16f0d5401af 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.html
@@ -63,392 +63,400 @@
<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException;</span>
<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.snapshot.SnapshotManifest;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.util.ModifyRegionUtils;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.util.RetryCounter;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">057</span><span id="line-57">import org.slf4j.Logger;</span>
-<span class="source-line-no">058</span><span id="line-58">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotProcedureStateData;</span>
-<span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState;</span>
-<span class="source-line-no">063</span><span id="line-63">import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState;</span>
-<span class="source-line-no">064</span><span id="line-64">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">/**</span>
-<span class="source-line-no">067</span><span id="line-67"> * A procedure used to take snapshot on tables.</span>
-<span class="source-line-no">068</span><span id="line-68"> */</span>
-<span class="source-line-no">069</span><span id="line-69">@InterfaceAudience.Private</span>
-<span class="source-line-no">070</span><span id="line-70">public class SnapshotProcedure extends AbstractStateMachineTableProcedure<SnapshotState> {</span>
-<span class="source-line-no">071</span><span id="line-71"> private static final Logger LOG = LoggerFactory.getLogger(SnapshotProcedure.class);</span>
-<span class="source-line-no">072</span><span id="line-72"> private final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74"> private Configuration conf;</span>
-<span class="source-line-no">075</span><span id="line-75"> private SnapshotDescription snapshot;</span>
-<span class="source-line-no">076</span><span id="line-76"> private Path rootDir;</span>
-<span class="source-line-no">077</span><span id="line-77"> private Path snapshotDir;</span>
-<span class="source-line-no">078</span><span id="line-78"> private Path workingDir;</span>
-<span class="source-line-no">079</span><span id="line-79"> private FileSystem workingDirFS;</span>
-<span class="source-line-no">080</span><span id="line-80"> private FileSystem rootFs;</span>
-<span class="source-line-no">081</span><span id="line-81"> private TableName snapshotTable;</span>
-<span class="source-line-no">082</span><span id="line-82"> private MonitoredTask status;</span>
-<span class="source-line-no">083</span><span id="line-83"> private SnapshotManifest snapshotManifest;</span>
-<span class="source-line-no">084</span><span id="line-84"> private TableDescriptor htd;</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86"> private RetryCounter retryCounter;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.snapshot.SnapshotTTLExpiredException;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.util.ModifyRegionUtils;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.util.RetryCounter;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">059</span><span id="line-59">import org.slf4j.Logger;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
+<span class="source-line-no">063</span><span id="line-63">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotProcedureStateData;</span>
+<span class="source-line-no">064</span><span id="line-64">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SnapshotState;</span>
+<span class="source-line-no">065</span><span id="line-65">import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState;</span>
+<span class="source-line-no">066</span><span id="line-66">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">/**</span>
+<span class="source-line-no">069</span><span id="line-69"> * A procedure used to take snapshot on tables.</span>
+<span class="source-line-no">070</span><span id="line-70"> */</span>
+<span class="source-line-no">071</span><span id="line-71">@InterfaceAudience.Private</span>
+<span class="source-line-no">072</span><span id="line-72">public class SnapshotProcedure extends AbstractStateMachineTableProcedure<SnapshotState> {</span>
+<span class="source-line-no">073</span><span id="line-73"> private static final Logger LOG = LoggerFactory.getLogger(SnapshotProcedure.class);</span>
+<span class="source-line-no">074</span><span id="line-74"> private final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76"> private Configuration conf;</span>
+<span class="source-line-no">077</span><span id="line-77"> private SnapshotDescription snapshot;</span>
+<span class="source-line-no">078</span><span id="line-78"> private Path rootDir;</span>
+<span class="source-line-no">079</span><span id="line-79"> private Path snapshotDir;</span>
+<span class="source-line-no">080</span><span id="line-80"> private Path workingDir;</span>
+<span class="source-line-no">081</span><span id="line-81"> private FileSystem workingDirFS;</span>
+<span class="source-line-no">082</span><span id="line-82"> private FileSystem rootFs;</span>
+<span class="source-line-no">083</span><span id="line-83"> private TableName snapshotTable;</span>
+<span class="source-line-no">084</span><span id="line-84"> private MonitoredTask status;</span>
+<span class="source-line-no">085</span><span id="line-85"> private SnapshotManifest snapshotManifest;</span>
+<span class="source-line-no">086</span><span id="line-86"> private TableDescriptor htd;</span>
<span class="source-line-no">087</span><span id="line-87"></span>
-<span class="source-line-no">088</span><span id="line-88"> public SnapshotProcedure() {</span>
-<span class="source-line-no">089</span><span id="line-89"> }</span>
-<span class="source-line-no">090</span><span id="line-90"></span>
-<span class="source-line-no">091</span><span id="line-91"> public SnapshotProcedure(final MasterProcedureEnv env, final SnapshotDescription snapshot) {</span>
-<span class="source-line-no">092</span><span id="line-92"> super(env);</span>
-<span class="source-line-no">093</span><span id="line-93"> this.snapshot = snapshot;</span>
-<span class="source-line-no">094</span><span id="line-94"> }</span>
-<span class="source-line-no">095</span><span id="line-95"></span>
-<span class="source-line-no">096</span><span id="line-96"> @Override</span>
-<span class="source-line-no">097</span><span id="line-97"> public TableName getTableName() {</span>
-<span class="source-line-no">098</span><span id="line-98"> return TableName.valueOf(snapshot.getTable());</span>
-<span class="source-line-no">099</span><span id="line-99"> }</span>
-<span class="source-line-no">100</span><span id="line-100"></span>
-<span class="source-line-no">101</span><span id="line-101"> @Override</span>
-<span class="source-line-no">102</span><span id="line-102"> public TableOperationType getTableOperationType() {</span>
-<span class="source-line-no">103</span><span id="line-103"> return TableOperationType.SNAPSHOT;</span>
-<span class="source-line-no">104</span><span id="line-104"> }</span>
-<span class="source-line-no">105</span><span id="line-105"></span>
-<span class="source-line-no">106</span><span id="line-106"> @Override</span>
-<span class="source-line-no">107</span><span id="line-107"> protected Flow executeFromState(MasterProcedureEnv env, SnapshotState state)</span>
-<span class="source-line-no">108</span><span id="line-108"> throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {</span>
-<span class="source-line-no">109</span><span id="line-109"> LOG.info("{} execute state={}", this, state);</span>
-<span class="source-line-no">110</span><span id="line-110"></span>
-<span class="source-line-no">111</span><span id="line-111"> try {</span>
-<span class="source-line-no">112</span><span id="line-112"> switch (state) {</span>
-<span class="source-line-no">113</span><span id="line-113"> case SNAPSHOT_PREPARE:</span>
-<span class="source-line-no">114</span><span id="line-114"> prepareSnapshot(env);</span>
-<span class="source-line-no">115</span><span id="line-115"> setNextState(SnapshotState.SNAPSHOT_PRE_OPERATION);</span>
-<span class="source-line-no">116</span><span id="line-116"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">117</span><span id="line-117"> case SNAPSHOT_PRE_OPERATION:</span>
-<span class="source-line-no">118</span><span id="line-118"> preSnapshot(env);</span>
-<span class="source-line-no">119</span><span id="line-119"> setNextState(SnapshotState.SNAPSHOT_WRITE_SNAPSHOT_INFO);</span>
-<span class="source-line-no">120</span><span id="line-120"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">121</span><span id="line-121"> case SNAPSHOT_WRITE_SNAPSHOT_INFO:</span>
-<span class="source-line-no">122</span><span id="line-122"> SnapshotDescriptionUtils.writeSnapshotInfo(snapshot, workingDir, workingDirFS);</span>
-<span class="source-line-no">123</span><span id="line-123"> TableState tableState =</span>
-<span class="source-line-no">124</span><span id="line-124"> env.getMasterServices().getTableStateManager().getTableState(snapshotTable);</span>
-<span class="source-line-no">125</span><span id="line-125"> if (tableState.isEnabled()) {</span>
-<span class="source-line-no">126</span><span id="line-126"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_ONLINE_REGIONS);</span>
-<span class="source-line-no">127</span><span id="line-127"> } else if (tableState.isDisabled()) {</span>
-<span class="source-line-no">128</span><span id="line-128"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_CLOSED_REGIONS);</span>
-<span class="source-line-no">129</span><span id="line-129"> }</span>
-<span class="source-line-no">130</span><span id="line-130"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">131</span><span id="line-131"> case SNAPSHOT_SNAPSHOT_ONLINE_REGIONS:</span>
-<span class="source-line-no">132</span><span id="line-132"> addChildProcedure(createRemoteSnapshotProcedures(env));</span>
-<span class="source-line-no">133</span><span id="line-133"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_SPLIT_REGIONS);</span>
-<span class="source-line-no">134</span><span id="line-134"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">135</span><span id="line-135"> case SNAPSHOT_SNAPSHOT_SPLIT_REGIONS:</span>
-<span class="source-line-no">136</span><span id="line-136"> snapshotSplitRegions(env);</span>
-<span class="source-line-no">137</span><span id="line-137"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_MOB_REGION);</span>
-<span class="source-line-no">138</span><span id="line-138"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">139</span><span id="line-139"> case SNAPSHOT_SNAPSHOT_CLOSED_REGIONS:</span>
-<span class="source-line-no">140</span><span id="line-140"> snapshotClosedRegions(env);</span>
-<span class="source-line-no">141</span><span id="line-141"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_MOB_REGION);</span>
-<span class="source-line-no">142</span><span id="line-142"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">143</span><span id="line-143"> case SNAPSHOT_SNAPSHOT_MOB_REGION:</span>
-<span class="source-line-no">144</span><span id="line-144"> snapshotMobRegion(env);</span>
-<span class="source-line-no">145</span><span id="line-145"> setNextState(SnapshotState.SNAPSHOT_CONSOLIDATE_SNAPSHOT);</span>
-<span class="source-line-no">146</span><span id="line-146"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">147</span><span id="line-147"> case SNAPSHOT_CONSOLIDATE_SNAPSHOT:</span>
-<span class="source-line-no">148</span><span id="line-148"> // flush the in-memory state, and write the single manifest</span>
-<span class="source-line-no">149</span><span id="line-149"> status.setStatus("Consolidate snapshot: " + snapshot.getName());</span>
-<span class="source-line-no">150</span><span id="line-150"> snapshotManifest.consolidate();</span>
-<span class="source-line-no">151</span><span id="line-151"> setNextState(SnapshotState.SNAPSHOT_VERIFIER_SNAPSHOT);</span>
-<span class="source-line-no">152</span><span id="line-152"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">153</span><span id="line-153"> case SNAPSHOT_VERIFIER_SNAPSHOT:</span>
-<span class="source-line-no">154</span><span id="line-154"> status.setStatus("Verifying snapshot: " + snapshot.getName());</span>
-<span class="source-line-no">155</span><span id="line-155"> verifySnapshot(env);</span>
-<span class="source-line-no">156</span><span id="line-156"> setNextState(SnapshotState.SNAPSHOT_COMPLETE_SNAPSHOT);</span>
-<span class="source-line-no">157</span><span id="line-157"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">158</span><span id="line-158"> case SNAPSHOT_COMPLETE_SNAPSHOT:</span>
-<span class="source-line-no">159</span><span id="line-159"> if (isSnapshotCorrupted()) {</span>
-<span class="source-line-no">160</span><span id="line-160"> throw new CorruptedSnapshotException(snapshot.getName());</span>
-<span class="source-line-no">161</span><span id="line-161"> }</span>
-<span class="source-line-no">162</span><span id="line-162"> completeSnapshot(env);</span>
-<span class="source-line-no">163</span><span id="line-163"> setNextState(SnapshotState.SNAPSHOT_POST_OPERATION);</span>
-<span class="source-line-no">164</span><span id="line-164"> return Flow.HAS_MORE_STATE;</span>
-<span class="source-line-no">165</span><span id="line-165"> case SNAPSHOT_POST_OPERATION:</span>
-<span class="source-line-no">166</span><span id="line-166"> postSnapshot(env);</span>
-<span class="source-line-no">167</span><span id="line-167"> return Flow.NO_MORE_STATE;</span>
-<span class="source-line-no">168</span><span id="line-168"> default:</span>
-<span class="source-line-no">169</span><span id="line-169"> throw new UnsupportedOperationException("unhandled state=" + state);</span>
-<span class="source-line-no">170</span><span id="line-170"> }</span>
-<span class="source-line-no">171</span><span id="line-171"> } catch (ProcedureSuspendedException e) {</span>
-<span class="source-line-no">172</span><span id="line-172"> throw e;</span>
-<span class="source-line-no">173</span><span id="line-173"> } catch (Exception e) {</span>
-<span class="source-line-no">174</span><span id="line-174"> setFailure("master-snapshot", e);</span>
-<span class="source-line-no">175</span><span id="line-175"> LOG.warn("unexpected exception while execute {}. Mark procedure Failed.", this, e);</span>
-<span class="source-line-no">176</span><span id="line-176"> status.abort("Abort Snapshot " + snapshot.getName() + " on Table " + snapshotTable);</span>
-<span class="source-line-no">177</span><span id="line-177"> return Flow.NO_MORE_STATE;</span>
-<span class="source-line-no">178</span><span id="line-178"> }</span>
-<span class="source-line-no">179</span><span id="line-179"> }</span>
-<span class="source-line-no">180</span><span id="line-180"></span>
-<span class="source-line-no">181</span><span id="line-181"> @Override</span>
-<span class="source-line-no">182</span><span id="line-182"> protected void rollbackState(MasterProcedureEnv env, SnapshotState state)</span>
-<span class="source-line-no">183</span><span id="line-183"> throws IOException, InterruptedException {</span>
-<span class="source-line-no">184</span><span id="line-184"> if (state == SnapshotState.SNAPSHOT_PRE_OPERATION) {</span>
-<span class="source-line-no">185</span><span id="line-185"> try {</span>
-<span class="source-line-no">186</span><span id="line-186"> if (!workingDirFS.delete(workingDir, true)) {</span>
-<span class="source-line-no">187</span><span id="line-187"> LOG.error("Couldn't delete snapshot working directory {}", workingDir);</span>
-<span class="source-line-no">188</span><span id="line-188"> }</span>
-<span class="source-line-no">189</span><span id="line-189"> } catch (IOException e) {</span>
-<span class="source-line-no">190</span><span id="line-190"> LOG.error("Couldn't delete snapshot working directory {}", workingDir, e);</span>
-<span class="source-line-no">191</span><span id="line-191"> }</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"> }</span>
-<span class="source-line-no">194</span><span id="line-194"></span>
-<span class="source-line-no">195</span><span id="line-195"> @Override</span>
-<span class="source-line-no">196</span><span id="line-196"> protected boolean isRollbackSupported(SnapshotState state) {</span>
-<span class="source-line-no">197</span><span id="line-197"> return true;</span>
-<span class="source-line-no">198</span><span id="line-198"> }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200"> @Override</span>
-<span class="source-line-no">201</span><span id="line-201"> protected SnapshotState getState(final int stateId) {</span>
-<span class="source-line-no">202</span><span id="line-202"> return SnapshotState.forNumber(stateId);</span>
-<span class="source-line-no">203</span><span id="line-203"> }</span>
-<span class="source-line-no">204</span><span id="line-204"></span>
-<span class="source-line-no">205</span><span id="line-205"> @Override</span>
-<span class="source-line-no">206</span><span id="line-206"> protected int getStateId(SnapshotState state) {</span>
-<span class="source-line-no">207</span><span id="line-207"> return state.getNumber();</span>
-<span class="source-line-no">208</span><span id="line-208"> }</span>
-<span class="source-line-no">209</span><span id="line-209"></span>
-<span class="source-line-no">210</span><span id="line-210"> @Override</span>
-<span class="source-line-no">211</span><span id="line-211"> protected SnapshotState getInitialState() {</span>
-<span class="source-line-no">212</span><span id="line-212"> return SnapshotState.SNAPSHOT_PREPARE;</span>
-<span class="source-line-no">213</span><span id="line-213"> }</span>
-<span class="source-line-no">214</span><span id="line-214"></span>
-<span class="source-line-no">215</span><span id="line-215"> private void prepareSnapshot(MasterProcedureEnv env)</span>
-<span class="source-line-no">216</span><span id="line-216"> throws ProcedureSuspendedException, IOException {</span>
-<span class="source-line-no">217</span><span id="line-217"> if (isAnySplitOrMergeProcedureRunning(env)) {</span>
-<span class="source-line-no">218</span><span id="line-218"> if (retryCounter == null) {</span>
-<span class="source-line-no">219</span><span id="line-219"> retryCounter = ProcedureUtil.createRetryCounter(env.getMasterConfiguration());</span>
-<span class="source-line-no">220</span><span id="line-220"> }</span>
-<span class="source-line-no">221</span><span id="line-221"> long backoff = retryCounter.getBackoffTimeAndIncrementAttempts();</span>
-<span class="source-line-no">222</span><span id="line-222"> LOG.warn("{} waits {} ms for Split/Merge procedure to finish", this, backoff);</span>
-<span class="source-line-no">223</span><span id="line-223"> setTimeout(Math.toIntExact(backoff));</span>
-<span class="source-line-no">224</span><span id="line-224"> setState(ProcedureState.WAITING_TIMEOUT);</span>
-<span class="source-line-no">225</span><span id="line-225"> skipPersistence();</span>
-<span class="source-line-no">226</span><span id="line-226"> throw new ProcedureSuspendedException();</span>
-<span class="source-line-no">227</span><span id="line-227"> }</span>
-<span class="source-line-no">228</span><span id="line-228"> prepareSnapshotEnv(env);</span>
-<span class="source-line-no">229</span><span id="line-229"> }</span>
-<span class="source-line-no">230</span><span id="line-230"></span>
-<span class="source-line-no">231</span><span id="line-231"> private void prepareSnapshotEnv(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">232</span><span id="line-232"> this.conf = env.getMasterConfiguration();</span>
-<span class="source-line-no">233</span><span id="line-233"> this.snapshotTable = TableName.valueOf(snapshot.getTable());</span>
-<span class="source-line-no">234</span><span id="line-234"> this.htd = loadTableDescriptorSnapshot(env);</span>
-<span class="source-line-no">235</span><span id="line-235"> this.rootFs = env.getMasterFileSystem().getFileSystem();</span>
-<span class="source-line-no">236</span><span id="line-236"> this.rootDir = CommonFSUtils.getRootDir(conf);</span>
-<span class="source-line-no">237</span><span id="line-237"> this.snapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshot, rootDir);</span>
-<span class="source-line-no">238</span><span id="line-238"> this.workingDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(snapshot, rootDir, conf);</span>
-<span class="source-line-no">239</span><span id="line-239"> this.workingDirFS = workingDir.getFileSystem(conf);</span>
-<span class="source-line-no">240</span><span id="line-240"> this.status = TaskMonitor.get()</span>
-<span class="source-line-no">241</span><span id="line-241"> .createStatus("Taking " + snapshot.getType() + " snapshot on table: " + snapshotTable);</span>
-<span class="source-line-no">242</span><span id="line-242"> ForeignExceptionDispatcher monitor = new ForeignExceptionDispatcher(snapshot.getName());</span>
-<span class="source-line-no">243</span><span id="line-243"> this.snapshotManifest =</span>
-<span class="source-line-no">244</span><span id="line-244"> SnapshotManifest.create(conf, rootFs, workingDir, snapshot, monitor, status);</span>
-<span class="source-line-no">245</span><span id="line-245"> this.snapshotManifest.addTableDescriptor(htd);</span>
-<span class="source-line-no">246</span><span id="line-246"> }</span>
-<span class="source-line-no">247</span><span id="line-247"></span>
-<span class="source-line-no">248</span><span id="line-248"> @Override</span>
-<span class="source-line-no">249</span><span id="line-249"> protected synchronized boolean setTimeoutFailure(MasterProcedureEnv env) {</span>
-<span class="source-line-no">250</span><span id="line-250"> setState(ProcedureState.RUNNABLE);</span>
-<span class="source-line-no">251</span><span id="line-251"> env.getProcedureScheduler().addFront(this);</span>
-<span class="source-line-no">252</span><span id="line-252"> return false;</span>
-<span class="source-line-no">253</span><span id="line-253"> }</span>
-<span class="source-line-no">254</span><span id="line-254"></span>
-<span class="source-line-no">255</span><span id="line-255"> private boolean isAnySplitOrMergeProcedureRunning(MasterProcedureEnv env) {</span>
-<span class="source-line-no">256</span><span id="line-256"> return env.getMasterServices().getMasterProcedureExecutor().getProcedures().stream()</span>
-<span class="source-line-no">257</span><span id="line-257"> .filter(p -> !p.isFinished())</span>
-<span class="source-line-no">258</span><span id="line-258"> .filter(</span>
-<span class="source-line-no">259</span><span id="line-259"> p -> p instanceof SplitTableRegionProcedure || p instanceof MergeTableRegionsProcedure)</span>
-<span class="source-line-no">260</span><span id="line-260"> .anyMatch(</span>
-<span class="source-line-no">261</span><span id="line-261"> p -> ((AbstractStateMachineTableProcedure<?>) p).getTableName().equals(getTableName()));</span>
-<span class="source-line-no">262</span><span id="line-262"> }</span>
-<span class="source-line-no">263</span><span id="line-263"></span>
-<span class="source-line-no">264</span><span id="line-264"> private TableDescriptor loadTableDescriptorSnapshot(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">265</span><span id="line-265"> TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(snapshotTable);</span>
-<span class="source-line-no">266</span><span id="line-266"> if (htd == null) {</span>
-<span class="source-line-no">267</span><span id="line-267"> throw new IOException("TableDescriptor missing for " + snapshotTable);</span>
-<span class="source-line-no">268</span><span id="line-268"> }</span>
-<span class="source-line-no">269</span><span id="line-269"> if (htd.getMaxFileSize() == -1 && this.snapshot.getMaxFileSize() > 0) {</span>
-<span class="source-line-no">270</span><span id="line-270"> return TableDescriptorBuilder.newBuilder(htd).setValue(TableDescriptorBuilder.MAX_FILESIZE,</span>
-<span class="source-line-no">271</span><span id="line-271"> Long.toString(this.snapshot.getMaxFileSize())).build();</span>
-<span class="source-line-no">272</span><span id="line-272"> }</span>
-<span class="source-line-no">273</span><span id="line-273"> return htd;</span>
-<span class="source-line-no">274</span><span id="line-274"> }</span>
-<span class="source-line-no">275</span><span id="line-275"></span>
-<span class="source-line-no">276</span><span id="line-276"> private void preSnapshot(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">277</span><span id="line-277"> env.getMasterServices().getSnapshotManager().prepareWorkingDirectory(snapshot);</span>
-<span class="source-line-no">278</span><span id="line-278"> }</span>
-<span class="source-line-no">279</span><span id="line-279"></span>
-<span class="source-line-no">280</span><span id="line-280"> private void postSnapshot(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">281</span><span id="line-281"> SnapshotManager sm = env.getMasterServices().getSnapshotManager();</span>
-<span class="source-line-no">282</span><span id="line-282"> if (sm != null) {</span>
-<span class="source-line-no">283</span><span id="line-283"> sm.unregisterSnapshotProcedure(snapshot, getProcId());</span>
-<span class="source-line-no">284</span><span id="line-284"> }</span>
-<span class="source-line-no">285</span><span id="line-285"> }</span>
-<span class="source-line-no">286</span><span id="line-286"></span>
-<span class="source-line-no">287</span><span id="line-287"> private void verifySnapshot(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">288</span><span id="line-288"> int verifyThreshold =</span>
-<span class="source-line-no">289</span><span id="line-289"> env.getMasterConfiguration().getInt("hbase.snapshot.remote.verify.threshold", 10000);</span>
-<span class="source-line-no">290</span><span id="line-290"> List<RegionInfo> regions = env.getAssignmentManager().getTableRegions(snapshotTable, false)</span>
-<span class="source-line-no">291</span><span id="line-291"> .stream().filter(r -> RegionReplicaUtil.isDefaultReplica(r)).collect(Collectors.toList());</span>
-<span class="source-line-no">292</span><span id="line-292"> int numRegions = regions.size();</span>
-<span class="source-line-no">293</span><span id="line-293"></span>
-<span class="source-line-no">294</span><span id="line-294"> MasterSnapshotVerifier verifier =</span>
-<span class="source-line-no">295</span><span id="line-295"> new MasterSnapshotVerifier(env.getMasterServices(), snapshot, workingDirFS);</span>
-<span class="source-line-no">296</span><span id="line-296"> if (numRegions >= verifyThreshold) {</span>
-<span class="source-line-no">297</span><span id="line-297"> verifier.verifySnapshot(workingDir, false);</span>
-<span class="source-line-no">298</span><span id="line-298"> addChildProcedure(regions.stream().map(r -> new SnapshotVerifyProcedure(snapshot, r))</span>
-<span class="source-line-no">299</span><span id="line-299"> .toArray(SnapshotVerifyProcedure[]::new));</span>
-<span class="source-line-no">300</span><span id="line-300"> } else {</span>
-<span class="source-line-no">301</span><span id="line-301"> verifier.verifySnapshot(workingDir, true);</span>
-<span class="source-line-no">302</span><span id="line-302"> }</span>
-<span class="source-line-no">303</span><span id="line-303"> }</span>
-<span class="source-line-no">304</span><span id="line-304"></span>
-<span class="source-line-no">305</span><span id="line-305"> private void completeSnapshot(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">306</span><span id="line-306"> // complete the snapshot, atomically moving from tmp to .snapshot dir.</span>
-<span class="source-line-no">307</span><span id="line-307"> SnapshotDescriptionUtils.completeSnapshot(snapshotDir, workingDir,</span>
-<span class="source-line-no">308</span><span id="line-308"> env.getMasterFileSystem().getFileSystem(), workingDirFS, conf);</span>
-<span class="source-line-no">309</span><span id="line-309"> // update metric. when master restarts, the metric value is wrong</span>
-<span class="source-line-no">310</span><span id="line-310"> metricsSnapshot.addSnapshot(status.getCompletionTimestamp() - status.getStartTime());</span>
-<span class="source-line-no">311</span><span id="line-311"> if (env.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">312</span><span id="line-312"> env.getMasterCoprocessorHost()</span>
-<span class="source-line-no">313</span><span id="line-313"> .postCompletedSnapshotAction(ProtobufUtil.createSnapshotDesc(snapshot), htd);</span>
-<span class="source-line-no">314</span><span id="line-314"> }</span>
-<span class="source-line-no">315</span><span id="line-315"> status.markComplete("Snapshot " + snapshot.getName() + " completed");</span>
-<span class="source-line-no">316</span><span id="line-316"> }</span>
-<span class="source-line-no">317</span><span id="line-317"></span>
-<span class="source-line-no">318</span><span id="line-318"> private void snapshotSplitRegions(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">319</span><span id="line-319"> List<RegionInfo> regions =</span>
-<span class="source-line-no">320</span><span id="line-320"> getDefaultRegionReplica(env).filter(RegionInfo::isSplit).collect(Collectors.toList());</span>
-<span class="source-line-no">321</span><span id="line-321"> snapshotSplitOrClosedRegions(env, regions, "SplitRegionsSnapshotPool");</span>
-<span class="source-line-no">322</span><span id="line-322"> }</span>
-<span class="source-line-no">323</span><span id="line-323"></span>
-<span class="source-line-no">324</span><span id="line-324"> private void snapshotClosedRegions(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">325</span><span id="line-325"> List<RegionInfo> regions = getDefaultRegionReplica(env).collect(Collectors.toList());</span>
-<span class="source-line-no">326</span><span id="line-326"> snapshotSplitOrClosedRegions(env, regions, "ClosedRegionsSnapshotPool");</span>
-<span class="source-line-no">327</span><span id="line-327"> }</span>
-<span class="source-line-no">328</span><span id="line-328"></span>
-<span class="source-line-no">329</span><span id="line-329"> private Stream<RegionInfo> getDefaultRegionReplica(MasterProcedureEnv env) {</span>
-<span class="source-line-no">330</span><span id="line-330"> return env.getAssignmentManager().getTableRegions(snapshotTable, false).stream()</span>
-<span class="source-line-no">331</span><span id="line-331"> .filter(r -> RegionReplicaUtil.isDefaultReplica(r));</span>
-<span class="source-line-no">332</span><span id="line-332"> }</span>
-<span class="source-line-no">333</span><span id="line-333"></span>
-<span class="source-line-no">334</span><span id="line-334"> private void snapshotSplitOrClosedRegions(MasterProcedureEnv env, List<RegionInfo> regions,</span>
-<span class="source-line-no">335</span><span id="line-335"> String threadPoolName) throws IOException {</span>
-<span class="source-line-no">336</span><span id="line-336"> ThreadPoolExecutor exec =</span>
-<span class="source-line-no">337</span><span id="line-337"> SnapshotManifest.createExecutor(env.getMasterConfiguration(), threadPoolName);</span>
-<span class="source-line-no">338</span><span id="line-338"> try {</span>
-<span class="source-line-no">339</span><span id="line-339"> ModifyRegionUtils.editRegions(exec, regions, new ModifyRegionUtils.RegionEditTask() {</span>
-<span class="source-line-no">340</span><span id="line-340"> @Override</span>
-<span class="source-line-no">341</span><span id="line-341"> public void editRegion(final RegionInfo region) throws IOException {</span>
-<span class="source-line-no">342</span><span id="line-342"> snapshotManifest.addRegion(CommonFSUtils.getTableDir(rootDir, snapshotTable), region);</span>
-<span class="source-line-no">343</span><span id="line-343"> LOG.info("take snapshot region={}, table={}", region, snapshotTable);</span>
-<span class="source-line-no">344</span><span id="line-344"> }</span>
-<span class="source-line-no">345</span><span id="line-345"> });</span>
-<span class="source-line-no">346</span><span id="line-346"> } finally {</span>
-<span class="source-line-no">347</span><span id="line-347"> exec.shutdown();</span>
-<span class="source-line-no">348</span><span id="line-348"> }</span>
-<span class="source-line-no">349</span><span id="line-349"> status.setStatus("Completed referencing closed/split regions of table: " + snapshotTable);</span>
-<span class="source-line-no">350</span><span id="line-350"> }</span>
-<span class="source-line-no">351</span><span id="line-351"></span>
-<span class="source-line-no">352</span><span id="line-352"> private void snapshotMobRegion(MasterProcedureEnv env) throws IOException {</span>
-<span class="source-line-no">353</span><span id="line-353"> if (!MobUtils.hasMobColumns(htd)) {</span>
-<span class="source-line-no">354</span><span id="line-354"> return;</span>
-<span class="source-line-no">355</span><span id="line-355"> }</span>
-<span class="source-line-no">356</span><span id="line-356"> ThreadPoolExecutor exec =</span>
-<span class="source-line-no">357</span><span id="line-357"> SnapshotManifest.createExecutor(env.getMasterConfiguration(), "MobRegionSnapshotPool");</span>
-<span class="source-line-no">358</span><span id="line-358"> RegionInfo mobRegionInfo = MobUtils.getMobRegionInfo(htd.getTableName());</span>
-<span class="source-line-no">359</span><span id="line-359"> try {</span>
-<span class="source-line-no">360</span><span id="line-360"> ModifyRegionUtils.editRegions(exec, Collections.singleton(mobRegionInfo),</span>
-<span class="source-line-no">361</span><span id="line-361"> new ModifyRegionUtils.RegionEditTask() {</span>
-<span class="source-line-no">362</span><span id="line-362"> @Override</span>
-<span class="source-line-no">363</span><span id="line-363"> public void editRegion(final RegionInfo region) throws IOException {</span>
-<span class="source-line-no">364</span><span id="line-364"> snapshotManifest.addRegion(CommonFSUtils.getTableDir(rootDir, snapshotTable), region);</span>
-<span class="source-line-no">365</span><span id="line-365"> }</span>
-<span class="source-line-no">366</span><span id="line-366"> });</span>
-<span class="source-line-no">367</span><span id="line-367"> } finally {</span>
-<span class="source-line-no">368</span><span id="line-368"> exec.shutdown();</span>
-<span class="source-line-no">369</span><span id="line-369"> }</span>
-<span class="source-line-no">370</span><span id="line-370"> status.setStatus("Completed referencing HFiles for the mob region of table: " + snapshotTable);</span>
-<span class="source-line-no">371</span><span id="line-371"> }</span>
-<span class="source-line-no">372</span><span id="line-372"></span>
-<span class="source-line-no">373</span><span id="line-373"> @Override</span>
-<span class="source-line-no">374</span><span id="line-374"> protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {</span>
-<span class="source-line-no">375</span><span id="line-375"> super.serializeStateData(serializer);</span>
-<span class="source-line-no">376</span><span id="line-376"> serializer</span>
-<span class="source-line-no">377</span><span id="line-377"> .serialize(SnapshotProcedureStateData.newBuilder().setSnapshot(this.snapshot).build());</span>
-<span class="source-line-no">378</span><span id="line-378"> }</span>
-<span class="source-line-no">379</span><span id="line-379"></span>
-<span class="source-line-no">380</span><span id="line-380"> @Override</span>
-<span class="source-line-no">381</span><span id="line-381"> protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {</span>
-<span class="source-line-no">382</span><span id="line-382"> super.deserializeStateData(serializer);</span>
-<span class="source-line-no">383</span><span id="line-383"> SnapshotProcedureStateData data = serializer.deserialize(SnapshotProcedureStateData.class);</span>
-<span class="source-line-no">384</span><span id="line-384"> this.snapshot = data.getSnapshot();</span>
-<span class="source-line-no">385</span><span id="line-385"> }</span>
-<span class="source-line-no">386</span><span id="line-386"></span>
-<span class="source-line-no">387</span><span id="line-387"> private Procedure<MasterProcedureEnv>[] createRemoteSnapshotProcedures(MasterProcedureEnv env) {</span>
-<span class="source-line-no">388</span><span id="line-388"> return env.getAssignmentManager().getTableRegions(snapshotTable, true).stream()</span>
-<span class="source-line-no">389</span><span id="line-389"> .filter(r -> RegionReplicaUtil.isDefaultReplica(r))</span>
-<span class="source-line-no">390</span><span id="line-390"> .map(r -> new SnapshotRegionProcedure(snapshot, r)).toArray(SnapshotRegionProcedure[]::new);</span>
-<span class="source-line-no">391</span><span id="line-391"> }</span>
-<span class="source-line-no">392</span><span id="line-392"></span>
-<span class="source-line-no">393</span><span id="line-393"> @Override</span>
-<span class="source-line-no">394</span><span id="line-394"> public void toStringClassDetails(StringBuilder builder) {</span>
-<span class="source-line-no">395</span><span id="line-395"> builder.append(getClass().getName()).append(", id=").append(getProcId()).append(", snapshot=")</span>
-<span class="source-line-no">396</span><span id="line-396"> .append(ClientSnapshotDescriptionUtils.toString(snapshot));</span>
-<span class="source-line-no">397</span><span id="line-397"> }</span>
-<span class="source-line-no">398</span><span id="line-398"></span>
-<span class="source-line-no">399</span><span id="line-399"> public SnapshotDescription getSnapshotDesc() {</span>
-<span class="source-line-no">400</span><span id="line-400"> return snapshot;</span>
-<span class="source-line-no">401</span><span id="line-401"> }</span>
-<span class="source-line-no">402</span><span id="line-402"></span>
-<span class="source-line-no">403</span><span id="line-403"> @Override</span>
-<span class="source-line-no">404</span><span id="line-404"> protected void afterReplay(MasterProcedureEnv env) {</span>
-<span class="source-line-no">405</span><span id="line-405"> if (getCurrentState() == getInitialState()) {</span>
-<span class="source-line-no">406</span><span id="line-406"> // if we are in the initial state, it is unnecessary to call prepareSnapshotEnv().</span>
-<span class="source-line-no">407</span><span id="line-407"> return;</span>
-<span class="source-line-no">408</span><span id="line-408"> }</span>
-<span class="source-line-no">409</span><span id="line-409"> try {</span>
-<span class="source-line-no">410</span><span id="line-410"> prepareSnapshotEnv(env);</span>
-<span class="source-line-no">411</span><span id="line-411"> boolean snapshotProcedureEnabled = conf.getBoolean(SnapshotManager.SNAPSHOT_PROCEDURE_ENABLED,</span>
-<span class="source-line-no">412</span><span id="line-412"> SnapshotManager.SNAPSHOT_PROCEDURE_ENABLED_DEFAULT);</span>
-<span class="source-line-no">413</span><span id="line-413"> if (!snapshotProcedureEnabled) {</span>
-<span class="source-line-no">414</span><span id="line-414"> throw new IOException("SnapshotProcedure is DISABLED");</span>
-<span class="source-line-no">415</span><span id="line-415"> }</span>
-<span class="source-line-no">416</span><span id="line-416"> } catch (IOException e) {</span>
-<span class="source-line-no">417</span><span id="line-417"> LOG.error("Failed replaying {}, mark procedure as FAILED", this, e);</span>
-<span class="source-line-no">418</span><span id="line-418"> setFailure("master-snapshot", e);</span>
-<span class="source-line-no">419</span><span id="line-419"> }</span>
-<span class="source-line-no">420</span><span id="line-420"> }</span>
-<span class="source-line-no">421</span><span id="line-421"></span>
-<span class="source-line-no">422</span><span id="line-422"> public SnapshotDescription getSnapshot() {</span>
-<span class="source-line-no">423</span><span id="line-423"> return snapshot;</span>
-<span class="source-line-no">424</span><span id="line-424"> }</span>
-<span class="source-line-no">425</span><span id="line-425"></span>
-<span class="source-line-no">426</span><span id="line-426"> public synchronized void markSnapshotCorrupted() throws IOException {</span>
-<span class="source-line-no">427</span><span id="line-427"> Path flagFile = SnapshotDescriptionUtils.getCorruptedFlagFileForSnapshot(workingDir);</span>
-<span class="source-line-no">428</span><span id="line-428"> if (!workingDirFS.exists(flagFile)) {</span>
-<span class="source-line-no">429</span><span id="line-429"> workingDirFS.create(flagFile).close();</span>
-<span class="source-line-no">430</span><span id="line-430"> LOG.info("touch corrupted snapshot flag file {} for {}", flagFile, snapshot.getName());</span>
-<span class="source-line-no">431</span><span id="line-431"> }</span>
+<span class="source-line-no">088</span><span id="line-88"> private RetryCounter retryCounter;</span>
+<span class="source-line-no">089</span><span id="line-89"></span>
+<span class="source-line-no">090</span><span id="line-90"> public SnapshotProcedure() {</span>
+<span class="source-line-no">091</span><span id="line-91"> }</span>
+<span class="source-line-no">092</span><span id="line-92"></span>
+<span class="source-line-no">093</span><span id="line-93"> public SnapshotProcedure(final MasterProcedureEnv env, final SnapshotDescription snapshot) {</span>
+<span class="source-line-no">094</span><span id="line-94"> super(env);</span>
+<span class="source-line-no">095</span><span id="line-95"> this.snapshot = snapshot;</span>
+<span class="source-line-no">096</span><span id="line-96"> }</span>
+<span class="source-line-no">097</span><span id="line-97"></span>
+<span class="source-line-no">098</span><span id="line-98"> @Override</span>
+<span class="source-line-no">099</span><span id="line-99"> public TableName getTableName() {</span>
+<span class="source-line-no">100</span><span id="line-100"> return TableName.valueOf(snapshot.getTable());</span>
+<span class="source-line-no">101</span><span id="line-101"> }</span>
+<span class="source-line-no">102</span><span id="line-102"></span>
+<span class="source-line-no">103</span><span id="line-103"> @Override</span>
+<span class="source-line-no">104</span><span id="line-104"> public TableOperationType getTableOperationType() {</span>
+<span class="source-line-no">105</span><span id="line-105"> return TableOperationType.SNAPSHOT;</span>
+<span class="source-line-no">106</span><span id="line-106"> }</span>
+<span class="source-line-no">107</span><span id="line-107"></span>
+<span class="source-line-no">108</span><span id="line-108"> @Override</span>
+<span class="source-line-no">109</span><span id="line-109"> protected Flow executeFromState(MasterProcedureEnv env, SnapshotState state)</span>
+<span class="source-line-no">110</span><span id="line-110"> throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {</span>
+<span class="source-line-no">111</span><span id="line-111"> LOG.info("{} execute state={}", this, state);</span>
+<span class="source-line-no">112</span><span id="line-112"></span>
+<span class="source-line-no">113</span><span id="line-113"> try {</span>
+<span class="source-line-no">114</span><span id="line-114"> switch (state) {</span>
+<span class="source-line-no">115</span><span id="line-115"> case SNAPSHOT_PREPARE:</span>
+<span class="source-line-no">116</span><span id="line-116"> prepareSnapshot(env);</span>
+<span class="source-line-no">117</span><span id="line-117"> setNextState(SnapshotState.SNAPSHOT_PRE_OPERATION);</span>
+<span class="source-line-no">118</span><span id="line-118"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">119</span><span id="line-119"> case SNAPSHOT_PRE_OPERATION:</span>
+<span class="source-line-no">120</span><span id="line-120"> preSnapshot(env);</span>
+<span class="source-line-no">121</span><span id="line-121"> setNextState(SnapshotState.SNAPSHOT_WRITE_SNAPSHOT_INFO);</span>
+<span class="source-line-no">122</span><span id="line-122"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">123</span><span id="line-123"> case SNAPSHOT_WRITE_SNAPSHOT_INFO:</span>
+<span class="source-line-no">124</span><span id="line-124"> SnapshotDescriptionUtils.writeSnapshotInfo(snapshot, workingDir, workingDirFS);</span>
+<span class="source-line-no">125</span><span id="line-125"> TableState tableState =</span>
+<span class="source-line-no">126</span><span id="line-126"> env.getMasterServices().getTableStateManager().getTableState(snapshotTable);</span>
+<span class="source-line-no">127</span><span id="line-127"> if (tableState.isEnabled()) {</span>
+<span class="source-line-no">128</span><span id="line-128"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_ONLINE_REGIONS);</span>
+<span class="source-line-no">129</span><span id="line-129"> } else if (tableState.isDisabled()) {</span>
+<span class="source-line-no">130</span><span id="line-130"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_CLOSED_REGIONS);</span>
+<span class="source-line-no">131</span><span id="line-131"> }</span>
+<span class="source-line-no">132</span><span id="line-132"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">133</span><span id="line-133"> case SNAPSHOT_SNAPSHOT_ONLINE_REGIONS:</span>
+<span class="source-line-no">134</span><span id="line-134"> addChildProcedure(createRemoteSnapshotProcedures(env));</span>
+<span class="source-line-no">135</span><span id="line-135"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_SPLIT_REGIONS);</span>
+<span class="source-line-no">136</span><span id="line-136"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">137</span><span id="line-137"> case SNAPSHOT_SNAPSHOT_SPLIT_REGIONS:</span>
+<span class="source-line-no">138</span><span id="line-138"> snapshotSplitRegions(env);</span>
+<span class="source-line-no">139</span><span id="line-139"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_MOB_REGION);</span>
+<span class="source-line-no">140</span><span id="line-140"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">141</span><span id="line-141"> case SNAPSHOT_SNAPSHOT_CLOSED_REGIONS:</span>
+<span class="source-line-no">142</span><span id="line-142"> snapshotClosedRegions(env);</span>
+<span class="source-line-no">143</span><span id="line-143"> setNextState(SnapshotState.SNAPSHOT_SNAPSHOT_MOB_REGION);</span>
+<span class="source-line-no">144</span><span id="line-144"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">145</span><span id="line-145"> case SNAPSHOT_SNAPSHOT_MOB_REGION:</span>
+<span class="source-line-no">146</span><span id="line-146"> snapshotMobRegion(env);</span>
+<span class="source-line-no">147</span><span id="line-147"> setNextState(SnapshotState.SNAPSHOT_CONSOLIDATE_SNAPSHOT);</span>
+<span class="source-line-no">148</span><span id="line-148"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">149</span><span id="line-149"> case SNAPSHOT_CONSOLIDATE_SNAPSHOT:</span>
+<span class="source-line-no">150</span><span id="line-150"> // flush the in-memory state, and write the single manifest</span>
+<span class="source-line-no">151</span><span id="line-151"> status.setStatus("Consolidate snapshot: " + snapshot.getName());</span>
+<span class="source-line-no">152</span><span id="line-152"> snapshotManifest.consolidate();</span>
+<span class="source-line-no">153</span><span id="line-153"> setNextState(SnapshotState.SNAPSHOT_VERIFIER_SNAPSHOT);</span>
+<span class="source-line-no">154</span><span id="line-154"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">155</span><span id="line-155"> case SNAPSHOT_VERIFIER_SNAPSHOT:</span>
+<span class="source-line-no">156</span><span id="line-156"> status.setStatus("Verifying snapshot: " + snapshot.getName());</span>
+<span class="source-line-no">157</span><span id="line-157"> verifySnapshot(env);</span>
+<span class="source-line-no">158</span><span id="line-158"> setNextState(SnapshotState.SNAPSHOT_COMPLETE_SNAPSHOT);</span>
+<span class="source-line-no">159</span><span id="line-159"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">160</span><span id="line-160"> case SNAPSHOT_COMPLETE_SNAPSHOT:</span>
+<span class="source-line-no">161</span><span id="line-161"> if (isSnapshotCorrupted()) {</span>
+<span class="source-line-no">162</span><span id="line-162"> throw new CorruptedSnapshotException(snapshot.getName());</span>
+<span class="source-line-no">163</span><span id="line-163"> }</span>
+<span class="source-line-no">164</span><span id="line-164"> if (</span>
+<span class="source-line-no">165</span><span id="line-165"> SnapshotDescriptionUtils.isExpiredSnapshot(snapshot.getTtl(),</span>
+<span class="source-line-no">166</span><span id="line-166"> snapshot.getCreationTime(), EnvironmentEdgeManager.currentTime())</span>
+<span class="source-line-no">167</span><span id="line-167"> ) {</span>
+<span class="source-line-no">168</span><span id="line-168"> throw new SnapshotTTLExpiredException(ProtobufUtil.createSnapshotDesc(snapshot));</span>
+<span class="source-line-no">169</span><span id="line-169"> }</span>
+<span class="source-line-no">170</span><span id="line-170"> completeSnapshot(env);</span>
+<span class="source-line-no">171</span><span id="line-171"> setNextState(SnapshotState.SNAPSHOT_POST_OPERATION);</span>
+<span class="source-line-no">172</span><span id="line-172"> return Flow.HAS_MORE_STATE;</span>
+<span class="source-line-no">173</span><span id="line-173"> case SNAPSHOT_POST_OPERATION:</span>
+<span class="source-line-no">174</span><span id="line-174"> postSnapshot(env);</span>
+<span class="source-line-no">175</span><span id="line-175"> return Flow.NO_MORE_STATE;</span>
+<span class="source-line-no">176</span><span id="line-176"> default:</span>
+<span class="source-line-no">177</span><span id="line-177"> throw new UnsupportedOperationException("unhandled state=" + state);</span>
+<span class="source-line-no">178</span><span id="line-178"> }</span>
+<span class="source-line-no">179</span><span id="line-179"> } catch (ProcedureSuspendedException e) {</span>
+<span class="source-line-no">180</span><span id="line-180"> throw e;</span>
+<span class="source-line-no">181</span><span id="line-181"> } catch (Exception e) {</span>
+<span class="source-line-no">182</span><span id="line-182"> setFailure("master-snapshot", e);</span>
+<span class="source-line-no">183</span><span id="line-183"> LOG.warn("unexpected exception while execute {}. Mark procedure Failed.", this, e);</span>
+<span class="source-line-no">184</span><span id="line-184"> status.abort("Abort Snapshot " + snapshot.getName() + " on Table " + snapshotTable);</span>
+<span class="source-line-no">185</span><span id="line-185"> return Flow.NO_MORE_STATE;</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"> }</span>
+<span class="source-line-no">188</span><span id="line-188"></span>
+<span class="source-line-no">189</span><span id="line-189"> @Override</span>
+<span class="source-line-no">190</span><span id="line-190"> protected void rollbackState(MasterProcedureEnv env, SnapshotState state)</span>
+<span class="source-line-no">191</span><span id="line-191"> throws IOException, InterruptedException {</span>
+<span class="source-line-no">192</span><span id="line-192"> if (state == SnapshotState.SNAPSHOT_PRE_OPERATION) {</span>
+<span class="source-line-no">193</span><span id="line-193"> try {</span>
+<span class="source-line-no">194</span><span id="line-194"> if (!workingDirFS.delete(workingDir, true)) {</span>
+<span class="source-line-no">195</span><span id="line-195"> LOG.error("Couldn't delete snapshot working directory {}", workingDir);</span>
+<span class="source-line-no">196</span><span id="line-196"> }</span>
+<span class="source-line-no">197</span><span id="line-197"> } catch (IOException e) {</span>
+<span class="source-line-no">198</span><span id="line-198"> LOG.error("Couldn't delete snapshot working directory {}", workingDir, e);</span>
+<span class="source-line-no">199</span><span id="line-199"> }</span>
+<span class="source-line-no">200</span><span id="line-200"> }</span>
+<span class="source-line-no">201</span><span id="line-201"> }</span>
+<span class="source-line-no">202</span><span id="line-202"></span>
+<span class="source-line-no">203</span><span id="line-203"> @Override</span>
+<span class="source-line-no">204</span><span id="line-204"> protected boolean isRollbackSupported(SnapshotState state) {</span>
+<span class="source-line-no">205</span><span id="line-205"> return true;</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208"> @Override</span>
+<span class="source-line-no">209</span><span id="line-209"> protected SnapshotState getState(final int stateId) {</span>
+<span class="source-line-no">210</span><span id="line-210"> return SnapshotState.forNumber(stateId);</span>
+<span class="source-line-no">211</span><span id="line-211"> }</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213"> @Override</span>
+<span class="source-line-no">214</span><span id="line-214"> protected int getStateId(SnapshotState state) {</span>
+<span class="source-line-no">215</span><span id="line-215"> return state.getNumber();</span>
+<span class="source-line-no">216</span><span id="line-216"> }</span>
+<span class="source-line-no">217</span><span id="line-217"></span>
+<span class="source-line-no">218</span><span id="line-218"> @Override</span>
+<span class="source-line-no">219</span><span id="line-219"> protected SnapshotState getInitialState() {</span>
+<span class="source-line-no">220</span><span id="line-220"> return SnapshotState.SNAPSHOT_PREPARE;</span>
+<span class="source-line-no">221</span><span id="line-221"> }</span>
+<span class="source-line-no">222</span><span id="line-222"></span>
+<span class="source-line-no">223</span><span id="line-223"> private void prepareSnapshot(MasterProcedureEnv env)</span>
+<span class="source-line-no">224</span><span id="line-224"> throws ProcedureSuspendedException, IOException {</span>
+<span class="source-line-no">225</span><span id="line-225"> if (isAnySplitOrMergeProcedureRunning(env)) {</span>
+<span class="source-line-no">226</span><span id="line-226"> if (retryCounter == null) {</span>
+<span class="source-line-no">227</span><span id="line-227"> retryCounter = ProcedureUtil.createRetryCounter(env.getMasterConfiguration());</span>
+<span class="source-line-no">228</span><span id="line-228"> }</span>
+<span class="source-line-no">229</span><span id="line-229"> long backoff = retryCounter.getBackoffTimeAndIncrementAttempts();</span>
+<span class="source-line-no">230</span><span id="line-230"> LOG.warn("{} waits {} ms for Split/Merge procedure to finish", this, backoff);</span>
+<span class="source-line-no">231</span><span id="line-231"> setTimeout(Math.toIntExact(backoff));</span>
+<span class="source-line-no">232</span><span id="line-232"> setState(ProcedureState.WAITING_TIMEOUT);</span>
+<span class="source-line-no">233</span><span id="line-233"> skipPersistence();</span>
+<span class="source-line-no">234</span><span id="line-234"> throw new ProcedureSuspendedException();</span>
+<span class="source-line-no">235</span><span id="line-235"> }</span>
+<span class="source-line-no">236</span><span id="line-236"> prepareSnapshotEnv(env);</span>
+<span class="source-line-no">237</span><span id="line-237"> }</span>
+<span class="source-line-no">238</span><span id="line-238"></span>
+<span class="source-line-no">239</span><span id="line-239"> private void prepareSnapshotEnv(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">240</span><span id="line-240"> this.conf = env.getMasterConfiguration();</span>
+<span class="source-line-no">241</span><span id="line-241"> this.snapshotTable = TableName.valueOf(snapshot.getTable());</span>
+<span class="source-line-no">242</span><span id="line-242"> this.htd = loadTableDescriptorSnapshot(env);</span>
+<span class="source-line-no">243</span><span id="line-243"> this.rootFs = env.getMasterFileSystem().getFileSystem();</span>
+<span class="source-line-no">244</span><span id="line-244"> this.rootDir = CommonFSUtils.getRootDir(conf);</span>
+<span class="source-line-no">245</span><span id="line-245"> this.snapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshot, rootDir);</span>
+<span class="source-line-no">246</span><span id="line-246"> this.workingDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(snapshot, rootDir, conf);</span>
+<span class="source-line-no">247</span><span id="line-247"> this.workingDirFS = workingDir.getFileSystem(conf);</span>
+<span class="source-line-no">248</span><span id="line-248"> this.status = TaskMonitor.get()</span>
+<span class="source-line-no">249</span><span id="line-249"> .createStatus("Taking " + snapshot.getType() + " snapshot on table: " + snapshotTable);</span>
+<span class="source-line-no">250</span><span id="line-250"> ForeignExceptionDispatcher monitor = new ForeignExceptionDispatcher(snapshot.getName());</span>
+<span class="source-line-no">251</span><span id="line-251"> this.snapshotManifest =</span>
+<span class="source-line-no">252</span><span id="line-252"> SnapshotManifest.create(conf, rootFs, workingDir, snapshot, monitor, status);</span>
+<span class="source-line-no">253</span><span id="line-253"> this.snapshotManifest.addTableDescriptor(htd);</span>
+<span class="source-line-no">254</span><span id="line-254"> }</span>
+<span class="source-line-no">255</span><span id="line-255"></span>
+<span class="source-line-no">256</span><span id="line-256"> @Override</span>
+<span class="source-line-no">257</span><span id="line-257"> protected synchronized boolean setTimeoutFailure(MasterProcedureEnv env) {</span>
+<span class="source-line-no">258</span><span id="line-258"> setState(ProcedureState.RUNNABLE);</span>
+<span class="source-line-no">259</span><span id="line-259"> env.getProcedureScheduler().addFront(this);</span>
+<span class="source-line-no">260</span><span id="line-260"> return false;</span>
+<span class="source-line-no">261</span><span id="line-261"> }</span>
+<span class="source-line-no">262</span><span id="line-262"></span>
+<span class="source-line-no">263</span><span id="line-263"> private boolean isAnySplitOrMergeProcedureRunning(MasterProcedureEnv env) {</span>
+<span class="source-line-no">264</span><span id="line-264"> return env.getMasterServices().getMasterProcedureExecutor().getProcedures().stream()</span>
+<span class="source-line-no">265</span><span id="line-265"> .filter(p -> !p.isFinished())</span>
+<span class="source-line-no">266</span><span id="line-266"> .filter(</span>
+<span class="source-line-no">267</span><span id="line-267"> p -> p instanceof SplitTableRegionProcedure || p instanceof MergeTableRegionsProcedure)</span>
+<span class="source-line-no">268</span><span id="line-268"> .anyMatch(</span>
+<span class="source-line-no">269</span><span id="line-269"> p -> ((AbstractStateMachineTableProcedure<?>) p).getTableName().equals(getTableName()));</span>
+<span class="source-line-no">270</span><span id="line-270"> }</span>
+<span class="source-line-no">271</span><span id="line-271"></span>
+<span class="source-line-no">272</span><span id="line-272"> private TableDescriptor loadTableDescriptorSnapshot(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">273</span><span id="line-273"> TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(snapshotTable);</span>
+<span class="source-line-no">274</span><span id="line-274"> if (htd == null) {</span>
+<span class="source-line-no">275</span><span id="line-275"> throw new IOException("TableDescriptor missing for " + snapshotTable);</span>
+<span class="source-line-no">276</span><span id="line-276"> }</span>
+<span class="source-line-no">277</span><span id="line-277"> if (htd.getMaxFileSize() == -1 && this.snapshot.getMaxFileSize() > 0) {</span>
+<span class="source-line-no">278</span><span id="line-278"> return TableDescriptorBuilder.newBuilder(htd).setValue(TableDescriptorBuilder.MAX_FILESIZE,</span>
+<span class="source-line-no">279</span><span id="line-279"> Long.toString(this.snapshot.getMaxFileSize())).build();</span>
+<span class="source-line-no">280</span><span id="line-280"> }</span>
+<span class="source-line-no">281</span><span id="line-281"> return htd;</span>
+<span class="source-line-no">282</span><span id="line-282"> }</span>
+<span class="source-line-no">283</span><span id="line-283"></span>
+<span class="source-line-no">284</span><span id="line-284"> private void preSnapshot(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">285</span><span id="line-285"> env.getMasterServices().getSnapshotManager().prepareWorkingDirectory(snapshot);</span>
+<span class="source-line-no">286</span><span id="line-286"> }</span>
+<span class="source-line-no">287</span><span id="line-287"></span>
+<span class="source-line-no">288</span><span id="line-288"> private void postSnapshot(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">289</span><span id="line-289"> SnapshotManager sm = env.getMasterServices().getSnapshotManager();</span>
+<span class="source-line-no">290</span><span id="line-290"> if (sm != null) {</span>
+<span class="source-line-no">291</span><span id="line-291"> sm.unregisterSnapshotProcedure(snapshot, getProcId());</span>
+<span class="source-line-no">292</span><span id="line-292"> }</span>
+<span class="source-line-no">293</span><span id="line-293"> }</span>
+<span class="source-line-no">294</span><span id="line-294"></span>
+<span class="source-line-no">295</span><span id="line-295"> private void verifySnapshot(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">296</span><span id="line-296"> int verifyThreshold =</span>
+<span class="source-line-no">297</span><span id="line-297"> env.getMasterConfiguration().getInt("hbase.snapshot.remote.verify.threshold", 10000);</span>
+<span class="source-line-no">298</span><span id="line-298"> List<RegionInfo> regions = env.getAssignmentManager().getTableRegions(snapshotTable, false)</span>
+<span class="source-line-no">299</span><span id="line-299"> .stream().filter(r -> RegionReplicaUtil.isDefaultReplica(r)).collect(Collectors.toList());</span>
+<span class="source-line-no">300</span><span id="line-300"> int numRegions = regions.size();</span>
+<span class="source-line-no">301</span><span id="line-301"></span>
+<span class="source-line-no">302</span><span id="line-302"> MasterSnapshotVerifier verifier =</span>
+<span class="source-line-no">303</span><span id="line-303"> new MasterSnapshotVerifier(env.getMasterServices(), snapshot, workingDirFS);</span>
+<span class="source-line-no">304</span><span id="line-304"> if (numRegions >= verifyThreshold) {</span>
+<span class="source-line-no">305</span><span id="line-305"> verifier.verifySnapshot(workingDir, false);</span>
+<span class="source-line-no">306</span><span id="line-306"> addChildProcedure(regions.stream().map(r -> new SnapshotVerifyProcedure(snapshot, r))</span>
+<span class="source-line-no">307</span><span id="line-307"> .toArray(SnapshotVerifyProcedure[]::new));</span>
+<span class="source-line-no">308</span><span id="line-308"> } else {</span>
+<span class="source-line-no">309</span><span id="line-309"> verifier.verifySnapshot(workingDir, true);</span>
+<span class="source-line-no">310</span><span id="line-310"> }</span>
+<span class="source-line-no">311</span><span id="line-311"> }</span>
+<span class="source-line-no">312</span><span id="line-312"></span>
+<span class="source-line-no">313</span><span id="line-313"> private void completeSnapshot(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">314</span><span id="line-314"> // complete the snapshot, atomically moving from tmp to .snapshot dir.</span>
+<span class="source-line-no">315</span><span id="line-315"> SnapshotDescriptionUtils.completeSnapshot(snapshotDir, workingDir,</span>
+<span class="source-line-no">316</span><span id="line-316"> env.getMasterFileSystem().getFileSystem(), workingDirFS, conf);</span>
+<span class="source-line-no">317</span><span id="line-317"> // update metric. when master restarts, the metric value is wrong</span>
+<span class="source-line-no">318</span><span id="line-318"> metricsSnapshot.addSnapshot(status.getCompletionTimestamp() - status.getStartTime());</span>
+<span class="source-line-no">319</span><span id="line-319"> if (env.getMasterCoprocessorHost() != null) {</span>
+<span class="source-line-no">320</span><span id="line-320"> env.getMasterCoprocessorHost()</span>
+<span class="source-line-no">321</span><span id="line-321"> .postCompletedSnapshotAction(ProtobufUtil.createSnapshotDesc(snapshot), htd);</span>
+<span class="source-line-no">322</span><span id="line-322"> }</span>
+<span class="source-line-no">323</span><span id="line-323"> status.markComplete("Snapshot " + snapshot.getName() + " completed");</span>
+<span class="source-line-no">324</span><span id="line-324"> }</span>
+<span class="source-line-no">325</span><span id="line-325"></span>
+<span class="source-line-no">326</span><span id="line-326"> private void snapshotSplitRegions(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">327</span><span id="line-327"> List<RegionInfo> regions =</span>
+<span class="source-line-no">328</span><span id="line-328"> getDefaultRegionReplica(env).filter(RegionInfo::isSplit).collect(Collectors.toList());</span>
+<span class="source-line-no">329</span><span id="line-329"> snapshotSplitOrClosedRegions(env, regions, "SplitRegionsSnapshotPool");</span>
+<span class="source-line-no">330</span><span id="line-330"> }</span>
+<span class="source-line-no">331</span><span id="line-331"></span>
+<span class="source-line-no">332</span><span id="line-332"> private void snapshotClosedRegions(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">333</span><span id="line-333"> List<RegionInfo> regions = getDefaultRegionReplica(env).collect(Collectors.toList());</span>
+<span class="source-line-no">334</span><span id="line-334"> snapshotSplitOrClosedRegions(env, regions, "ClosedRegionsSnapshotPool");</span>
+<span class="source-line-no">335</span><span id="line-335"> }</span>
+<span class="source-line-no">336</span><span id="line-336"></span>
+<span class="source-line-no">337</span><span id="line-337"> private Stream<RegionInfo> getDefaultRegionReplica(MasterProcedureEnv env) {</span>
+<span class="source-line-no">338</span><span id="line-338"> return env.getAssignmentManager().getTableRegions(snapshotTable, false).stream()</span>
+<span class="source-line-no">339</span><span id="line-339"> .filter(r -> RegionReplicaUtil.isDefaultReplica(r));</span>
+<span class="source-line-no">340</span><span id="line-340"> }</span>
+<span class="source-line-no">341</span><span id="line-341"></span>
+<span class="source-line-no">342</span><span id="line-342"> private void snapshotSplitOrClosedRegions(MasterProcedureEnv env, List<RegionInfo> regions,</span>
+<span class="source-line-no">343</span><span id="line-343"> String threadPoolName) throws IOException {</span>
+<span class="source-line-no">344</span><span id="line-344"> ThreadPoolExecutor exec =</span>
+<span class="source-line-no">345</span><span id="line-345"> SnapshotManifest.createExecutor(env.getMasterConfiguration(), threadPoolName);</span>
+<span class="source-line-no">346</span><span id="line-346"> try {</span>
+<span class="source-line-no">347</span><span id="line-347"> ModifyRegionUtils.editRegions(exec, regions, new ModifyRegionUtils.RegionEditTask() {</span>
+<span class="source-line-no">348</span><span id="line-348"> @Override</span>
+<span class="source-line-no">349</span><span id="line-349"> public void editRegion(final RegionInfo region) throws IOException {</span>
+<span class="source-line-no">350</span><span id="line-350"> snapshotManifest.addRegion(CommonFSUtils.getTableDir(rootDir, snapshotTable), region);</span>
+<span class="source-line-no">351</span><span id="line-351"> LOG.info("take snapshot region={}, table={}", region, snapshotTable);</span>
+<span class="source-line-no">352</span><span id="line-352"> }</span>
+<span class="source-line-no">353</span><span id="line-353"> });</span>
+<span class="source-line-no">354</span><span id="line-354"> } finally {</span>
+<span class="source-line-no">355</span><span id="line-355"> exec.shutdown();</span>
+<span class="source-line-no">356</span><span id="line-356"> }</span>
+<span class="source-line-no">357</span><span id="line-357"> status.setStatus("Completed referencing closed/split regions of table: " + snapshotTable);</span>
+<span class="source-line-no">358</span><span id="line-358"> }</span>
+<span class="source-line-no">359</span><span id="line-359"></span>
+<span class="source-line-no">360</span><span id="line-360"> private void snapshotMobRegion(MasterProcedureEnv env) throws IOException {</span>
+<span class="source-line-no">361</span><span id="line-361"> if (!MobUtils.hasMobColumns(htd)) {</span>
+<span class="source-line-no">362</span><span id="line-362"> return;</span>
+<span class="source-line-no">363</span><span id="line-363"> }</span>
+<span class="source-line-no">364</span><span id="line-364"> ThreadPoolExecutor exec =</span>
+<span class="source-line-no">365</span><span id="line-365"> SnapshotManifest.createExecutor(env.getMasterConfiguration(), "MobRegionSnapshotPool");</span>
+<span class="source-line-no">366</span><span id="line-366"> RegionInfo mobRegionInfo = MobUtils.getMobRegionInfo(htd.getTableName());</span>
+<span class="source-line-no">367</span><span id="line-367"> try {</span>
+<span class="source-line-no">368</span><span id="line-368"> ModifyRegionUtils.editRegions(exec, Collections.singleton(mobRegionInfo),</span>
+<span class="source-line-no">369</span><span id="line-369"> new ModifyRegionUtils.RegionEditTask() {</span>
+<span class="source-line-no">370</span><span id="line-370"> @Override</span>
+<span class="source-line-no">371</span><span id="line-371"> public void editRegion(final RegionInfo region) throws IOException {</span>
+<span class="source-line-no">372</span><span id="line-372"> snapshotManifest.addRegion(CommonFSUtils.getTableDir(rootDir, snapshotTable), region);</span>
+<span class="source-line-no">373</span><span id="line-373"> }</span>
+<span class="source-line-no">374</span><span id="line-374"> });</span>
+<span class="source-line-no">375</span><span id="line-375"> } finally {</span>
+<span class="source-line-no">376</span><span id="line-376"> exec.shutdown();</span>
+<span class="source-line-no">377</span><span id="line-377"> }</span>
+<span class="source-line-no">378</span><span id="line-378"> status.setStatus("Completed referencing HFiles for the mob region of table: " + snapshotTable);</span>
+<span class="source-line-no">379</span><span id="line-379"> }</span>
+<span class="source-line-no">380</span><span id="line-380"></span>
+<span class="source-line-no">381</span><span id="line-381"> @Override</span>
+<span class="source-line-no">382</span><span id="line-382"> protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {</span>
+<span class="source-line-no">383</span><span id="line-383"> super.serializeStateData(serializer);</span>
+<span class="source-line-no">384</span><span id="line-384"> serializer</span>
+<span class="source-line-no">385</span><span id="line-385"> .serialize(SnapshotProcedureStateData.newBuilder().setSnapshot(this.snapshot).build());</span>
+<span class="source-line-no">386</span><span id="line-386"> }</span>
+<span class="source-line-no">387</span><span id="line-387"></span>
+<span class="source-line-no">388</span><span id="line-388"> @Override</span>
+<span class="source-line-no">389</span><span id="line-389"> protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {</span>
+<span class="source-line-no">390</span><span id="line-390"> super.deserializeStateData(serializer);</span>
+<span class="source-line-no">391</span><span id="line-391"> SnapshotProcedureStateData data = serializer.deserialize(SnapshotProcedureStateData.class);</span>
+<span class="source-line-no">392</span><span id="line-392"> this.snapshot = data.getSnapshot();</span>
+<span class="source-line-no">393</span><span id="line-393"> }</span>
+<span class="source-line-no">394</span><span id="line-394"></span>
+<span class="source-line-no">395</span><span id="line-395"> private Procedure<MasterProcedureEnv>[] createRemoteSnapshotProcedures(MasterProcedureEnv env) {</span>
+<span class="source-line-no">396</span><span id="line-396"> return env.getAssignmentManager().getTableRegions(snapshotTable, true).stream()</span>
+<span class="source-line-no">397</span><span id="line-397"> .filter(r -> RegionReplicaUtil.isDefaultReplica(r))</span>
+<span class="source-line-no">398</span><span id="line-398"> .map(r -> new SnapshotRegionProcedure(snapshot, r)).toArray(SnapshotRegionProcedure[]::new);</span>
+<span class="source-line-no">399</span><span id="line-399"> }</span>
+<span class="source-line-no">400</span><span id="line-400"></span>
+<span class="source-line-no">401</span><span id="line-401"> @Override</span>
+<span class="source-line-no">402</span><span id="line-402"> public void toStringClassDetails(StringBuilder builder) {</span>
+<span class="source-line-no">403</span><span id="line-403"> builder.append(getClass().getName()).append(", id=").append(getProcId()).append(", snapshot=")</span>
+<span class="source-line-no">404</span><span id="line-404"> .append(ClientSnapshotDescriptionUtils.toString(snapshot));</span>
+<span class="source-line-no">405</span><span id="line-405"> }</span>
+<span class="source-line-no">406</span><span id="line-406"></span>
+<span class="source-line-no">407</span><span id="line-407"> public SnapshotDescription getSnapshotDesc() {</span>
+<span class="source-line-no">408</span><span id="line-408"> return snapshot;</span>
+<span class="source-line-no">409</span><span id="line-409"> }</span>
+<span class="source-line-no">410</span><span id="line-410"></span>
+<span class="source-line-no">411</span><span id="line-411"> @Override</span>
+<span class="source-line-no">412</span><span id="line-412"> protected void afterReplay(MasterProcedureEnv env) {</span>
+<span class="source-line-no">413</span><span id="line-413"> if (getCurrentState() == getInitialState()) {</span>
+<span class="source-line-no">414</span><span id="line-414"> // if we are in the initial state, it is unnecessary to call prepareSnapshotEnv().</span>
+<span class="source-line-no">415</span><span id="line-415"> return;</span>
+<span class="source-line-no">416</span><span id="line-416"> }</span>
+<span class="source-line-no">417</span><span id="line-417"> try {</span>
+<span class="source-line-no">418</span><span id="line-418"> prepareSnapshotEnv(env);</span>
+<span class="source-line-no">419</span><span id="line-419"> boolean snapshotProcedureEnabled = conf.getBoolean(SnapshotManager.SNAPSHOT_PROCEDURE_ENABLED,</span>
+<span class="source-line-no">420</span><span id="line-420"> SnapshotManager.SNAPSHOT_PROCEDURE_ENABLED_DEFAULT);</span>
+<span class="source-line-no">421</span><span id="line-421"> if (!snapshotProcedureEnabled) {</span>
+<span class="source-line-no">422</span><span id="line-422"> throw new IOException("SnapshotProcedure is DISABLED");</span>
+<span class="source-line-no">423</span><span id="line-423"> }</span>
+<span class="source-line-no">424</span><span id="line-424"> } catch (IOException e) {</span>
+<span class="source-line-no">425</span><span id="line-425"> LOG.error("Failed replaying {}, mark procedure as FAILED", this, e);</span>
+<span class="source-line-no">426</span><span id="line-426"> setFailure("master-snapshot", e);</span>
+<span class="source-line-no">427</span><span id="line-427"> }</span>
+<span class="source-line-no">428</span><span id="line-428"> }</span>
+<span class="source-line-no">429</span><span id="line-429"></span>
+<span class="source-line-no">430</span><span id="line-430"> public SnapshotDescription getSnapshot() {</span>
+<span class="source-line-no">431</span><span id="line-431"> return snapshot;</span>
<span class="source-line-no">432</span><span id="line-432"> }</span>
<span class="source-line-no">433</span><span id="line-433"></span>
-<span class="source-line-no">434</span><span id="line-434"> public boolean isSnapshotCorrupted() throws IOException {</span>
-<span class="source-line-no">435</span><span id="line-435"> return workingDirFS</span>
-<span class="source-line-no">436</span><span id="line-436"> .exists(SnapshotDescriptionUtils.getCorruptedFlagFileForSnapshot(workingDir));</span>
-<span class="source-line-no">437</span><span id="line-437"> }</span>
-<span class="source-line-no">438</span><span id="line-438">}</span>
+<span class="source-line-no">434</span><span id="line-434"> public synchronized void markSnapshotCorrupted() throws IOException {</span>
+<span class="source-line-no">435</span><span id="line-435"> Path flagFile = SnapshotDescriptionUtils.getCorruptedFlagFileForSnapshot(workingDir);</span>
+<span class="source-line-no">436</span><span id="line-436"> if (!workingDirFS.exists(flagFile)) {</span>
+<span class="source-line-no">437</span><span id="line-437"> workingDirFS.create(flagFile).close();</span>
+<span class="source-line-no">438</span><span id="line-438"> LOG.info("touch corrupted snapshot flag file {} for {}", flagFile, snapshot.getName());</span>
+<span class="source-line-no">439</span><span id="line-439"> }</span>
+<span class="source-line-no">440</span><span id="line-440"> }</span>
+<span class="source-line-no">441</span><span id="line-441"></span>
+<span class="source-line-no">442</span><span id="line-442"> public boolean isSnapshotCorrupted() throws IOException {</span>
+<span class="source-line-no">443</span><span id="line-443"> return workingDirFS</span>
+<span class="source-line-no">444</span><span id="line-444"> .exists(SnapshotDescriptionUtils.getCorruptedFlagFileForSnapshot(workingDir));</span>
+<span class="source-line-no">445</span><span id="line-445"> }</span>
+<span class="source-line-no">446</span><span id="line-446">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html
index 5df42e8d6b1..d7a4e6e75ae 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.html
@@ -61,300 +61,310 @@
<span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils;</span>
<span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
<span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.snapshot.SnapshotManifest;</span>
-<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
-<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.util.Pair;</span>
-<span class="source-line-no">053</span><span id="line-53">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">054</span><span id="line-54">import org.apache.zookeeper.KeeperException;</span>
-<span class="source-line-no">055</span><span id="line-55">import org.slf4j.Logger;</span>
-<span class="source-line-no">056</span><span id="line-56">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;</span>
+<span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.snapshot.SnapshotTTLExpiredException;</span>
+<span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.util.CommonFSUtils;</span>
+<span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.util.Pair;</span>
+<span class="source-line-no">055</span><span id="line-55">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">056</span><span id="line-56">import org.apache.zookeeper.KeeperException;</span>
+<span class="source-line-no">057</span><span id="line-57">import org.slf4j.Logger;</span>
+<span class="source-line-no">058</span><span id="line-58">import org.slf4j.LoggerFactory;</span>
<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
-<span class="source-line-no">061</span><span id="line-61">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
-<span class="source-line-no">062</span><span id="line-62"></span>
-<span class="source-line-no">063</span><span id="line-63">/**</span>
-<span class="source-line-no">064</span><span id="line-64"> * A handler for taking snapshots from the master. This is not a subclass of TableEventHandler</span>
-<span class="source-line-no">065</span><span id="line-65"> * because using that would incur an extra hbase:meta scan. The {@link #snapshotRegions(List)} call</span>
-<span class="source-line-no">066</span><span id="line-66"> * should get implemented for each snapshot flavor.</span>
-<span class="source-line-no">067</span><span id="line-67"> */</span>
-<span class="source-line-no">068</span><span id="line-68">@InterfaceAudience.Private</span>
-<span class="source-line-no">069</span><span id="line-69">public abstract class TakeSnapshotHandler extends EventHandler</span>
-<span class="source-line-no">070</span><span id="line-70"> implements SnapshotSentinel, ForeignExceptionSnare {</span>
-<span class="source-line-no">071</span><span id="line-71"> private static final Logger LOG = LoggerFactory.getLogger(TakeSnapshotHandler.class);</span>
-<span class="source-line-no">072</span><span id="line-72"> public static final String HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT =</span>
-<span class="source-line-no">073</span><span id="line-73"> "hbase.snapshot.master.lock.acquire.timeout";</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75"> private volatile boolean finished;</span>
+<span class="source-line-no">060</span><span id="line-60">import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
+<span class="source-line-no">063</span><span id="line-63">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65">/**</span>
+<span class="source-line-no">066</span><span id="line-66"> * A handler for taking snapshots from the master. This is not a subclass of TableEventHandler</span>
+<span class="source-line-no">067</span><span id="line-67"> * because using that would incur an extra hbase:meta scan. The {@link #snapshotRegions(List)} call</span>
+<span class="source-line-no">068</span><span id="line-68"> * should get implemented for each snapshot flavor.</span>
+<span class="source-line-no">069</span><span id="line-69"> */</span>
+<span class="source-line-no">070</span><span id="line-70">@InterfaceAudience.Private</span>
+<span class="source-line-no">071</span><span id="line-71">public abstract class TakeSnapshotHandler extends EventHandler</span>
+<span class="source-line-no">072</span><span id="line-72"> implements SnapshotSentinel, ForeignExceptionSnare {</span>
+<span class="source-line-no">073</span><span id="line-73"> private static final Logger LOG = LoggerFactory.getLogger(TakeSnapshotHandler.class);</span>
+<span class="source-line-no">074</span><span id="line-74"> public static final String HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT =</span>
+<span class="source-line-no">075</span><span id="line-75"> "hbase.snapshot.master.lock.acquire.timeout";</span>
<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> // none of these should ever be null</span>
-<span class="source-line-no">078</span><span id="line-78"> protected final MasterServices master;</span>
-<span class="source-line-no">079</span><span id="line-79"> protected final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();</span>
-<span class="source-line-no">080</span><span id="line-80"> protected final SnapshotDescription snapshot;</span>
-<span class="source-line-no">081</span><span id="line-81"> protected final Configuration conf;</span>
-<span class="source-line-no">082</span><span id="line-82"> protected final FileSystem rootFs;</span>
-<span class="source-line-no">083</span><span id="line-83"> protected final FileSystem workingDirFs;</span>
-<span class="source-line-no">084</span><span id="line-84"> protected final Path rootDir;</span>
-<span class="source-line-no">085</span><span id="line-85"> private final Path snapshotDir;</span>
-<span class="source-line-no">086</span><span id="line-86"> protected final Path workingDir;</span>
-<span class="source-line-no">087</span><span id="line-87"> private final MasterSnapshotVerifier verifier;</span>
-<span class="source-line-no">088</span><span id="line-88"> protected final ForeignExceptionDispatcher monitor;</span>
-<span class="source-line-no">089</span><span id="line-89"> private final LockManager.MasterLock tableLock;</span>
-<span class="source-line-no">090</span><span id="line-90"> protected final MonitoredTask status;</span>
-<span class="source-line-no">091</span><span id="line-91"> protected final TableName snapshotTable;</span>
-<span class="source-line-no">092</span><span id="line-92"> protected final SnapshotManifest snapshotManifest;</span>
-<span class="source-line-no">093</span><span id="line-93"> protected final SnapshotManager snapshotManager;</span>
-<span class="source-line-no">094</span><span id="line-94"> /**</span>
-<span class="source-line-no">095</span><span id="line-95"> * Snapshot creation requires table lock. If any region of the table is in transition, table lock</span>
-<span class="source-line-no">096</span><span id="line-96"> * cannot be acquired by LockProcedure and hence snapshot creation could hang for potentially very</span>
-<span class="source-line-no">097</span><span id="line-97"> * long time. This timeout will ensure snapshot creation fails-fast by waiting for only given</span>
-<span class="source-line-no">098</span><span id="line-98"> * timeout.</span>
-<span class="source-line-no">099</span><span id="line-99"> */</span>
-<span class="source-line-no">100</span><span id="line-100"> private final long lockAcquireTimeoutMs;</span>
-<span class="source-line-no">101</span><span id="line-101"></span>
-<span class="source-line-no">102</span><span id="line-102"> protected TableDescriptor htd;</span>
+<span class="source-line-no">077</span><span id="line-77"> private volatile boolean finished;</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79"> // none of these should ever be null</span>
+<span class="source-line-no">080</span><span id="line-80"> protected final MasterServices master;</span>
+<span class="source-line-no">081</span><span id="line-81"> protected final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();</span>
+<span class="source-line-no">082</span><span id="line-82"> protected final SnapshotDescription snapshot;</span>
+<span class="source-line-no">083</span><span id="line-83"> protected final Configuration conf;</span>
+<span class="source-line-no">084</span><span id="line-84"> protected final FileSystem rootFs;</span>
+<span class="source-line-no">085</span><span id="line-85"> protected final FileSystem workingDirFs;</span>
+<span class="source-line-no">086</span><span id="line-86"> protected final Path rootDir;</span>
+<span class="source-line-no">087</span><span id="line-87"> private final Path snapshotDir;</span>
+<span class="source-line-no">088</span><span id="line-88"> protected final Path workingDir;</span>
+<span class="source-line-no">089</span><span id="line-89"> private final MasterSnapshotVerifier verifier;</span>
+<span class="source-line-no">090</span><span id="line-90"> protected final ForeignExceptionDispatcher monitor;</span>
+<span class="source-line-no">091</span><span id="line-91"> private final LockManager.MasterLock tableLock;</span>
+<span class="source-line-no">092</span><span id="line-92"> protected final MonitoredTask status;</span>
+<span class="source-line-no">093</span><span id="line-93"> protected final TableName snapshotTable;</span>
+<span class="source-line-no">094</span><span id="line-94"> protected final SnapshotManifest snapshotManifest;</span>
+<span class="source-line-no">095</span><span id="line-95"> protected final SnapshotManager snapshotManager;</span>
+<span class="source-line-no">096</span><span id="line-96"> /**</span>
+<span class="source-line-no">097</span><span id="line-97"> * Snapshot creation requires table lock. If any region of the table is in transition, table lock</span>
+<span class="source-line-no">098</span><span id="line-98"> * cannot be acquired by LockProcedure and hence snapshot creation could hang for potentially very</span>
+<span class="source-line-no">099</span><span id="line-99"> * long time. This timeout will ensure snapshot creation fails-fast by waiting for only given</span>
+<span class="source-line-no">100</span><span id="line-100"> * timeout.</span>
+<span class="source-line-no">101</span><span id="line-101"> */</span>
+<span class="source-line-no">102</span><span id="line-102"> private final long lockAcquireTimeoutMs;</span>
<span class="source-line-no">103</span><span id="line-103"></span>
-<span class="source-line-no">104</span><span id="line-104"> /**</span>
-<span class="source-line-no">105</span><span id="line-105"> * @param snapshot descriptor of the snapshot to take</span>
-<span class="source-line-no">106</span><span id="line-106"> * @param masterServices master services provider</span>
-<span class="source-line-no">107</span><span id="line-107"> * @throws IllegalArgumentException if the working snapshot directory set from the configuration</span>
-<span class="source-line-no">108</span><span id="line-108"> * is the same as the completed snapshot directory</span>
-<span class="source-line-no">109</span><span id="line-109"> * @throws IOException if the file system of the working snapshot directory cannot be</span>
-<span class="source-line-no">110</span><span id="line-110"> * determined</span>
-<span class="source-line-no">111</span><span id="line-111"> */</span>
-<span class="source-line-no">112</span><span id="line-112"> public TakeSnapshotHandler(SnapshotDescription snapshot, final MasterServices masterServices,</span>
-<span class="source-line-no">113</span><span id="line-113"> final SnapshotManager snapshotManager) throws IOException {</span>
-<span class="source-line-no">114</span><span id="line-114"> super(masterServices, EventType.C_M_SNAPSHOT_TABLE);</span>
-<span class="source-line-no">115</span><span id="line-115"> assert snapshot != null : "SnapshotDescription must not be nul1";</span>
-<span class="source-line-no">116</span><span id="line-116"> assert masterServices != null : "MasterServices must not be nul1";</span>
-<span class="source-line-no">117</span><span id="line-117"> this.master = masterServices;</span>
-<span class="source-line-no">118</span><span id="line-118"> this.conf = this.master.getConfiguration();</span>
-<span class="source-line-no">119</span><span id="line-119"> this.rootDir = this.master.getMasterFileSystem().getRootDir();</span>
-<span class="source-line-no">120</span><span id="line-120"> this.workingDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(snapshot, rootDir, conf);</span>
-<span class="source-line-no">121</span><span id="line-121"> Preconditions.checkArgument(</span>
-<span class="source-line-no">122</span><span id="line-122"> !SnapshotDescriptionUtils.isSubDirectoryOf(workingDir, rootDir)</span>
-<span class="source-line-no">123</span><span id="line-123"> || SnapshotDescriptionUtils.isWithinDefaultWorkingDir(workingDir, conf),</span>
-<span class="source-line-no">124</span><span id="line-124"> "The working directory " + workingDir + " cannot be in the root directory unless it is "</span>
-<span class="source-line-no">125</span><span id="line-125"> + "within the default working directory");</span>
-<span class="source-line-no">126</span><span id="line-126"></span>
-<span class="source-line-no">127</span><span id="line-127"> this.snapshot = snapshot;</span>
-<span class="source-line-no">128</span><span id="line-128"> this.snapshotManager = snapshotManager;</span>
-<span class="source-line-no">129</span><span id="line-129"> this.snapshotTable = TableName.valueOf(snapshot.getTable());</span>
-<span class="source-line-no">130</span><span id="line-130"> this.rootFs = this.master.getMasterFileSystem().getFileSystem();</span>
-<span class="source-line-no">131</span><span id="line-131"> this.snapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshot, rootDir);</span>
-<span class="source-line-no">132</span><span id="line-132"> this.workingDirFs = this.workingDir.getFileSystem(this.conf);</span>
-<span class="source-line-no">133</span><span id="line-133"> this.monitor = new ForeignExceptionDispatcher(snapshot.getName());</span>
-<span class="source-line-no">134</span><span id="line-134"></span>
-<span class="source-line-no">135</span><span id="line-135"> this.tableLock = master.getLockManager().createMasterLock(snapshotTable, LockType.EXCLUSIVE,</span>
-<span class="source-line-no">136</span><span id="line-136"> this.getClass().getName() + ": take snapshot " + snapshot.getName());</span>
-<span class="source-line-no">137</span><span id="line-137"></span>
-<span class="source-line-no">138</span><span id="line-138"> // prepare the verify</span>
-<span class="source-line-no">139</span><span id="line-139"> this.verifier = new MasterSnapshotVerifier(masterServices, snapshot, workingDirFs);</span>
-<span class="source-line-no">140</span><span id="line-140"> // update the running tasks</span>
-<span class="source-line-no">141</span><span id="line-141"> this.status = TaskMonitor.get().createStatus(</span>
-<span class="source-line-no">142</span><span id="line-142"> "Taking " + snapshot.getType() + " snapshot on table: " + snapshotTable, false, true);</span>
-<span class="source-line-no">143</span><span id="line-143"> this.snapshotManifest =</span>
-<span class="source-line-no">144</span><span id="line-144"> SnapshotManifest.create(conf, rootFs, workingDir, snapshot, monitor, status);</span>
-<span class="source-line-no">145</span><span id="line-145"> this.lockAcquireTimeoutMs = conf.getLong(HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT,</span>
-<span class="source-line-no">146</span><span id="line-146"> conf.getLong(HBASE_RPC_TIMEOUT_KEY, DEFAULT_HBASE_RPC_TIMEOUT));</span>
-<span class="source-line-no">147</span><span id="line-147"> }</span>
-<span class="source-line-no">148</span><span id="line-148"></span>
-<span class="source-line-no">149</span><span id="line-149"> private TableDescriptor loadTableDescriptor() throws IOException {</span>
-<span class="source-line-no">150</span><span id="line-150"> TableDescriptor htd = this.master.getTableDescriptors().get(snapshotTable);</span>
-<span class="source-line-no">151</span><span id="line-151"> if (htd == null) {</span>
-<span class="source-line-no">152</span><span id="line-152"> throw new IOException("TableDescriptor missing for " + snapshotTable);</span>
-<span class="source-line-no">153</span><span id="line-153"> }</span>
-<span class="source-line-no">154</span><span id="line-154"> if (htd.getMaxFileSize() == -1 && this.snapshot.getMaxFileSize() > 0) {</span>
-<span class="source-line-no">155</span><span id="line-155"> htd = TableDescriptorBuilder.newBuilder(htd).setValue(TableDescriptorBuilder.MAX_FILESIZE,</span>
-<span class="source-line-no">156</span><span id="line-156"> Long.toString(this.snapshot.getMaxFileSize())).build();</span>
-<span class="source-line-no">157</span><span id="line-157"> }</span>
-<span class="source-line-no">158</span><span id="line-158"> return htd;</span>
-<span class="source-line-no">159</span><span id="line-159"> }</span>
-<span class="source-line-no">160</span><span id="line-160"></span>
-<span class="source-line-no">161</span><span id="line-161"> @Override</span>
-<span class="source-line-no">162</span><span id="line-162"> public TakeSnapshotHandler prepare() throws Exception {</span>
-<span class="source-line-no">163</span><span id="line-163"> super.prepare();</span>
-<span class="source-line-no">164</span><span id="line-164"> // after this, you should ensure to release this lock in case of exceptions</span>
-<span class="source-line-no">165</span><span id="line-165"> if (this.tableLock.tryAcquire(this.lockAcquireTimeoutMs)) {</span>
-<span class="source-line-no">166</span><span id="line-166"> try {</span>
-<span class="source-line-no">167</span><span id="line-167"> this.htd = loadTableDescriptor(); // check that .tableinfo is present</span>
-<span class="source-line-no">168</span><span id="line-168"> } catch (Exception e) {</span>
-<span class="source-line-no">169</span><span id="line-169"> this.tableLock.release();</span>
-<span class="source-line-no">170</span><span id="line-170"> throw e;</span>
-<span class="source-line-no">171</span><span id="line-171"> }</span>
-<span class="source-line-no">172</span><span id="line-172"> } else {</span>
-<span class="source-line-no">173</span><span id="line-173"> LOG.error("Master lock could not be acquired in {} ms", lockAcquireTimeoutMs);</span>
-<span class="source-line-no">174</span><span id="line-174"> throw new DoNotRetryIOException("Master lock could not be acquired");</span>
-<span class="source-line-no">175</span><span id="line-175"> }</span>
-<span class="source-line-no">176</span><span id="line-176"> return this;</span>
-<span class="source-line-no">177</span><span id="line-177"> }</span>
-<span class="source-line-no">178</span><span id="line-178"></span>
-<span class="source-line-no">179</span><span id="line-179"> /**</span>
-<span class="source-line-no">180</span><span id="line-180"> * Execute the core common portions of taking a snapshot. The {@link #snapshotRegions(List)} call</span>
-<span class="source-line-no">181</span><span id="line-181"> * should get implemented for each snapshot flavor.</span>
-<span class="source-line-no">182</span><span id="line-182"> */</span>
-<span class="source-line-no">183</span><span id="line-183"> @Override</span>
-<span class="source-line-no">184</span><span id="line-184"> @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "REC_CATCH_EXCEPTION",</span>
-<span class="source-line-no">185</span><span id="line-185"> justification = "Intentional")</span>
-<span class="source-line-no">186</span><span id="line-186"> public void process() {</span>
-<span class="source-line-no">187</span><span id="line-187"> String msg = "Running " + snapshot.getType() + " table snapshot " + snapshot.getName() + " "</span>
-<span class="source-line-no">188</span><span id="line-188"> + eventType + " on table " + snapshotTable;</span>
-<span class="source-line-no">189</span><span id="line-189"> LOG.info(msg);</span>
-<span class="source-line-no">190</span><span id="line-190"> MasterLock tableLockToRelease = this.tableLock;</span>
-<span class="source-line-no">191</span><span id="line-191"> status.setStatus(msg);</span>
-<span class="source-line-no">192</span><span id="line-192"> try {</span>
-<span class="source-line-no">193</span><span id="line-193"> if (downgradeToSharedTableLock()) {</span>
-<span class="source-line-no">194</span><span id="line-194"> // release the exclusive lock and hold the shared lock instead</span>
-<span class="source-line-no">195</span><span id="line-195"> tableLockToRelease = master.getLockManager().createMasterLock(snapshotTable,</span>
-<span class="source-line-no">196</span><span id="line-196"> LockType.SHARED, this.getClass().getName() + ": take snapshot " + snapshot.getName());</span>
-<span class="source-line-no">197</span><span id="line-197"> tableLock.release();</span>
-<span class="source-line-no">198</span><span id="line-198"> boolean isTableLockAcquired = tableLockToRelease.tryAcquire(this.lockAcquireTimeoutMs);</span>
-<span class="source-line-no">199</span><span id="line-199"> if (!isTableLockAcquired) {</span>
-<span class="source-line-no">200</span><span id="line-200"> LOG.error("Could not acquire shared lock on table {} in {} ms", snapshotTable,</span>
-<span class="source-line-no">201</span><span id="line-201"> lockAcquireTimeoutMs);</span>
-<span class="source-line-no">202</span><span id="line-202"> throw new IOException("Could not acquire shared lock on table " + snapshotTable);</span>
-<span class="source-line-no">203</span><span id="line-203"> }</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"> // If regions move after this meta scan, the region specific snapshot should fail, triggering</span>
-<span class="source-line-no">206</span><span id="line-206"> // an external exception that gets captured here.</span>
-<span class="source-line-no">207</span><span id="line-207"></span>
-<span class="source-line-no">208</span><span id="line-208"> // write down the snapshot info in the working directory</span>
-<span class="source-line-no">209</span><span id="line-209"> SnapshotDescriptionUtils.writeSnapshotInfo(snapshot, workingDir, workingDirFs);</span>
-<span class="source-line-no">210</span><span id="line-210"> snapshotManifest.addTableDescriptor(this.htd);</span>
-<span class="source-line-no">211</span><span id="line-211"> monitor.rethrowException();</span>
-<span class="source-line-no">212</span><span id="line-212"></span>
-<span class="source-line-no">213</span><span id="line-213"> List<Pair<RegionInfo, ServerName>> regionsAndLocations =</span>
-<span class="source-line-no">214</span><span id="line-214"> master.getAssignmentManager().getTableRegionsAndLocations(snapshotTable, false);</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216"> // run the snapshot</span>
-<span class="source-line-no">217</span><span id="line-217"> snapshotRegions(regionsAndLocations);</span>
-<span class="source-line-no">218</span><span id="line-218"> monitor.rethrowException();</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220"> // flush the in-memory state, and write the single manifest</span>
-<span class="source-line-no">221</span><span id="line-221"> status.setStatus("Consolidate snapshot: " + snapshot.getName());</span>
-<span class="source-line-no">222</span><span id="line-222"> snapshotManifest.consolidate();</span>
-<span class="source-line-no">223</span><span id="line-223"></span>
-<span class="source-line-no">224</span><span id="line-224"> // verify the snapshot is valid</span>
-<span class="source-line-no">225</span><span id="line-225"> status.setStatus("Verifying snapshot: " + snapshot.getName());</span>
-<span class="source-line-no">226</span><span id="line-226"> verifier.verifySnapshot(workingDir, true);</span>
-<span class="source-line-no">227</span><span id="line-227"></span>
-<span class="source-line-no">228</span><span id="line-228"> // complete the snapshot, atomically moving from tmp to .snapshot dir.</span>
-<span class="source-line-no">229</span><span id="line-229"> SnapshotDescriptionUtils.completeSnapshot(this.snapshotDir, this.workingDir, this.rootFs,</span>
-<span class="source-line-no">230</span><span id="line-230"> this.workingDirFs, this.conf);</span>
-<span class="source-line-no">231</span><span id="line-231"> finished = true;</span>
-<span class="source-line-no">232</span><span id="line-232"> msg = "Snapshot " + snapshot.getName() + " of table " + snapshotTable + " completed";</span>
-<span class="source-line-no">233</span><span id="line-233"> status.markComplete(msg);</span>
-<span class="source-line-no">234</span><span id="line-234"> LOG.info(msg);</span>
-<span class="source-line-no">235</span><span id="line-235"> metricsSnapshot.addSnapshot(status.getCompletionTimestamp() - status.getStartTime());</span>
-<span class="source-line-no">236</span><span id="line-236"> if (master.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">237</span><span id="line-237"> master.getMasterCoprocessorHost()</span>
-<span class="source-line-no">238</span><span id="line-238"> .postCompletedSnapshotAction(ProtobufUtil.createSnapshotDesc(snapshot), this.htd);</span>
-<span class="source-line-no">239</span><span id="line-239"> }</span>
-<span class="source-line-no">240</span><span id="line-240"> } catch (Exception e) { // FindBugs: REC_CATCH_EXCEPTION</span>
-<span class="source-line-no">241</span><span id="line-241"> status.abort("Failed to complete snapshot " + snapshot.getName() + " on table "</span>
-<span class="source-line-no">242</span><span id="line-242"> + snapshotTable + " because " + e.getMessage());</span>
-<span class="source-line-no">243</span><span id="line-243"> String reason = "Failed taking snapshot " + ClientSnapshotDescriptionUtils.toString(snapshot)</span>
-<span class="source-line-no">244</span><span id="line-244"> + " due to exception:" + e.getMessage();</span>
-<span class="source-line-no">245</span><span id="line-245"> LOG.error(reason, e);</span>
-<span class="source-line-no">246</span><span id="line-246"> ForeignException ee = new ForeignException(reason, e);</span>
-<span class="source-line-no">247</span><span id="line-247"> monitor.receive(ee);</span>
-<span class="source-line-no">248</span><span id="line-248"> // need to mark this completed to close off and allow cleanup to happen.</span>
-<span class="source-line-no">249</span><span id="line-249"> cancel(reason);</span>
-<span class="source-line-no">250</span><span id="line-250"> } finally {</span>
-<span class="source-line-no">251</span><span id="line-251"> LOG.debug("Launching cleanup of working dir:" + workingDir);</span>
-<span class="source-line-no">252</span><span id="line-252"> try {</span>
-<span class="source-line-no">253</span><span id="line-253"> // if the working dir is still present, the snapshot has failed. it is present we delete</span>
-<span class="source-line-no">254</span><span id="line-254"> // it.</span>
-<span class="source-line-no">255</span><span id="line-255"> if (workingDirFs.exists(workingDir) && !workingDirFs.delete(workingDir, true)) {</span>
-<span class="source-line-no">256</span><span id="line-256"> LOG.error("Couldn't delete snapshot working directory: {}", workingDir);</span>
-<span class="source-line-no">257</span><span id="line-257"> }</span>
-<span class="source-line-no">258</span><span id="line-258"> } catch (IOException e) {</span>
-<span class="source-line-no">259</span><span id="line-259"> LOG.error("Couldn't get or delete snapshot working directory: {}", workingDir, e);</span>
-<span class="source-line-no">260</span><span id="line-260"> }</span>
-<span class="source-line-no">261</span><span id="line-261"> if (LOG.isDebugEnabled()) {</span>
-<span class="source-line-no">262</span><span id="line-262"> LOG.debug("Table snapshot journal : \n" + status.prettyPrintJournal());</span>
-<span class="source-line-no">263</span><span id="line-263"> }</span>
-<span class="source-line-no">264</span><span id="line-264"> tableLockToRelease.release();</span>
-<span class="source-line-no">265</span><span id="line-265"> }</span>
-<span class="source-line-no">266</span><span id="line-266"> }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268"> /**</span>
-<span class="source-line-no">269</span><span id="line-269"> * When taking snapshot, first we must acquire the exclusive table lock to confirm that there are</span>
-<span class="source-line-no">270</span><span id="line-270"> * no ongoing merge/split procedures. But later, we should try our best to release the exclusive</span>
-<span class="source-line-no">271</span><span id="line-271"> * lock as this may hurt the availability, because we need to hold the shared lock when assigning</span>
-<span class="source-line-no">272</span><span id="line-272"> * regions.</span>
-<span class="source-line-no">273</span><span id="line-273"> * <p/></span>
-<span class="source-line-no">274</span><span id="line-274"> * See HBASE-21480 for more details.</span>
-<span class="source-line-no">275</span><span id="line-275"> */</span>
-<span class="source-line-no">276</span><span id="line-276"> protected abstract boolean downgradeToSharedTableLock();</span>
+<span class="source-line-no">104</span><span id="line-104"> protected TableDescriptor htd;</span>
+<span class="source-line-no">105</span><span id="line-105"></span>
+<span class="source-line-no">106</span><span id="line-106"> /**</span>
+<span class="source-line-no">107</span><span id="line-107"> * @param snapshot descriptor of the snapshot to take</span>
+<span class="source-line-no">108</span><span id="line-108"> * @param masterServices master services provider</span>
+<span class="source-line-no">109</span><span id="line-109"> * @throws IllegalArgumentException if the working snapshot directory set from the configuration</span>
+<span class="source-line-no">110</span><span id="line-110"> * is the same as the completed snapshot directory</span>
+<span class="source-line-no">111</span><span id="line-111"> * @throws IOException if the file system of the working snapshot directory cannot be</span>
+<span class="source-line-no">112</span><span id="line-112"> * determined</span>
+<span class="source-line-no">113</span><span id="line-113"> */</span>
+<span class="source-line-no">114</span><span id="line-114"> public TakeSnapshotHandler(SnapshotDescription snapshot, final MasterServices masterServices,</span>
+<span class="source-line-no">115</span><span id="line-115"> final SnapshotManager snapshotManager) throws IOException {</span>
+<span class="source-line-no">116</span><span id="line-116"> super(masterServices, EventType.C_M_SNAPSHOT_TABLE);</span>
+<span class="source-line-no">117</span><span id="line-117"> assert snapshot != null : "SnapshotDescription must not be nul1";</span>
+<span class="source-line-no">118</span><span id="line-118"> assert masterServices != null : "MasterServices must not be nul1";</span>
+<span class="source-line-no">119</span><span id="line-119"> this.master = masterServices;</span>
+<span class="source-line-no">120</span><span id="line-120"> this.conf = this.master.getConfiguration();</span>
+<span class="source-line-no">121</span><span id="line-121"> this.rootDir = this.master.getMasterFileSystem().getRootDir();</span>
+<span class="source-line-no">122</span><span id="line-122"> this.workingDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(snapshot, rootDir, conf);</span>
+<span class="source-line-no">123</span><span id="line-123"> Preconditions.checkArgument(</span>
+<span class="source-line-no">124</span><span id="line-124"> !SnapshotDescriptionUtils.isSubDirectoryOf(workingDir, rootDir)</span>
+<span class="source-line-no">125</span><span id="line-125"> || SnapshotDescriptionUtils.isWithinDefaultWorkingDir(workingDir, conf),</span>
+<span class="source-line-no">126</span><span id="line-126"> "The working directory " + workingDir + " cannot be in the root directory unless it is "</span>
+<span class="source-line-no">127</span><span id="line-127"> + "within the default working directory");</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129"> this.snapshot = snapshot;</span>
+<span class="source-line-no">130</span><span id="line-130"> this.snapshotManager = snapshotManager;</span>
+<span class="source-line-no">131</span><span id="line-131"> this.snapshotTable = TableName.valueOf(snapshot.getTable());</span>
+<span class="source-line-no">132</span><span id="line-132"> this.rootFs = this.master.getMasterFileSystem().getFileSystem();</span>
+<span class="source-line-no">133</span><span id="line-133"> this.snapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshot, rootDir);</span>
+<span class="source-line-no">134</span><span id="line-134"> this.workingDirFs = this.workingDir.getFileSystem(this.conf);</span>
+<span class="source-line-no">135</span><span id="line-135"> this.monitor = new ForeignExceptionDispatcher(snapshot.getName());</span>
+<span class="source-line-no">136</span><span id="line-136"></span>
+<span class="source-line-no">137</span><span id="line-137"> this.tableLock = master.getLockManager().createMasterLock(snapshotTable, LockType.EXCLUSIVE,</span>
+<span class="source-line-no">138</span><span id="line-138"> this.getClass().getName() + ": take snapshot " + snapshot.getName());</span>
+<span class="source-line-no">139</span><span id="line-139"></span>
+<span class="source-line-no">140</span><span id="line-140"> // prepare the verify</span>
+<span class="source-line-no">141</span><span id="line-141"> this.verifier = new MasterSnapshotVerifier(masterServices, snapshot, workingDirFs);</span>
+<span class="source-line-no">142</span><span id="line-142"> // update the running tasks</span>
+<span class="source-line-no">143</span><span id="line-143"> this.status = TaskMonitor.get().createStatus(</span>
+<span class="source-line-no">144</span><span id="line-144"> "Taking " + snapshot.getType() + " snapshot on table: " + snapshotTable, false, true);</span>
+<span class="source-line-no">145</span><span id="line-145"> this.snapshotManifest =</span>
+<span class="source-line-no">146</span><span id="line-146"> SnapshotManifest.create(conf, rootFs, workingDir, snapshot, monitor, status);</span>
+<span class="source-line-no">147</span><span id="line-147"> this.lockAcquireTimeoutMs = conf.getLong(HBASE_SNAPSHOT_MASTER_LOCK_ACQUIRE_TIMEOUT,</span>
+<span class="source-line-no">148</span><span id="line-148"> conf.getLong(HBASE_RPC_TIMEOUT_KEY, DEFAULT_HBASE_RPC_TIMEOUT));</span>
+<span class="source-line-no">149</span><span id="line-149"> }</span>
+<span class="source-line-no">150</span><span id="line-150"></span>
+<span class="source-line-no">151</span><span id="line-151"> private TableDescriptor loadTableDescriptor() throws IOException {</span>
+<span class="source-line-no">152</span><span id="line-152"> TableDescriptor htd = this.master.getTableDescriptors().get(snapshotTable);</span>
+<span class="source-line-no">153</span><span id="line-153"> if (htd == null) {</span>
+<span class="source-line-no">154</span><span id="line-154"> throw new IOException("TableDescriptor missing for " + snapshotTable);</span>
+<span class="source-line-no">155</span><span id="line-155"> }</span>
+<span class="source-line-no">156</span><span id="line-156"> if (htd.getMaxFileSize() == -1 && this.snapshot.getMaxFileSize() > 0) {</span>
+<span class="source-line-no">157</span><span id="line-157"> htd = TableDescriptorBuilder.newBuilder(htd).setValue(TableDescriptorBuilder.MAX_FILESIZE,</span>
+<span class="source-line-no">158</span><span id="line-158"> Long.toString(this.snapshot.getMaxFileSize())).build();</span>
+<span class="source-line-no">159</span><span id="line-159"> }</span>
+<span class="source-line-no">160</span><span id="line-160"> return htd;</span>
+<span class="source-line-no">161</span><span id="line-161"> }</span>
+<span class="source-line-no">162</span><span id="line-162"></span>
+<span class="source-line-no">163</span><span id="line-163"> @Override</span>
+<span class="source-line-no">164</span><span id="line-164"> public TakeSnapshotHandler prepare() throws Exception {</span>
+<span class="source-line-no">165</span><span id="line-165"> super.prepare();</span>
+<span class="source-line-no">166</span><span id="line-166"> // after this, you should ensure to release this lock in case of exceptions</span>
+<span class="source-line-no">167</span><span id="line-167"> if (this.tableLock.tryAcquire(this.lockAcquireTimeoutMs)) {</span>
+<span class="source-line-no">168</span><span id="line-168"> try {</span>
+<span class="source-line-no">169</span><span id="line-169"> this.htd = loadTableDescriptor(); // check that .tableinfo is present</span>
+<span class="source-line-no">170</span><span id="line-170"> } catch (Exception e) {</span>
+<span class="source-line-no">171</span><span id="line-171"> this.tableLock.release();</span>
+<span class="source-line-no">172</span><span id="line-172"> throw e;</span>
+<span class="source-line-no">173</span><span id="line-173"> }</span>
+<span class="source-line-no">174</span><span id="line-174"> } else {</span>
+<span class="source-line-no">175</span><span id="line-175"> LOG.error("Master lock could not be acquired in {} ms", lockAcquireTimeoutMs);</span>
+<span class="source-line-no">176</span><span id="line-176"> throw new DoNotRetryIOException("Master lock could not be acquired");</span>
+<span class="source-line-no">177</span><span id="line-177"> }</span>
+<span class="source-line-no">178</span><span id="line-178"> return this;</span>
+<span class="source-line-no">179</span><span id="line-179"> }</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181"> /**</span>
+<span class="source-line-no">182</span><span id="line-182"> * Execute the core common portions of taking a snapshot. The {@link #snapshotRegions(List)} call</span>
+<span class="source-line-no">183</span><span id="line-183"> * should get implemented for each snapshot flavor.</span>
+<span class="source-line-no">184</span><span id="line-184"> */</span>
+<span class="source-line-no">185</span><span id="line-185"> @Override</span>
+<span class="source-line-no">186</span><span id="line-186"> @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "REC_CATCH_EXCEPTION",</span>
+<span class="source-line-no">187</span><span id="line-187"> justification = "Intentional")</span>
+<span class="source-line-no">188</span><span id="line-188"> public void process() {</span>
+<span class="source-line-no">189</span><span id="line-189"> String msg = "Running " + snapshot.getType() + " table snapshot " + snapshot.getName() + " "</span>
+<span class="source-line-no">190</span><span id="line-190"> + eventType + " on table " + snapshotTable;</span>
+<span class="source-line-no">191</span><span id="line-191"> LOG.info(msg);</span>
+<span class="source-line-no">192</span><span id="line-192"> MasterLock tableLockToRelease = this.tableLock;</span>
+<span class="source-line-no">193</span><span id="line-193"> status.setStatus(msg);</span>
+<span class="source-line-no">194</span><span id="line-194"> try {</span>
+<span class="source-line-no">195</span><span id="line-195"> if (downgradeToSharedTableLock()) {</span>
+<span class="source-line-no">196</span><span id="line-196"> // release the exclusive lock and hold the shared lock instead</span>
+<span class="source-line-no">197</span><span id="line-197"> tableLockToRelease = master.getLockManager().createMasterLock(snapshotTable,</span>
+<span class="source-line-no">198</span><span id="line-198"> LockType.SHARED, this.getClass().getName() + ": take snapshot " + snapshot.getName());</span>
+<span class="source-line-no">199</span><span id="line-199"> tableLock.release();</span>
+<span class="source-line-no">200</span><span id="line-200"> boolean isTableLockAcquired = tableLockToRelease.tryAcquire(this.lockAcquireTimeoutMs);</span>
+<span class="source-line-no">201</span><span id="line-201"> if (!isTableLockAcquired) {</span>
+<span class="source-line-no">202</span><span id="line-202"> LOG.error("Could not acquire shared lock on table {} in {} ms", snapshotTable,</span>
+<span class="source-line-no">203</span><span id="line-203"> lockAcquireTimeoutMs);</span>
+<span class="source-line-no">204</span><span id="line-204"> throw new IOException("Could not acquire shared lock on table " + snapshotTable);</span>
+<span class="source-line-no">205</span><span id="line-205"> }</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"> // If regions move after this meta scan, the region specific snapshot should fail, triggering</span>
+<span class="source-line-no">208</span><span id="line-208"> // an external exception that gets captured here.</span>
+<span class="source-line-no">209</span><span id="line-209"></span>
+<span class="source-line-no">210</span><span id="line-210"> // write down the snapshot info in the working directory</span>
+<span class="source-line-no">211</span><span id="line-211"> SnapshotDescriptionUtils.writeSnapshotInfo(snapshot, workingDir, workingDirFs);</span>
+<span class="source-line-no">212</span><span id="line-212"> snapshotManifest.addTableDescriptor(this.htd);</span>
+<span class="source-line-no">213</span><span id="line-213"> monitor.rethrowException();</span>
+<span class="source-line-no">214</span><span id="line-214"></span>
+<span class="source-line-no">215</span><span id="line-215"> List<Pair<RegionInfo, ServerName>> regionsAndLocations =</span>
+<span class="source-line-no">216</span><span id="line-216"> master.getAssignmentManager().getTableRegionsAndLocations(snapshotTable, false);</span>
+<span class="source-line-no">217</span><span id="line-217"></span>
+<span class="source-line-no">218</span><span id="line-218"> // run the snapshot</span>
+<span class="source-line-no">219</span><span id="line-219"> snapshotRegions(regionsAndLocations);</span>
+<span class="source-line-no">220</span><span id="line-220"> monitor.rethrowException();</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222"> // flush the in-memory state, and write the single manifest</span>
+<span class="source-line-no">223</span><span id="line-223"> status.setStatus("Consolidate snapshot: " + snapshot.getName());</span>
+<span class="source-line-no">224</span><span id="line-224"> snapshotManifest.consolidate();</span>
+<span class="source-line-no">225</span><span id="line-225"></span>
+<span class="source-line-no">226</span><span id="line-226"> // verify the snapshot is valid</span>
+<span class="source-line-no">227</span><span id="line-227"> status.setStatus("Verifying snapshot: " + snapshot.getName());</span>
+<span class="source-line-no">228</span><span id="line-228"> verifier.verifySnapshot(workingDir, true);</span>
+<span class="source-line-no">229</span><span id="line-229"></span>
+<span class="source-line-no">230</span><span id="line-230"> // HBASE-29296 check snapshot is not expired</span>
+<span class="source-line-no">231</span><span id="line-231"> if (</span>
+<span class="source-line-no">232</span><span id="line-232"> SnapshotDescriptionUtils.isExpiredSnapshot(snapshot.getTtl(), snapshot.getCreationTime(),</span>
+<span class="source-line-no">233</span><span id="line-233"> EnvironmentEdgeManager.currentTime())</span>
+<span class="source-line-no">234</span><span id="line-234"> ) {</span>
+<span class="source-line-no">235</span><span id="line-235"> throw new SnapshotTTLExpiredException(ProtobufUtil.createSnapshotDesc(snapshot));</span>
+<span class="source-line-no">236</span><span id="line-236"> }</span>
+<span class="source-line-no">237</span><span id="line-237"></span>
+<span class="source-line-no">238</span><span id="line-238"> // complete the snapshot, atomically moving from tmp to .snapshot dir.</span>
+<span class="source-line-no">239</span><span id="line-239"> SnapshotDescriptionUtils.completeSnapshot(this.snapshotDir, this.workingDir, this.rootFs,</span>
+<span class="source-line-no">240</span><span id="line-240"> this.workingDirFs, this.conf);</span>
+<span class="source-line-no">241</span><span id="line-241"> finished = true;</span>
+<span class="source-line-no">242</span><span id="line-242"> msg = "Snapshot " + snapshot.getName() + " of table " + snapshotTable + " completed";</span>
+<span class="source-line-no">243</span><span id="line-243"> status.markComplete(msg);</span>
+<span class="source-line-no">244</span><span id="line-244"> LOG.info(msg);</span>
+<span class="source-line-no">245</span><span id="line-245"> metricsSnapshot.addSnapshot(status.getCompletionTimestamp() - status.getStartTime());</span>
+<span class="source-line-no">246</span><span id="line-246"> if (master.getMasterCoprocessorHost() != null) {</span>
+<span class="source-line-no">247</span><span id="line-247"> master.getMasterCoprocessorHost()</span>
+<span class="source-line-no">248</span><span id="line-248"> .postCompletedSnapshotAction(ProtobufUtil.createSnapshotDesc(snapshot), this.htd);</span>
+<span class="source-line-no">249</span><span id="line-249"> }</span>
+<span class="source-line-no">250</span><span id="line-250"> } catch (Exception e) { // FindBugs: REC_CATCH_EXCEPTION</span>
+<span class="source-line-no">251</span><span id="line-251"> status.abort("Failed to complete snapshot " + snapshot.getName() + " on table "</span>
+<span class="source-line-no">252</span><span id="line-252"> + snapshotTable + " because " + e.getMessage());</span>
+<span class="source-line-no">253</span><span id="line-253"> String reason = "Failed taking snapshot " + ClientSnapshotDescriptionUtils.toString(snapshot)</span>
+<span class="source-line-no">254</span><span id="line-254"> + " due to exception:" + e.getMessage();</span>
+<span class="source-line-no">255</span><span id="line-255"> LOG.error(reason, e);</span>
+<span class="source-line-no">256</span><span id="line-256"> ForeignException ee = new ForeignException(reason, e);</span>
+<span class="source-line-no">257</span><span id="line-257"> monitor.receive(ee);</span>
+<span class="source-line-no">258</span><span id="line-258"> // need to mark this completed to close off and allow cleanup to happen.</span>
+<span class="source-line-no">259</span><span id="line-259"> cancel(reason);</span>
+<span class="source-line-no">260</span><span id="line-260"> } finally {</span>
+<span class="source-line-no">261</span><span id="line-261"> LOG.debug("Launching cleanup of working dir:" + workingDir);</span>
+<span class="source-line-no">262</span><span id="line-262"> try {</span>
+<span class="source-line-no">263</span><span id="line-263"> // if the working dir is still present, the snapshot has failed. it is present we delete</span>
+<span class="source-line-no">264</span><span id="line-264"> // it.</span>
+<span class="source-line-no">265</span><span id="line-265"> if (workingDirFs.exists(workingDir) && !workingDirFs.delete(workingDir, true)) {</span>
+<span class="source-line-no">266</span><span id="line-266"> LOG.error("Couldn't delete snapshot working directory: {}", workingDir);</span>
+<span class="source-line-no">267</span><span id="line-267"> }</span>
+<span class="source-line-no">268</span><span id="line-268"> } catch (IOException e) {</span>
+<span class="source-line-no">269</span><span id="line-269"> LOG.error("Couldn't get or delete snapshot working directory: {}", workingDir, e);</span>
+<span class="source-line-no">270</span><span id="line-270"> }</span>
+<span class="source-line-no">271</span><span id="line-271"> if (LOG.isDebugEnabled()) {</span>
+<span class="source-line-no">272</span><span id="line-272"> LOG.debug("Table snapshot journal : \n" + status.prettyPrintJournal());</span>
+<span class="source-line-no">273</span><span id="line-273"> }</span>
+<span class="source-line-no">274</span><span id="line-274"> tableLockToRelease.release();</span>
+<span class="source-line-no">275</span><span id="line-275"> }</span>
+<span class="source-line-no">276</span><span id="line-276"> }</span>
<span class="source-line-no">277</span><span id="line-277"></span>
<span class="source-line-no">278</span><span id="line-278"> /**</span>
-<span class="source-line-no">279</span><span id="line-279"> * Snapshot the specified regions</span>
-<span class="source-line-no">280</span><span id="line-280"> */</span>
-<span class="source-line-no">281</span><span id="line-281"> protected abstract void snapshotRegions(List<Pair<RegionInfo, ServerName>> regions)</span>
-<span class="source-line-no">282</span><span id="line-282"> throws IOException, KeeperException;</span>
-<span class="source-line-no">283</span><span id="line-283"></span>
-<span class="source-line-no">284</span><span id="line-284"> /**</span>
-<span class="source-line-no">285</span><span id="line-285"> * Take a snapshot of the specified disabled region</span>
-<span class="source-line-no">286</span><span id="line-286"> */</span>
-<span class="source-line-no">287</span><span id="line-287"> protected void snapshotDisabledRegion(final RegionInfo regionInfo) throws IOException {</span>
-<span class="source-line-no">288</span><span id="line-288"> snapshotManifest.addRegion(CommonFSUtils.getTableDir(rootDir, snapshotTable), regionInfo);</span>
-<span class="source-line-no">289</span><span id="line-289"> monitor.rethrowException();</span>
-<span class="source-line-no">290</span><span id="line-290"> status.setStatus("Completed referencing HFiles for offline region " + regionInfo.toString()</span>
-<span class="source-line-no">291</span><span id="line-291"> + " of table: " + snapshotTable);</span>
-<span class="source-line-no">292</span><span id="line-292"> }</span>
+<span class="source-line-no">279</span><span id="line-279"> * When taking snapshot, first we must acquire the exclusive table lock to confirm that there are</span>
+<span class="source-line-no">280</span><span id="line-280"> * no ongoing merge/split procedures. But later, we should try our best to release the exclusive</span>
+<span class="source-line-no">281</span><span id="line-281"> * lock as this may hurt the availability, because we need to hold the shared lock when assigning</span>
+<span class="source-line-no">282</span><span id="line-282"> * regions.</span>
+<span class="source-line-no">283</span><span id="line-283"> * <p/></span>
+<span class="source-line-no">284</span><span id="line-284"> * See HBASE-21480 for more details.</span>
+<span class="source-line-no">285</span><span id="line-285"> */</span>
+<span class="source-line-no">286</span><span id="line-286"> protected abstract boolean downgradeToSharedTableLock();</span>
+<span class="source-line-no">287</span><span id="line-287"></span>
+<span class="source-line-no">288</span><span id="line-288"> /**</span>
+<span class="source-line-no">289</span><span id="line-289"> * Snapshot the specified regions</span>
+<span class="source-line-no">290</span><span id="line-290"> */</span>
+<span class="source-line-no">291</span><span id="line-291"> protected abstract void snapshotRegions(List<Pair<RegionInfo, ServerName>> regions)</span>
+<span class="source-line-no">292</span><span id="line-292"> throws IOException, KeeperException;</span>
<span class="source-line-no">293</span><span id="line-293"></span>
-<span class="source-line-no">294</span><span id="line-294"> @Override</span>
-<span class="source-line-no">295</span><span id="line-295"> public void cancel(String why) {</span>
-<span class="source-line-no">296</span><span id="line-296"> if (finished) return;</span>
-<span class="source-line-no">297</span><span id="line-297"></span>
-<span class="source-line-no">298</span><span id="line-298"> this.finished = true;</span>
-<span class="source-line-no">299</span><span id="line-299"> LOG.info("Stop taking snapshot=" + ClientSnapshotDescriptionUtils.toString(snapshot)</span>
-<span class="source-line-no">300</span><span id="line-300"> + " because: " + why);</span>
-<span class="source-line-no">301</span><span id="line-301"> CancellationException ce = new CancellationException(why);</span>
-<span class="source-line-no">302</span><span id="line-302"> monitor.receive(new ForeignException(master.getServerName().toString(), ce));</span>
-<span class="source-line-no">303</span><span id="line-303"> }</span>
-<span class="source-line-no">304</span><span id="line-304"></span>
-<span class="source-line-no">305</span><span id="line-305"> @Override</span>
-<span class="source-line-no">306</span><span id="line-306"> public boolean isFinished() {</span>
-<span class="source-line-no">307</span><span id="line-307"> return finished;</span>
-<span class="source-line-no">308</span><span id="line-308"> }</span>
-<span class="source-line-no">309</span><span id="line-309"></span>
-<span class="source-line-no">310</span><span id="line-310"> @Override</span>
-<span class="source-line-no">311</span><span id="line-311"> public long getCompletionTimestamp() {</span>
-<span class="source-line-no">312</span><span id="line-312"> return this.status.getCompletionTimestamp();</span>
+<span class="source-line-no">294</span><span id="line-294"> /**</span>
+<span class="source-line-no">295</span><span id="line-295"> * Take a snapshot of the specified disabled region</span>
+<span class="source-line-no">296</span><span id="line-296"> */</span>
+<span class="source-line-no">297</span><span id="line-297"> protected void snapshotDisabledRegion(final RegionInfo regionInfo) throws IOException {</span>
+<span class="source-line-no">298</span><span id="line-298"> snapshotManifest.addRegion(CommonFSUtils.getTableDir(rootDir, snapshotTable), regionInfo);</span>
+<span class="source-line-no">299</span><span id="line-299"> monitor.rethrowException();</span>
+<span class="source-line-no">300</span><span id="line-300"> status.setStatus("Completed referencing HFiles for offline region " + regionInfo.toString()</span>
+<span class="source-line-no">301</span><span id="line-301"> + " of table: " + snapshotTable);</span>
+<span class="source-line-no">302</span><span id="line-302"> }</span>
+<span class="source-line-no">303</span><span id="line-303"></span>
+<span class="source-line-no">304</span><span id="line-304"> @Override</span>
+<span class="source-line-no">305</span><span id="line-305"> public void cancel(String why) {</span>
+<span class="source-line-no">306</span><span id="line-306"> if (finished) return;</span>
+<span class="source-line-no">307</span><span id="line-307"></span>
+<span class="source-line-no">308</span><span id="line-308"> this.finished = true;</span>
+<span class="source-line-no">309</span><span id="line-309"> LOG.info("Stop taking snapshot=" + ClientSnapshotDescriptionUtils.toString(snapshot)</span>
+<span class="source-line-no">310</span><span id="line-310"> + " because: " + why);</span>
+<span class="source-line-no">311</span><span id="line-311"> CancellationException ce = new CancellationException(why);</span>
+<span class="source-line-no">312</span><span id="line-312"> monitor.receive(new ForeignException(master.getServerName().toString(), ce));</span>
<span class="source-line-no">313</span><span id="line-313"> }</span>
<span class="source-line-no">314</span><span id="line-314"></span>
<span class="source-line-no">315</span><span id="line-315"> @Override</span>
-<span class="source-line-no">316</span><span id="line-316"> public SnapshotDescription getSnapshot() {</span>
-<span class="source-line-no">317</span><span id="line-317"> return snapshot;</span>
+<span class="source-line-no">316</span><span id="line-316"> public boolean isFinished() {</span>
+<span class="source-line-no">317</span><span id="line-317"> return finished;</span>
<span class="source-line-no">318</span><span id="line-318"> }</span>
<span class="source-line-no">319</span><span id="line-319"></span>
<span class="source-line-no">320</span><span id="line-320"> @Override</span>
-<span class="source-line-no">321</span><span id="line-321"> public ForeignException getExceptionIfFailed() {</span>
-<span class="source-line-no">322</span><span id="line-322"> return monitor.getException();</span>
+<span class="source-line-no">321</span><span id="line-321"> public long getCompletionTimestamp() {</span>
+<span class="source-line-no">322</span><span id="line-322"> return this.status.getCompletionTimestamp();</span>
<span class="source-line-no">323</span><span id="line-323"> }</span>
<span class="source-line-no">324</span><span id="line-324"></span>
<span class="source-line-no">325</span><span id="line-325"> @Override</span>
-<span class="source-line-no">326</span><span id="line-326"> public void rethrowExceptionIfFailed() throws ForeignException {</span>
-<span class="source-line-no">327</span><span id="line-327"> monitor.rethrowException();</span>
+<span class="source-line-no">326</span><span id="line-326"> public SnapshotDescription getSnapshot() {</span>
+<span class="source-line-no">327</span><span id="line-327"> return snapshot;</span>
<span class="source-line-no">328</span><span id="line-328"> }</span>
<span class="source-line-no">329</span><span id="line-329"></span>
<span class="source-line-no">330</span><span id="line-330"> @Override</span>
-<span class="source-line-no">331</span><span id="line-331"> public void rethrowException() throws ForeignException {</span>
-<span class="source-line-no">332</span><span id="line-332"> monitor.rethrowException();</span>
+<span class="source-line-no">331</span><span id="line-331"> public ForeignException getExceptionIfFailed() {</span>
+<span class="source-line-no">332</span><span id="line-332"> return monitor.getException();</span>
<span class="source-line-no">333</span><span id="line-333"> }</span>
<span class="source-line-no">334</span><span id="line-334"></span>
<span class="source-line-no">335</span><span id="line-335"> @Override</span>
-<span class="source-line-no">336</span><span id="line-336"> public boolean hasException() {</span>
-<span class="source-line-no">337</span><span id="line-337"> return monitor.hasException();</span>
+<span class="source-line-no">336</span><span id="line-336"> public void rethrowExceptionIfFailed() throws ForeignException {</span>
+<span class="source-line-no">337</span><span id="line-337"> monitor.rethrowException();</span>
<span class="source-line-no">338</span><span id="line-338"> }</span>
<span class="source-line-no">339</span><span id="line-339"></span>
<span class="source-line-no">340</span><span id="line-340"> @Override</span>
-<span class="source-line-no">341</span><span id="line-341"> public ForeignException getException() {</span>
-<span class="source-line-no">342</span><span id="line-342"> return monitor.getException();</span>
+<span class="source-line-no">341</span><span id="line-341"> public void rethrowException() throws ForeignException {</span>
+<span class="source-line-no">342</span><span id="line-342"> monitor.rethrowException();</span>
<span class="source-line-no">343</span><span id="line-343"> }</span>
-<span class="source-line-no">344</span><span id="line-344">}</span>
+<span class="source-line-no">344</span><span id="line-344"></span>
+<span class="source-line-no">345</span><span id="line-345"> @Override</span>
+<span class="source-line-no">346</span><span id="line-346"> public boolean hasException() {</span>
+<span class="source-line-no">347</span><span id="line-347"> return monitor.hasException();</span>
+<span class="source-line-no">348</span><span id="line-348"> }</span>
+<span class="source-line-no">349</span><span id="line-349"></span>
+<span class="source-line-no">350</span><span id="line-350"> @Override</span>
+<span class="source-line-no">351</span><span id="line-351"> public ForeignException getException() {</span>
+<span class="source-line-no">352</span><span id="line-352"> return monitor.getException();</span>
+<span class="source-line-no">353</span><span id="line-353"> }</span>
+<span class="source-line-no">354</span><span id="line-354">}</span>
diff --git a/downloads.html b/downloads.html
index 4f121c1802b..44c6adf903a 100644
--- a/downloads.html
+++ b/downloads.html
@@ -422,7 +422,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index 5c0943e3ae5..9ca85456621 100644
--- a/export_control.html
+++ b/export_control.html
@@ -210,7 +210,7 @@ for more details.</p>
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index 2369ef80d50..b4f110ae6a1 100644
--- a/index.html
+++ b/index.html
@@ -283,7 +283,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-management.html b/issue-management.html
index b0d9071eca4..6b68b12be15 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -181,7 +181,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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/licenses.html b/licenses.html
index aa0f997dd40..53c33c60d46 100644
--- a/licenses.html
+++ b/licenses.html
@@ -383,7 +383,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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/mailing-lists.html b/mailing-lists.html
index 620e5364747..cfce530ae2d 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -228,7 +228,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index 9e78c8cff69..027b23336eb 100644
--- a/metrics.html
+++ b/metrics.html
@@ -332,7 +332,7 @@ export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index 054fa64f7e2..c6d8a1fc25f 100644
--- a/old_news.html
+++ b/old_news.html
@@ -329,7 +329,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index 7bad883625b..d96d10f38c5 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -338,7 +338,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index 7a1dd576e06..86236b7c748 100644
--- a/plugins.html
+++ b/plugins.html
@@ -276,7 +276,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index f21a3a9a52e..3684fefd635 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -671,7 +671,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index 627d9ec3d58..2e3e4c2e048 100644
--- a/project-info.html
+++ b/project-info.html
@@ -225,7 +225,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index 9bc9e191681..e9d5f03d9c6 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -198,7 +198,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index c8169509288..245942bf739 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -187,7 +187,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index 3b9448aa4db..a92ffdaed21 100644
--- a/replication.html
+++ b/replication.html
@@ -182,7 +182,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index eb8fec0c3fa..d3377e58a63 100644
--- a/resources.html
+++ b/resources.html
@@ -205,7 +205,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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/scm.html b/scm.html
index b2b184af4e2..c6049065e5b 100644
--- a/scm.html
+++ b/scm.html
@@ -189,7 +189,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index 88d588cd569..2e488cb23da 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -211,7 +211,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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/summary.html b/summary.html
index 89cfeab745a..d79ccec2bcd 100644
--- a/summary.html
+++ b/summary.html
@@ -222,7 +222,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index 3b6056b69e2..840c59861e9 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -401,7 +401,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team.html b/team.html
index ae132d91f20..44e621f6c55 100644
--- a/team.html
+++ b/team.html
@@ -856,7 +856,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-08-01
+ Last Published: 2025-08-05
</div>
</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/testapidocs/allclasses-index.html b/testapidocs/allclasses-index.html
index 95128a694e2..0c580be7417 100644
--- a/testapidocs/allclasses-index.html
+++ b/testapidocs/allclasses-index.html
@@ -1934,4235 +1934,4239 @@ loadScripts(document, 'script');</script>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupRepair.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupRepair</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupRestoreOnEmptyEnvironment.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupRestoreOnEmptyEnvironment</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupRestoreExpiry.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupRestoreExpiry</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupRestoreWithModifications.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupRestoreWithModifications</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupRestoreOnEmptyEnvironment.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupRestoreOnEmptyEnvironment</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupShowHistory.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupShowHistory</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupRestoreWithModifications.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupRestoreWithModifications</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupSmallTests.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupSmallTests</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupShowHistory.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupShowHistory</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupStatusProgress.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupStatusProgress</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupSmallTests.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupSmallTests</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupSystemTable</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupStatusProgress.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupStatusProgress</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupSystemTable</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test cases for backup system table API</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupUtils.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupUtils</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/replication/TestBadReplicationPeer.html" title="class or interface in org.apache.hadoop.hbase.client.replication" class="external-link">TestBadReplicationPeer</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestBackupUtils.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestBackupUtils</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestBalancer.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestBalancer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/replication/TestBadReplicationPeer.html" title="class or interface in org.apache.hadoop.hbase.client.replication" class="external-link">TestBadReplicationPeer</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestBalancer.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestBalancer</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test balancer with disabled table</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/metrics/TestBaseSourceImpl.html" title="class or interface in org.apache.hadoop.hbase.metrics" class="external-link">TestBaseSourceImpl</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/metrics/TestBaseSourceImpl.html" title="class or interface in org.apache.hadoop.hbase.metrics" class="external-link">TestBaseSourceImpl</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test of default BaseSource for hadoop 2</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBasicReadWriteWithDifferentConnectionRegistries.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBasicReadWriteWithDifferentConnectionRegistries</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBasicReadWriteWithDifferentConnectionRegistries.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBasicReadWriteWithDifferentConnectionRegistries</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test basic read write operation with different <a href="../apidocs/org/apache/hadoop/hbase/client/ConnectionRegistry.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>ConnectionRegistry</code></a> implementations.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBasicReadWriteWithDifferentConnectionRegistries.RegistryImpl.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBasicReadWriteWithDifferentConnectionRegistries.RegistryImpl</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab3"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBatchScanResultCache.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBatchScanResultCache</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestBCFKSFileLoader.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestBCFKSFileLoader</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBasicReadWriteWithDifferentConnectionRegistries.RegistryImpl.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBasicReadWriteWithDifferentConnectionRegistries.RegistryImpl</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab3"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBatchScanResultCache.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBatchScanResultCache</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestBCFKSFileLoader.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestBCFKSFileLoader</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">This file has been copied from the Apache ZooKeeper project.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestBigDecimalComparator.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestBigDecimalComparator</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/thrift/TestBindExceptionHandling.html" title="class or interface in org.apache.hadoop.hbase.thrift" class="external-link">TestBindExceptionHandling</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestBigDecimalComparator.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestBigDecimalComparator</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestBitComparator.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestBitComparator</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/thrift/TestBindExceptionHandling.html" title="class or interface in org.apache.hadoop.hbase.thrift" class="external-link">TestBindExceptionHandling</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestBitComparator.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestBitComparator</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for the bit comparator</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestBlockBytesScannedQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestBlockBytesScannedQuota</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockCacheReporting.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockCacheReporting</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestBlockBytesScannedQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestBlockBytesScannedQuota</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBlockEvictionFromClient</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockCacheReporting.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockCacheReporting</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBlockEvictionFromClient.CustomInnerRegionObserver</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBlockEvictionFromClient</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserverWrapper.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBlockEvictionFromClient.CustomInnerRegionObserverWrapper</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBlockEvictionFromClient.CustomInnerRegionObserver</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockEvictionOnRegionMovement.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockEvictionOnRegionMovement</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserverWrapper.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBlockEvictionFromClient.CustomInnerRegionObserverWrapper</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestBlockingIPC.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestBlockingIPC</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockEvictionOnRegionMovement.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockEvictionOnRegionMovement</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockIOUtils.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockIOUtils</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestBlockingIPC.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestBlockingIPC</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockIOUtils.MyFSDataInputStream.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockIOUtils.MyFSDataInputStream</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockIOUtils.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockIOUtils</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBlocksRead.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBlocksRead</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBlockIOUtils.MyFSDataInputStream.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBlockIOUtils.MyFSDataInputStream</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBlocksScanned.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBlocksScanned</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBlocksRead.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBlocksRead</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestBloomFilterChunk.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestBloomFilterChunk</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBlocksScanned.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBlocksScanned</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBloomFilterFaulty.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBloomFilterFaulty</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestBloomFilterChunk.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestBloomFilterChunk</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBloomFilterFaulty.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBloomFilterFaulty</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">A UT to make sure that everything is fine when we fail to load bloom filter.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBootstrapNodeManager.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBootstrapNodeManager</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBootstrapNodeUpdate.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBootstrapNodeUpdate</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBootstrapNodeManager.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBootstrapNodeManager</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBootstrapNodeUpdate.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBootstrapNodeUpdate</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure that we can update the bootstrap server from master to region server, and region server
could also contact each other to update the bootstrap nodes.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestBoundedPriorityBlockingQueue</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestBoundedRegionGroupingStrategy</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestBoundedPriorityBlockingQueue</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategyUsingWPETool.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestBoundedRegionGroupingStrategyUsingWPETool</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestBoundedRegionGroupingStrategy</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategyUsingWPETool.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestBoundedRegionGroupingStrategyUsingWPETool</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for TestBoundedRegionGroupingStrategy which use WALPerformanceEvaluation for WAL data
creation.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBrokenStoreFileCleaner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBrokenStoreFileCleaner</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestBufferChain.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestBufferChain</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBrokenStoreFileCleaner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBrokenStoreFileCleaner</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestBufferedDataBlockEncoder.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestBufferedDataBlockEncoder</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestBufferChain.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestBufferChain</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBufferedMutator.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBufferedMutator</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestBufferedDataBlockEncoder.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestBufferedDataBlockEncoder</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBufferedMutatorOverAsyncBufferedMutator.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBufferedMutatorOverAsyncBufferedMutator</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBufferedMutator.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBufferedMutator</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBufferedMutatorParams.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBufferedMutatorParams</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBufferedMutatorOverAsyncBufferedMutator.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBufferedMutatorOverAsyncBufferedMutator</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoad.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoad</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestBufferedMutatorParams.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestBufferedMutatorParams</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoad.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoad</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">This class attempts to unit test bulk HLog loading.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkloadBase.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkloadBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/TestBulkLoadCheckingViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link">TestBulkLoadCheckingViolationPolicyEnforcement</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkloadBase.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkloadBase</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoadReplication.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoadReplication</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/TestBulkLoadCheckingViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link">TestBulkLoadCheckingViolationPolicyEnforcement</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoadReplication.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoadReplication</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Integration test for bulk load replication.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoadReplication.BulkReplicationTestObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoadReplication.BulkReplicationTestObserver</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoadReplicationHFileRefs.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoadReplicationHFileRefs</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoadReplication.BulkReplicationTestObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoadReplication.BulkReplicationTestObserver</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBuffAllocator.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBuffAllocator</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBulkLoadReplicationHFileRefs.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBulkLoadReplicationHFileRefs</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBuffAllocatorLeakDetection.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBuffAllocatorLeakDetection</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBuffAllocator.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBuffAllocator</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteBufferArray.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteBufferArray</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBuffAllocatorLeakDetection.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBuffAllocatorLeakDetection</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestByteBufferKeyValue.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestByteBufferKeyValue</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteBufferArray.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteBufferArray</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBufferListOutputStream.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBufferListOutputStream</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestByteBufferKeyValue.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestByteBufferKeyValue</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBufferOutputStream.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBufferOutputStream</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBufferListOutputStream.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBufferListOutputStream</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteBufferUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteBufferUtils</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestByteBufferOutputStream.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestByteBufferOutputStream</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteBuffUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteBuffUtils</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteBufferUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteBufferUtils</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteRangeUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteRangeUtils</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteBuffUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteBuffUtils</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteRangeWithKVSerialization.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteRangeWithKVSerialization</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteRangeUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteRangeUtils</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestBytes.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestBytes</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestByteRangeWithKVSerialization.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestByteRangeWithKVSerialization</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBytesReadFromFs.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBytesReadFromFs</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestBytes.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestBytes</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBytesReadServerSideScanMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBytesReadServerSideScanMetrics</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestBytesReadFromFs.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestBytesReadFromFs</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCacheConfig.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCacheConfig</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestBytesReadServerSideScanMetrics.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestBytesReadServerSideScanMetrics</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCacheConfig.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCacheConfig</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests that <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>CacheConfig</code></a> does as expected.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCachedBlockQueue</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCachedClusterId.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCachedClusterId</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCachedBlockQueue</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mob/TestCachedMobFile.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestCachedMobFile</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCachedClusterId.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCachedClusterId</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCacheEviction.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCacheEviction</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mob/TestCachedMobFile.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestCachedMobFile</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCacheOnWrite</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCacheEviction.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCacheEviction</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCacheOnWrite</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFile.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFile</code></a> cache-on-write functionality for the following block types: data blocks,
non-root index blocks, and Bloom filter blocks.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCacheOnWriteInSchema</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCacheOnWriteInSchema</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFile.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFile</code></a> cache-on-write functionality for data blocks, non-root index blocks, and
Bloom filter blocks, as specified by the column family.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCacheStats.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCacheStats</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/thrift/TestCallQueue.html" title="class or interface in org.apache.hadoop.hbase.thrift" class="external-link">TestCallQueue</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCacheStats.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCacheStats</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/thrift/TestCallQueue.html" title="class or interface in org.apache.hadoop.hbase.thrift" class="external-link">TestCallQueue</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Unit testing for CallQueue, a part of the org.apache.hadoop.hbase.thrift package.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestCallRunner.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestCallRunner</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCatalogFamilyFormat.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCatalogFamilyFormat</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestCallRunner.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestCallRunner</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCatalogReplicaLoadBalanceSimpleSelector.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCatalogReplicaLoadBalanceSimpleSelector</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCatalogFamilyFormat.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCatalogFamilyFormat</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestCellBlockBuilder.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestCellBlockBuilder</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCatalogReplicaLoadBalanceSimpleSelector.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCatalogReplicaLoadBalanceSimpleSelector</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCellBuilder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCellBuilder</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestCellBlockBuilder.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestCellBlockBuilder</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/TestCellCodec.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">TestCellCodec</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCellBuilder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCellBuilder</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/TestCellCodecWithTags.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">TestCellCodecWithTags</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/TestCellCodec.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">TestCellCodec</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCellComparator.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCellComparator</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/TestCellCodecWithTags.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">TestCellCodecWithTags</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCellCounter.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCellCounter</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCellComparator.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCellComparator</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCellFlatSet</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCellCounter.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCellCounter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/TestCellMessageCodec.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">TestCellMessageCodec</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCellFlatSet</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCellSkipListSet</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/TestCellMessageCodec.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">TestCellMessageCodec</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCellUtil.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCellUtil</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCellSkipListSet</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestChangeSftShell.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestChangeSftShell</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCellUtil.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCellUtil</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.TestChangeSplitPolicyAction</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestChangeSftShell.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestChangeSftShell</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/storefiletracker/TestChangeStoreFileTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver.storefiletracker" class="external-link">TestChangeStoreFileTracker</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.TestChangeSplitPolicyAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/storefiletracker/TestChangeStoreFileTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver.storefiletracker" class="external-link">TestChangeStoreFileTracker</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test changing store file tracker implementation by altering table.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestChangingEncoding</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestChangingEncoding</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests changing data block encoding settings of a column family.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCheckAndMutate.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCheckAndMutate</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCheckAndMutateWithByteBuff.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCheckAndMutateWithByteBuff</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCheckAndMutate.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCheckAndMutate</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCheckAndMutateWithByteBuff.TestCheckAndMutateRegion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCheckAndMutateWithByteBuff.TestCheckAndMutateRegion</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCheckAndMutateWithByteBuff.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCheckAndMutateWithByteBuff</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCheckAndMutateWithByteBuff.TestCheckAndMutateRegion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCheckAndMutateWithByteBuff.TestCheckAndMutateRegion</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">An override of HRegion to allow sleep after get(), waiting for the release of DBB</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestChecksum</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCheckTestClasses.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCheckTestClasses</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestChecksum</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCheckTestClasses.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCheckTestClasses</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Checks tests are categorized.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestChoreService.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestChoreService</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestChoreService.FailInitialChore.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestChoreService.FailInitialChore</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestChoreService.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestChoreService</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestChoreService.FailInitialChore.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestChoreService.FailInitialChore</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">A Chore that will try to execute the initial chore a few times before succeeding.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIDeleteOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIDeleteOperationTimeout</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIDeleteRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIDeleteRpcTimeout</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIDeleteOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIDeleteOperationTimeout</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIGetOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIGetOperationTimeout</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIDeleteRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIDeleteRpcTimeout</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIGetRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIGetRpcTimeout</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIGetOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIGetOperationTimeout</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIIncrementRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIIncrementRpcTimeout</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIGetRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIGetRpcTimeout</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/TestCipherProvider.html" title="class or interface in org.apache.hadoop.hbase.io.crypto" class="external-link">TestCipherProvider</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIIncrementRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIIncrementRpcTimeout</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html" title="class or interface in org.apache.hadoop.hbase.io.crypto" class="external-link">TestCipherProvider.MyCipherProvider</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/TestCipherProvider.html" title="class or interface in org.apache.hadoop.hbase.io.crypto" class="external-link">TestCipherProvider</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIPutOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIPutOperationTimeout</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html" title="class or interface in org.apache.hadoop.hbase.io.crypto" class="external-link">TestCipherProvider.MyCipherProvider</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIPutRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIPutRpcTimeout</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIPutOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIPutOperationTimeout</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCISleep.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCISleep</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCIPutRpcTimeout.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCIPutRpcTimeout</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestClaimReplicationQueue.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestClaimReplicationQueue</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCISleep.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCISleep</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestClaimReplicationQueue.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestClaimReplicationQueue</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">In HBASE-26029, we reimplement the claim queue operation with proc-v2 and make it a step in SCP,
this is a UT to make sure the <code>AssignReplicationQueuesProcedure</code> works correctly.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestClaimReplicationQueue.HMasterForTest.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestClaimReplicationQueue.HMasterForTest</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestClaimReplicationQueue.ServerManagerForTest.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestClaimReplicationQueue.ServerManagerForTest</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestClaimReplicationQueue.HMasterForTest.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestClaimReplicationQueue.HMasterForTest</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestClasses.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestClasses</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestClaimReplicationQueue.ServerManagerForTest.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestClaimReplicationQueue.ServerManagerForTest</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClassFinder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClassFinder</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestClasses.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestClasses</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileAfterFailover.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCleanupCompactedFileAfterFailover</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClassFinder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClassFinder</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCleanupCompactedFileOnRegionClose</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileAfterFailover.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCleanupCompactedFileAfterFailover</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCleanupMetaReplica.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCleanupMetaReplica</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCleanupCompactedFileOnRegionClose</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCleanupMetaReplicaThroughConfig.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCleanupMetaReplicaThroughConfig</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCleanupMetaReplica.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCleanupMetaReplica</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCleanupMetaReplicaThroughConfig.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCleanupMetaReplicaThroughConfig</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure we will honor the <a href="../apidocs/org/apache/hadoop/hbase/HConstants.html#META_REPLICAS_NUM" title="class or interface in org.apache.hadoop.hbase" class="external-link"><code>HConstants.META_REPLICAS_NUM</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCleanupMetaWAL.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCleanupMetaWAL</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestClearRegionBlockCache</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCleanupMetaWAL.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCleanupMetaWAL</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterMetrics.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterMetrics</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestClearRegionBlockCache</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterMetrics.MyObserver.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterMetrics.MyObserver</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterMetrics.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterMetrics</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterMetrics.MyRegionServer.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterMetrics.MyRegionServer</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterMetrics.MyObserver.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterMetrics.MyObserver</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterStatus.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterStatus</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterMetrics.MyRegionServer.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterMetrics.MyRegionServer</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterStatus.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterStatus</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test the ClusterStatus.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterStatus.MyObserver.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterStatus.MyObserver</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/exceptions/TestClientExceptionsUtil.html" title="class or interface in org.apache.hadoop.hbase.exceptions" class="external-link">TestClientExceptionsUtil</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientClusterStatus.MyObserver.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientClusterStatus.MyObserver</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientExponentialBackoff.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientExponentialBackoff</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/exceptions/TestClientExceptionsUtil.html" title="class or interface in org.apache.hadoop.hbase.exceptions" class="external-link">TestClientExceptionsUtil</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClientMetaServiceRPCs.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClientMetaServiceRPCs</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientExponentialBackoff.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientExponentialBackoff</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/mode/TestClientMode.html" title="class or interface in org.apache.hadoop.hbase.hbtop.mode" class="external-link">TestClientMode</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClientMetaServiceRPCs.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClientMetaServiceRPCs</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientOperationInterrupt</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/mode/TestClientMode.html" title="class or interface in org.apache.hadoop.hbase.hbtop.mode" class="external-link">TestClientMode</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientOperationInterrupt.TestCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientOperationInterrupt.TestCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientOperationInterrupt</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientOperationTimeout</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientOperationInterrupt.TestCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientOperationInterrupt.TestCoprocessor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientOperationTimeout</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">These tests verify that the RPC timeouts ('hbase.client.operation.timeout' and
'hbase.client.scanner.timeout.period') work correctly using a modified Region Server which
injects delays to get, scan and mutate operations.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientOperationTimeout.DelayedRegionServer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientScannerTimeouts.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientScannerTimeouts</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClientOperationTimeout.DelayedRegionServer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientSideRegionScanner.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientSideRegionScanner</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientScannerTimeouts.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientScannerTimeouts</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientTableMetrics.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientTableMetrics</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientSideRegionScanner.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientSideRegionScanner</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientTimeouts.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientTimeouts</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientTableMetrics.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientTableMetrics</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcClient.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientTimeouts.RandomTimeoutRpcClient</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientTimeouts.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientTimeouts</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcClient.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientTimeouts.RandomTimeoutRpcClient</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Rpc Channel implementation with RandomTimeoutBlockingRpcChannel</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClockSkewDetection</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientAfterSplittingRegion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientAfterSplittingRegion</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClockSkewDetection</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientCloneLinksAfterDelete</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientAfterSplittingRegion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientAfterSplittingRegion</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCustomSFT.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientCustomSFT</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientCloneLinksAfterDelete</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientError.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientError</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCustomSFT.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientCustomSFT</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientNormal.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientNormal</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientError.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientError</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestCloseAnOpeningRegion.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestCloseAnOpeningRegion</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientNormal.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCloneSnapshotFromClientNormal</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestCloseAnOpeningRegion.MockHMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestCloseAnOpeningRegion.MockHMaster</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestCloseAnOpeningRegion.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestCloseAnOpeningRegion</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClusterBootOrder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClusterBootOrder</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestCloseAnOpeningRegion.MockHMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestCloseAnOpeningRegion.MockHMaster</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClusterBootOrder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClusterBootOrder</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests the boot order indifference between regionserver and master</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestClusterId</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestClusterId</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test metrics incremented on region server operations.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClusterPortAssignment.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClusterPortAssignment</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestart.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestart</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestClusterPortAssignment.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestClusterPortAssignment</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartFailover.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartFailover</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestart.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestart</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartFailover.HMasterForTest.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartFailover.HMasterForTest</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartFailover.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartFailover</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartFailoverSplitWithoutZk.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartFailoverSplitWithoutZk</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartFailover.HMasterForTest.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartFailover.HMasterForTest</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartSplitWithoutZk.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartSplitWithoutZk</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartFailoverSplitWithoutZk.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartFailoverSplitWithoutZk</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestClusterScopeQuotaThrottle.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestClusterScopeQuotaThrottle</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterRestartSplitWithoutZk.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterRestartSplitWithoutZk</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterStatusPublisher.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterStatusPublisher</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestClusterScopeQuotaThrottle.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestClusterScopeQuotaThrottle</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/compress/TestCodecPool.html" title="class or interface in org.apache.hadoop.hbase.io.compress" class="external-link">TestCodecPool</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestClusterStatusPublisher.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestClusterStatusPublisher</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/compress/TestCodecPool.html" title="class or interface in org.apache.hadoop.hbase.io.compress" class="external-link">TestCodecPool</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Along with CodecPool, this is copied from the class of the same name in hadoop-common.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestColumnFamilyDescriptorBuilder.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestColumnFamilyDescriptorBuilder</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestColumnFamilyDescriptorDefaultVersions.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestColumnFamilyDescriptorDefaultVersions</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestColumnFamilyDescriptorBuilder.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestColumnFamilyDescriptorBuilder</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestColumnFamilyDescriptorDefaultVersions.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestColumnFamilyDescriptorDefaultVersions</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Verify that the ColumnFamilyDescriptor version is set correctly by default, hbase-site.xml, and
user input</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestColumnFamilyDescriptorLowerCaseEnum.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestColumnFamilyDescriptorLowerCaseEnum</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestColumnFamilyDescriptorLowerCaseEnum.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestColumnFamilyDescriptorLowerCaseEnum</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testcase for HBASE-21732.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestColumnPaginationFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestColumnPaginationFilter</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestColumnPaginationFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestColumnPaginationFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test for the ColumnPaginationFilter, used mainly to test the successful serialization of the
filter.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestColumnPrefixFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestColumnPrefixFilter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestColumnRangeFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestColumnRangeFilter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestColumnPrefixFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestColumnPrefixFilter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestColumnSeeking</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestColumnRangeFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestColumnRangeFilter</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCombinedAsyncWriter.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCombinedAsyncWriter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestColumnSeeking</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCombinedBlockCache.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCombinedBlockCache</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCombinedAsyncWriter.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCombinedAsyncWriter</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCommonFSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCommonFSUtils</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Test <a href="../apidocs/org/apache/hadoop/hbase/util/CommonFSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link"><code>CommonFSUtils</code></a>.</div>
-</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/aes/TestCommonsAES.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.aes" class="external-link">TestCommonsAES</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/aes/TestCommonsAES.TestRNG.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.aes" class="external-link">TestCommonsAES.TestRNG</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestCombinedBlockCache.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestCombinedBlockCache</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactingMemStore</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCommonFSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCommonFSUtils</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
-<div class="block">compacted memstore test case</div>
+<div class="block">Test <a href="../apidocs/org/apache/hadoop/hbase/util/CommonFSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link"><code>CommonFSUtils</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactingMemStore.MyCompactingMemStore</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/aes/TestCommonsAES.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.aes" class="external-link">TestCommonsAES</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactingToCellFlatMapMemStore</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/aes/TestCommonsAES.TestRNG.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.aes" class="external-link">TestCommonsAES.TestRNG</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactingMemStore</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">compacted memstore test case</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactingMemStore.MyCompactingMemStore</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactingToCellFlatMapMemStore</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="block">compacted memstore test case</div>
+</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test compaction framework and common functions</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.DummyCompactor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction.DummyCompactor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.Tracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction.Tracker</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.DummyCompactor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction.DummyCompactor</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.Tracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction.Tracker</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Simple <code>CompactionLifeCycleTracker</code> on which you can wait until the requested compaction
finishes.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.WaitThroughPutController.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction.WaitThroughPutController</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompaction.WaitThroughPutController.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompaction.WaitThroughPutController</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Simple <code>CompactionLifeCycleTracker</code> on which you can wait until the requested compaction
finishes.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionAfterBulkLoad.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionAfterBulkLoad</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionArchiveConcurrentClose</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionAfterBulkLoad.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionAfterBulkLoad</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionArchiveConcurrentClose</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests a race condition between archiving of compacted files in CompactedHFilesDischarger chore
and HRegion.close();</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionArchiveIOException</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionArchiveIOException</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests that archiving compacted files behaves correctly when encountering exceptions.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionFileNotFound</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionFileNotFound</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">This class tests the scenario where a store refresh happens due to a file not found during scan,
after a compaction but before the compacted files are archived.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionInDeadRegionServer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionInDeadRegionServer</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">This testcase is used to ensure that the compaction marker will fail a compaction if the RS is
already dead.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionLifeCycleTracker</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionLifeCycleTracker</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Confirm that the function of CompactionLifeCycleTracker is OK as we do not use it in our own
code.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.CompactionObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionLifeCycleTracker.CompactionObserver</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionPolicy</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.CompactionObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionLifeCycleTracker.CompactionObserver</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestCompactionScanQueryMatcher.html" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher" class="external-link">TestCompactionScanQueryMatcher</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionPolicy</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionState.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionState</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestCompactionScanQueryMatcher.html" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher" class="external-link">TestCompactionScanQueryMatcher</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionState.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionState</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Unit tests to test retrieving table/region compaction state</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionTool.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionTool</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionToolNpeFix.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionToolNpeFix</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionTool.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionTool</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithByteBuff</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionToolNpeFix.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionToolNpeFix</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithByteBuff</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithCoprocessor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure compaction tests still pass with the preFlush and preCompact overridden to implement
the default behavior</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithShippingCoprocessor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.CompactionObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithShippingCoprocessor.CompactionObserver</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithShippingCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.ShippedObservingScanner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithShippingCoprocessor.ShippedObservingScanner</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.CompactionObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithShippingCoprocessor.CompactionObserver</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/throttle/TestCompactionWithThroughputController.html" title="class or interface in org.apache.hadoop.hbase.regionserver.throttle" class="external-link">TestCompactionWithThroughputController</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.ShippedObservingScanner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactionWithShippingCoprocessor.ShippedObservingScanner</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactorMemLeak.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactorMemLeak</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/throttle/TestCompactionWithThroughputController.html" title="class or interface in org.apache.hadoop.hbase.regionserver.throttle" class="external-link">TestCompactionWithThroughputController</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactorMemLeak.MyCompactor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactorMemLeak.MyCompactor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactorMemLeak.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactorMemLeak</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactSplitThread</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactorMemLeak.MyCompactor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactorMemLeak.MyCompactor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestComparators.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestComparators</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompactSplitThread</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestComparatorSerialization.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestComparatorSerialization</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestComparators.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestComparators</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCompatibilitySingletonFactory.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCompatibilitySingletonFactory</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestComparatorSerialization.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestComparatorSerialization</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCompleteResultScanResultCache</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCompatibilitySingletonFactory.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCompatibilitySingletonFactory</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompoundBloomFilter</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCompleteResultScanResultCache</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestCompoundBloomFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests writing Bloom filter blocks in the same part of the file as data blocks.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCompoundConfiguration.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCompoundConfiguration</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestCompressedWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestCompressedWAL</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCompoundConfiguration.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCompoundConfiguration</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestCompressedWALValueCompression.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestCompressedWALValueCompression</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestCompressedWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestCompressedWAL</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCompressionTest.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCompressionTest</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestCompressedWALValueCompression.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestCompressedWALValueCompression</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCompressor.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCompressor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCompressionTest.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCompressionTest</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCompressor.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCompressor</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test our compressor class.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestConcatenatedLists.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestConcatenatedLists</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestConcurrentFlushSnapshotFromClient.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestConcurrentFlushSnapshotFromClient</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestConcatenatedLists.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestConcatenatedLists</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/conf/TestConfigKey.html" title="class or interface in org.apache.hadoop.hbase.conf" class="external-link">TestConfigKey</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestConcurrentFlushSnapshotFromClient.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestConcurrentFlushSnapshotFromClient</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/conf/TestConfigurationManager.html" title="class or interface in org.apache.hadoop.hbase.conf" class="external-link">TestConfigurationManager</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/conf/TestConfigKey.html" title="class or interface in org.apache.hadoop.hbase.conf" class="external-link">TestConfigKey</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestConfigurationUtil.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestConfigurationUtil</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/conf/TestConfigurationManager.html" title="class or interface in org.apache.hadoop.hbase.conf" class="external-link">TestConfigurationManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestConfigurePartitioner.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestConfigurePartitioner</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestConfigurationUtil.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestConfigurationUtil</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/conf/TestConfServlet.html" title="class or interface in org.apache.hadoop.hbase.http.conf" class="external-link">TestConfServlet</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestConfigurePartitioner.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestConfigurePartitioner</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/conf/TestConfServlet.html" title="class or interface in org.apache.hadoop.hbase.http.conf" class="external-link">TestConfServlet</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Basic test case that the ConfServlet can write configuration to its output in XML and JSON
format.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnection.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnection</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnection.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnection</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">This class is for testing <a href="../apidocs/org/apache/hadoop/hbase/client/Connection.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>Connection</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionAttributes.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionAttributes</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionAttributes.AttributesCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionAttributes.AttributesCoprocessor</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionAttributes.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionAttributes</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestConnectionCache.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestConnectionCache</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionAttributes.AttributesCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionAttributes.AttributesCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionConfiguration</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestConnectionCache.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestConnectionCache</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionConfiguration</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">See HBASE-28608.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionFactoryApplyURIQueries.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionFactoryApplyURIQueries</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestConnectionId.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestConnectionId</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionFactoryApplyURIQueries.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionFactoryApplyURIQueries</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionRegistryLeak.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionRegistryLeak</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestConnectionId.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestConnectionId</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionRegistryLeak.ConnectionRegistryForTest.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionRegistryLeak.ConnectionRegistryForTest</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionRegistryLeak.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionRegistryLeak</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionRegistryUriParsing.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionRegistryUriParsing</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionRegistryLeak.ConnectionRegistryForTest.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionRegistryLeak.ConnectionRegistryForTest</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionRegistryUriParsing.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionRegistryUriParsing</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure we can successfully parse the URI component</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionUtils.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionUtils</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCoprocessorClassLoader</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionUtils.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionUtils</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCoprocessorClassLoader</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test TestCoprocessorClassLoader.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorConfiguration</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorConfiguration</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for global coprocessor loading configuration</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.SystemCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorConfiguration.SystemCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.TableCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorConfiguration.TableCoprocessor</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.SystemCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorConfiguration.SystemCoprocessor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCoprocessorDescriptor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCoprocessorDescriptor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.TableCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorConfiguration.TableCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorHost</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestCoprocessorDescriptor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestCoprocessorDescriptor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.SimpleRegionObserverV2.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorHost.SimpleRegionObserverV2</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorHost</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.SimpleRegionObserverV3.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorHost.SimpleRegionObserverV3</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.SimpleRegionObserverV2.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorHost.SimpleRegionObserverV2</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorInterface</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.SimpleRegionObserverV3.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorHost.SimpleRegionObserverV3</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.CoprocessorII.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorInterface.CoprocessorII</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorInterface</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.CoprocessorImpl.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorInterface.CoprocessorImpl</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.CoprocessorII.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorInterface.CoprocessorII</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.CoprocessorImpl.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorInterface.CoprocessorImpl</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testing of coprocessor metrics end-to-end.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomMasterObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomMasterObserver</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomMasterObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomMasterObserver</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">MasterObserver that has a Timer metric for create table operation.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionEndpoint.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionEndpoint</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionEndpoint.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionEndpoint</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">RegionEndpoint to test metrics from endpoint calls</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionObserver</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionObserver</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">RegionObserver that has a Counter for preGet()</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionObserver2.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionObserver2</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionServerObserver</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionObserver2.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionObserver2</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomRegionServerObserver</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">RegionServerObserver that has a Counter for rollWAL requests.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomWALObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomWALObserver</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomWALObserver.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorMetrics.CustomWALObserver</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">WALObserver that has a Counter for walEdits written.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCoprocessorScanPolicy</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.ScanObserver.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCoprocessorScanPolicy.ScanObserver</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCoprocessorScanPolicy</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.ScanObserver.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestCoprocessorScanPolicy.ScanObserver</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Ensure Coprocessors get ShardConnections when they get a Connection from their
CoprocessorEnvironment.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.TestMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection.TestMasterCoprocessor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.TestRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection.TestRegionCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.TestMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection.TestMasterCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.TestRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection.TestRegionServerCoprocessor</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.TestRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection.TestRegionCoprocessor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorStop</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorSharedConnection.TestRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorSharedConnection.TestRegionServerCoprocessor</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorStop</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for master and regionserver coprocessor stop method</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.FooCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorStop.FooCoprocessor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/types/TestCopyOnWriteMaps.html" title="class or interface in org.apache.hadoop.hbase.types" class="external-link">TestCopyOnWriteMaps</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.FooCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoprocessorStop.FooCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestCopyReplicationPeers.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestCopyReplicationPeers</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/types/TestCopyOnWriteMaps.html" title="class or interface in org.apache.hadoop.hbase.types" class="external-link">TestCopyOnWriteMaps</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTable.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTable</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestCopyReplicationPeers.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestCopyReplicationPeers</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTable.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTable</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Basic test for the CopyTable M/R tool</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithClusterKey.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTableToPeerClusterWithClusterKey</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithRpcUri.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTableToPeerClusterWithRpcUri</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithClusterKey.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTableToPeerClusterWithClusterKey</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithZkUri.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTableToPeerClusterWithZkUri</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithRpcUri.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTableToPeerClusterWithRpcUri</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreMasterCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Test CoreCoprocessor Annotation works giving access to facility not usually available.</div>
-</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.CoreMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreMasterCoprocessor.CoreMasterCoprocessor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Annotate with CoreCoprocessor.</div>
-</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.NotCoreMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreMasterCoprocessor.NotCoreMasterCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
-<div class="block">No annotation with CoreCoprocessor.</div>
-</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithZkUri.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestCopyTableToPeerClusterWithZkUri</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreMasterCoprocessor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test CoreCoprocessor Annotation works giving access to facility not usually available.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.CoreRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionCoprocessor.CoreRegionCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.CoreMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreMasterCoprocessor.CoreMasterCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Annotate with CoreCoprocessor.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.NotCoreRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionCoprocessor.NotCoreRegionCoprocessor</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.NotCoreMasterCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreMasterCoprocessor.NotCoreMasterCoprocessor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">No annotation with CoreCoprocessor.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionServerCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test CoreCoprocessor Annotation works giving access to facility not usually available.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.CoreRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionServerCoprocessor.CoreRegionServerCoprocessor</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.CoreRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionCoprocessor.CoreRegionCoprocessor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Annotate with CoreCoprocessor.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.NotCoreRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionServerCoprocessor.NotCoreRegionServerCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.NotCoreRegionCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionCoprocessor.NotCoreRegionCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">No annotation with CoreCoprocessor.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/terminal/impl/TestCursor.html" title="class or interface in org.apache.hadoop.hbase.hbtop.terminal.impl" class="external-link">TestCursor</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionServerCoprocessor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Test CoreCoprocessor Annotation works giving access to facility not usually available.</div>
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.CoreRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionServerCoprocessor.CoreRegionServerCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Annotate with CoreCoprocessor.</div>
+</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.NotCoreRegionServerCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">TestCoreRegionServerCoprocessor.NotCoreRegionServerCoprocessor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">No annotation with CoreCoprocessor.</div>
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/terminal/impl/TestCursor.html" title="class or interface in org.apache.hadoop.hbase.hbtop.terminal.impl" class="external-link">TestCursor</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests that one can implement their own RpcControllerFactory and expect it to successfully pass
custom priority values to the server for all HTable calls.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.PriorityRegionServer.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory.PriorityRegionServer</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.PriorityRpcControllerFactory.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory.PriorityRpcControllerFactory</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.PriorityRegionServer.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory.PriorityRegionServer</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.PriorityRpcServices.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory.PriorityRpcServices</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.PriorityRpcControllerFactory.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory.PriorityRpcControllerFactory</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCustomWALCellCodec</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestCustomPriorityRpcControllerFactory.PriorityRpcServices.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestCustomPriorityRpcControllerFactory.PriorityRpcServices</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCustomWALCellCodec</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that we can create, load, setup our own custom codec</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.CustomWALCellCodec.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCustomWALCellCodec.CustomWALCellCodec</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestDataBlockEncoders</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.CustomWALCellCodec.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestCustomWALCellCodec.CustomWALCellCodec</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestDataBlockEncoders</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test all of the data block encoding algorithms for correctness.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoding.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestDataBlockEncoding</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDataBlockEncodingTool</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoding.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestDataBlockEncoding</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDataBlockEncodingTool</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test DataBlockEncodingTool.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDateTieredCompactionPolicy</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyHeterogeneousStorage.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDateTieredCompactionPolicyHeterogeneousStorage</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDateTieredCompactionPolicy</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDateTieredCompactionPolicyOverflow</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyHeterogeneousStorage.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDateTieredCompactionPolicyHeterogeneousStorage</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestDeadServer.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestDeadServer</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDateTieredCompactionPolicyOverflow</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultAtomicQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultAtomicQuota</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestDeadServer.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestDeadServer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultCompactSelection</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultAtomicQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultAtomicQuota</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestDefaultEnvironmentEdge</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultCompactSelection</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestDefaultEnvironmentEdge</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests to make sure that the default environment edge conforms to appropriate behaviour.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultHandlerUsageQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultHandlerUsageQuota</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultMemStore</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultHandlerUsageQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultHandlerUsageQuota</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultMemStore</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">memstore test case</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mob/TestDefaultMobStoreFlusher.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestDefaultMobStoreFlusher</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultOperationQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultOperationQuota</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mob/TestDefaultMobStoreFlusher.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestDefaultMobStoreFlusher</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultQuota</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultOperationQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultOperationQuota</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestDefaultQuota.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestDefaultQuota</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyCompactionPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine.DummyCompactionPolicy</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyCompactor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine.DummyCompactor</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyCompactionPolicy.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine.DummyCompactionPolicy</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyStoreFlusher.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine.DummyStoreFlusher</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyCompactor.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine.DummyCompactor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDeleteMobTable</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyStoreFlusher.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDefaultStoreEngine.DummyStoreFlusher</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestDeleteRow.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestDeleteRow</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDeleteMobTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestDeleteTimeStamp.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestDeleteTimeStamp</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestDeleteRow.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestDeleteRow</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestDependentColumnFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestDependentColumnFilter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestDeleteTimeStamp.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestDeleteTimeStamp</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDirectStoreSplitsMerges</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestDependentColumnFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestDependentColumnFilter</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestDisabledWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestDisabledWAL</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestDirectStoreSplitsMerges</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/TestDisableTableViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link">TestDisableTableViolationPolicyEnforcement</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestDisabledWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestDisabledWAL</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/TestDisableTableViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link">TestDisableTableViolationPolicyEnforcement</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test class for <a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/DisableTableViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link"><code>DisableTableViolationPolicyEnforcement</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestDLSAsyncFSWAL.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestDLSAsyncFSWAL</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestDLSFSHLog.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestDLSFSHLog</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestDLSAsyncFSWAL.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestDLSAsyncFSWAL</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapred/TestDriver.html" title="class or interface in org.apache.hadoop.hbase.mapred" class="external-link">TestDriver</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestDLSFSHLog.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestDLSFSHLog</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestDropTimeoutRequest.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestDropTimeoutRequest</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapred/TestDriver.html" title="class or interface in org.apache.hadoop.hbase.mapred" class="external-link">TestDriver</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestDropTimeoutRequest.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestDropTimeoutRequest</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test a drop timeout request.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestDropTimeoutRequest.SleepLongerAtFirstCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestDropTimeoutRequest.SleepLongerAtFirstCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestDropTimeoutRequest.SleepLongerAtFirstCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestDropTimeoutRequest.SleepLongerAtFirstCoprocessor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Coprocessor that sleeps a while the first time you do a Get</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestDurability.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestDurability</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestDurability.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestDurability</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for WAL write durability</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestDynamicClassLoader.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestDynamicClassLoader</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestDynamicClassLoader.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestDynamicClassLoader</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test TestDynamicClassLoader</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsBehindDroppedTableTiming.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsBehindDroppedTableTiming</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsDroppedWithDroppedTable.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsDroppedWithDroppedTable</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsBehindDroppedTableTiming.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsBehindDroppedTableTiming</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsDroppedWithDroppedTableNS.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsDroppedWithDroppedTableNS</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsDroppedWithDroppedTable.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsDroppedWithDroppedTable</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsStuckBehindDroppedTable.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsStuckBehindDroppedTable</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsDroppedWithDroppedTableNS.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsDroppedWithDroppedTableNS</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestEnableRSGroups.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">TestEnableRSGroups</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestEditsStuckBehindDroppedTable.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestEditsStuckBehindDroppedTable</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestEnableRSGroupsCompatibility.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">TestEnableRSGroupsCompatibility</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestEnableRSGroups.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">TestEnableRSGroups</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/TestEnableRSGroupsCompatibility.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">TestEnableRSGroupsCompatibility</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test enable RSGroup using the old coprocessor way, to make sure that we keep compatible with old
config way.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestEnableTable.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestEnableTable</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestEnableTable.MasterSyncObserver</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestEnableTable.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestEnableTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestEncodedDataBlock.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestEncodedDataBlock</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestEnableTable.MasterSyncObserver</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestEncodedDataBlock.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestEncodedDataBlock</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test for HBASE-23342</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestEncodedSeekers</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestEncodedSeekers</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests encoded seekers by loading and reading values.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/TestEncryption.html" title="class or interface in org.apache.hadoop.hbase.io.crypto" class="external-link">TestEncryption</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEncryptionDisabled.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEncryptionDisabled</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/TestEncryption.html" title="class or interface in org.apache.hadoop.hbase.io.crypto" class="external-link">TestEncryption</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEncryptionKeyRotation</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEncryptionDisabled.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEncryptionDisabled</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEncryptionRandomKeying</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEncryptionKeyRotation</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEncryptionTest.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEncryptionTest</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEncryptionRandomKeying</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEncryptionTest.FailingCipherProvider.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEncryptionTest.FailingCipherProvider</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEncryptionTest.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEncryptionTest</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEncryptionTest.FailingKeyProvider.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEncryptionTest.FailingKeyProvider</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEncryptionTest.FailingCipherProvider.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEncryptionTest.FailingCipherProvider</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/TestEncryptionUtil.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">TestEncryptionUtil</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEncryptionTest.FailingKeyProvider.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEncryptionTest.FailingKeyProvider</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEndToEndSplitTransaction</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/TestEncryptionUtil.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">TestEncryptionUtil</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/locking/TestEntityLocks.html" title="class or interface in org.apache.hadoop.hbase.client.locking" class="external-link">TestEntityLocks</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestEndToEndSplitTransaction</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEnvironmentEdgeManager.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEnvironmentEdgeManager</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/locking/TestEntityLocks.html" title="class or interface in org.apache.hadoop.hbase.client.locking" class="external-link">TestEntityLocks</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestExcludeDatanodeManager.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">TestExcludeDatanodeManager</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestEnvironmentEdgeManager.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestEnvironmentEdgeManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestExecutorStatusChore.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestExecutorStatusChore</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestExcludeDatanodeManager.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">TestExcludeDatanodeManager</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestExpiredMobFileCleaner</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestExecutorStatusChore.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestExecutorStatusChore</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher" class="external-link">TestExplicitColumnTracker</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestExpiredMobFileCleaner</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshot</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher" class="external-link">TestExplicitColumnTracker</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshot</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test Export Snapshot Tool</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.RegionPredicate.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshot.RegionPredicate</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab1"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotAdjunct.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotAdjunct</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.RegionPredicate.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshot.RegionPredicate</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab1"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotAdjunct.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotAdjunct</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests that are adjunct to <a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link"><code>TestExportSnapshot</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotHelpers.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotHelpers</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotHelpers.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotHelpers</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test Export Snapshot Tool helpers</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotHelpers.TestCustomFileGrouper.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotHelpers.TestCustomFileGrouper</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotHelpers.TestFileLocationResolver.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotHelpers.TestFileLocationResolver</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotHelpers.TestCustomFileGrouper.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotHelpers.TestCustomFileGrouper</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV1NoCluster.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotV1NoCluster</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotHelpers.TestFileLocationResolver.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotHelpers.TestFileLocationResolver</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV1NoCluster.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotV1NoCluster</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test Export Snapshot Tool Tests V1 snapshots only.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV2NoCluster.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotV2NoCluster</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV2NoCluster.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotV2NoCluster</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test Export Snapshot Tool; tests v2 snapshots.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotWithTemporaryDirectory.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotWithTemporaryDirectory</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFailedAppendAndSync</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestExportSnapshotWithTemporaryDirectory.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestExportSnapshotWithTemporaryDirectory</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFailedAppendAndSync</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testing sync/append failures.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.BrokenMasterMetaAssignmentManager.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment.BrokenMasterMetaAssignmentManager</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.BrokenMetaReplicaMaster.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment.BrokenMetaReplicaMaster</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.BrokenMasterMetaAssignmentManager.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment.BrokenMasterMetaAssignmentManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.BrokenTransitRegionStateProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment.BrokenTransitRegionStateProcedure</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.BrokenMetaReplicaMaster.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment.BrokenMetaReplicaMaster</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestFailedServersLog.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestFailedServersLog</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFailedMetaReplicaAssigment.BrokenTransitRegionStateProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFailedMetaReplicaAssigment.BrokenTransitRegionStateProcedure</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFallbackToUseReplay.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFallbackToUseReplay</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestFailedServersLog.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestFailedServersLog</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFallbackToUseReplay.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFallbackToUseReplay</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure we could fallback to use replay method if replicateToReplica method is not present,
i.e, we are connecting an old region server.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutput.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">TestFanOutOneBlockAsyncDFSOutput</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutputHang.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">TestFanOutOneBlockAsyncDFSOutputHang</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutput.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">TestFanOutOneBlockAsyncDFSOutput</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutputHang.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">TestFanOutOneBlockAsyncDFSOutputHang</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testcase for HBASE-26679, here we introduce a separate test class and not put the testcase in
<a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutput.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link"><code>TestFanOutOneBlockAsyncDFSOutput</code></a> because we will send heartbeat to DN when there is no
out going packet, the timeout is controlled by
<code>TestFanOutOneBlockAsyncDFSOutput.READ_TIMEOUT_MS</code>,which is 2 seconds, it will keep sending
package out and DN will respond immedately and then mess up the testing handler added by us.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.html" title="class or interface in org.apache.hadoop.hbase.favored" class="external-link">TestFavoredNodeAssignmentHelper</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/screen/field/TestFieldScreenPresenter.html" title="class or interface in org.apache.hadoop.hbase.hbtop.screen.field" class="external-link">TestFieldScreenPresenter</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.html" title="class or interface in org.apache.hadoop.hbase.favored" class="external-link">TestFavoredNodeAssignmentHelper</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/field/TestFieldValue.html" title="class or interface in org.apache.hadoop.hbase.hbtop.field" class="external-link">TestFieldValue</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/screen/field/TestFieldScreenPresenter.html" title="class or interface in org.apache.hadoop.hbase.hbtop.screen.field" class="external-link">TestFieldScreenPresenter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestFifoRpcScheduler</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/field/TestFieldValue.html" title="class or interface in org.apache.hadoop.hbase.hbtop.field" class="external-link">TestFieldValue</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestFileArchiverNotifierImpl.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestFileArchiverNotifierImpl</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestFifoRpcScheduler</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestFileArchiverNotifierImpl.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestFileArchiverNotifierImpl</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test class for <a href="../apidocs/org/apache/hadoop/hbase/quotas/FileArchiverNotifierImpl.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link"><code>FileArchiverNotifierImpl</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestFileChangeWatcher.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestFileChangeWatcher</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestFileChangeWatcher.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestFileChangeWatcher</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">This file was originally copied from the Apache ZooKeeper project, but has been modified</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestFileKeyStoreLoaderBuilderProvider.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestFileKeyStoreLoaderBuilderProvider</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestFileKeyStoreLoaderBuilderProvider.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestFileKeyStoreLoaderBuilderProvider</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">This file has been copied from the Apache ZooKeeper project.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestFileLink.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestFileLink</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestFileLink.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestFileLink</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that FileLink switches between alternate locations when the current location moves or gets
deleted.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestFileSystemUtilizationChore</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestFileSystemUtilizationChore</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test class for <a href="../apidocs/org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link"><code>FileSystemUtilizationChore</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test filters at the HRegion doorstep.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilter.SlowScanFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilter.SlowScanFilter</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilter.SlowScanFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilter.SlowScanFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Filter which makes sleeps for a second between each row of a scan.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/screen/top/TestFilterDisplayModeScreenPresenter.html" title="class or interface in org.apache.hadoop.hbase.hbtop.screen.top" class="external-link">TestFilterDisplayModeScreenPresenter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterFromRegionSide</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/screen/top/TestFilterDisplayModeScreenPresenter.html" title="class or interface in org.apache.hadoop.hbase.hbtop.screen.top" class="external-link">TestFilterDisplayModeScreenPresenter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterFromRegionSide</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">To test behavior of filters at server from region side.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.FirstSeveralCellsFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterFromRegionSide.FirstSeveralCellsFilter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterList.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterList</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.FirstSeveralCellsFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterFromRegionSide.FirstSeveralCellsFilter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterList.AlwaysNextColFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterList.AlwaysNextColFilter</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterList.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterList</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterListOnMini.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterListOnMini</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterList.AlwaysNextColFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterList.AlwaysNextColFilter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterListOnMini.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterListOnMini</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests filter Lists in ways that rely on a MiniCluster.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterListOrOperatorWithBlkCnt.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterListOrOperatorWithBlkCnt</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterSerialization.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterSerialization</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterListOrOperatorWithBlkCnt.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterListOrOperatorWithBlkCnt</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFiltersWithBinaryComponentComparator.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFiltersWithBinaryComponentComparator</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterSerialization.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterSerialization</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterWithScanLimits.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterWithScanLimits</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFiltersWithBinaryComponentComparator.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFiltersWithBinaryComponentComparator</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterWithScanLimits.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterWithScanLimits</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test if Filter is incompatible with scan-limits</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterWrapper.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterWrapper</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFilterWrapper.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFilterWrapper</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test if the FilterWrapper retains the same semantics defined in the
<a href="../apidocs/org/apache/hadoop/hbase/filter/Filter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link"><code>Filter</code></a></div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestFixedFileTrailer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/types/TestFixedLengthWrapper.html" title="class or interface in org.apache.hadoop.hbase.types" class="external-link">TestFixedLengthWrapper</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestFixedFileTrailer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFlushFromClient.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFlushFromClient</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/types/TestFixedLengthWrapper.html" title="class or interface in org.apache.hadoop.hbase.types" class="external-link">TestFixedLengthWrapper</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFlushFromClientWithDisabledFlushProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFlushFromClientWithDisabledFlushProcedure</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFlushFromClient.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFlushFromClient</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFlushLifeCycleTracker</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFlushFromClientWithDisabledFlushProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFlushFromClientWithDisabledFlushProcedure</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFlushLifeCycleTracker</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Confirm that the function of FlushLifeCycleTracker is OK as we do not use it in our own code.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.FlushObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFlushLifeCycleTracker.FlushObserver</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFlushRegionEntry.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFlushRegionEntry</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.FlushObserver.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFlushLifeCycleTracker.FlushObserver</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestFlushSnapshotFromClient</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFlushRegionEntry.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFlushRegionEntry</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">TestFlushSnapshotFromClient</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test creating/using/deleting snapshots from the client</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/throttle/TestFlushWithThroughputController.html" title="class or interface in org.apache.hadoop.hbase.regionserver.throttle" class="external-link">TestFlushWithThroughputController</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestForceCacheImportantBlocks</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/throttle/TestFlushWithThroughputController.html" title="class or interface in org.apache.hadoop.hbase.regionserver.throttle" class="external-link">TestFlushWithThroughputController</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestForceCacheImportantBlocks</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure we always cache important block types, such as index blocks, as long as we have a block
cache, even though block caching might be disabled for the column family.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/errorhandling/TestForeignExceptionDispatcher.html" title="class or interface in org.apache.hadoop.hbase.errorhandling" class="external-link">TestForeignExceptionDispatcher</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/errorhandling/TestForeignExceptionDispatcher.html" title="class or interface in org.apache.hadoop.hbase.errorhandling" class="external-link">TestForeignExceptionDispatcher</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that we propagate errors through an dispatcher exactly once via different failure injection
mechanisms.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/errorhandling/TestForeignExceptionSerialization.html" title="class or interface in org.apache.hadoop.hbase.errorhandling" class="external-link">TestForeignExceptionSerialization</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/errorhandling/TestForeignExceptionSerialization.html" title="class or interface in org.apache.hadoop.hbase.errorhandling" class="external-link">TestForeignExceptionSerialization</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that we correctly serialize exceptions from a remote source</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Run tests that use the HBase clients; <a href="../apidocs/org/apache/hadoop/hbase/client/Table.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>Table</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide3</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide3.WaitingForMultiMutationsObserver</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide3</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide3.WaitingForScanObserver</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide3.WaitingForMultiMutationsObserver</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFromClientSide3WoUnsafe</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide3.WaitingForScanObserver</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide4.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide4</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Run tests that use the HBase clients; <a href="../apidocs/org/apache/hadoop/hbase/client/Table.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>Table</code></a>.</div>
-</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFromClientSide3WoUnsafe</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide4.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide4</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Run tests that use the HBase clients; <a href="../apidocs/org/apache/hadoop/hbase/client/Table.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>Table</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideNoCodec</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Run tests that use the HBase clients; <a href="../apidocs/org/apache/hadoop/hbase/client/Table.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>Table</code></a>.</div>
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideNoCodec</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Do some ops and prove that client and server can work w/o codecs; that we can pb all the time.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion.MyHRegion</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion.MyHStore</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion.MyHRegion</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion.MyStoreScanner</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion.MyHStore</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetionWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetionWithCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
- policy.</div>
-</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetion.MyStoreScanner</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetionWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideScanExcpetionWithCoprocessor</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
policy.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor4.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor4</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
policy.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor5</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor4.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor4</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
policy.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestFSDataInputStreamWrapper.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestFSDataInputStreamWrapper</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFSErrorsExposed</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor5</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
+ policy.</div>
+</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestFSDataInputStreamWrapper.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestFSDataInputStreamWrapper</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestFSErrorsExposed</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test cases that ensure that file system level errors are bubbled up appropriately to clients,
rather than swallowed.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestFSHLog</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestFSHLog</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Provides FSHLog test cases.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionDueToDanglingByteBuffer</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionDueToDanglingByteBuffer</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testcase for HBASE-22539</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWAL</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWALProvider.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWALProvider</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWAL</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWALProvider.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionDueToDanglingByteBuffer.PauseWALProvider</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWAL</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWALProvider.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWALProvider</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWAL.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWAL</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestFSHLogDurability.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestFSHLogDurability</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWALProvider.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.PauseWALProvider</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogProvider.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogProvider</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestFSHLogDurability.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestFSHLogDurability</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogProviderWithConcurrentWrites.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogProviderWithConcurrentWrites</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogProvider.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogProvider</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/TestFSHLogProviderWithConcurrentWrites.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">TestFSHLogProviderWithConcurrentWrites</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for TestFSHLogProvider which use WALPerformanceEvaluation for WAL data creation.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestFSReplicationPeerStorage.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestFSReplicationPeerStorage</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestFSTableDescriptorForceCreation.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestFSTableDescriptorForceCreation</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestFSReplicationPeerStorage.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestFSReplicationPeerStorage</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFSTableDescriptors.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFSTableDescriptors</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestFSTableDescriptorForceCreation.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestFSTableDescriptorForceCreation</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFSTableDescriptors.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFSTableDescriptors</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests for <a href="../apidocs/org/apache/hadoop/hbase/util/FSTableDescriptors.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link"><code>FSTableDescriptors</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFSUtils</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFSUtils</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test <a href="../apidocs/org/apache/hadoop/hbase/util/FSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link"><code>FSUtils</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFSVisitor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFSVisitor</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test <a href="../apidocs/org/apache/hadoop/hbase/util/FSUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link"><code>FSUtils</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestFSWALEntry</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackup.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackup</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestFSWALEntry</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackupSet.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackupSet</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackup.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackup</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackupSetRestoreSet</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackupSet.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackupSet</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackupWithFailures</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackupSetRestoreSet</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestFullLogReconstruction.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestFullLogReconstruction</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullBackupWithFailures</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullRestore.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullRestore</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestFullLogReconstruction.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestFullLogReconstruction</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFutureUtils</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestFullRestore.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestFullRestore</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowAndColumnRangeFilter</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestFutureUtils</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowFilter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowAndColumnRangeFilter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowFilterEndToEnd</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowFilter.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowFilter</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEndLarge.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowFilterEndToEndLarge</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowFilterEndToEnd</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGet.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGet</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEndLarge.html" title="class or interface in org.apache.hadoop.hbase.filter" class="external-link">TestFuzzyRowFilterEndToEndLarge</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGetAndPutResource.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGetAndPutResource</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGet.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGet</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestGetClosestAtOrBefore</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGetAndPutResource.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGetAndPutResource</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestGetClosestAtOrBefore</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">TestGet is a medley of tests of get all done up as a single test.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetInfoPort.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetInfoPort</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetInfoPort.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetInfoPort</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Trivial test to confirm that we do not get 0 infoPort.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetLastFlushedSequenceId</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetLastFlushedSequenceId</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Trivial test to confirm that we can get last flushed sequence id by encodedRegionName.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetProcedureResult</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetProcedureResult</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testcase for HBASE-19608.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetProcedureResult.DummyProcedure</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetReplicationLoad</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetProcedureResult.DummyProcedure</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetReplicationLoad.MyMaster</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetReplicationLoad</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetScanColumnsWithNewVersionBehavior</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestGetReplicationLoad.MyMaster</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetScanColumnsWithNewVersionBehavior</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a
get scan and cause returning only 1 cell per rpc call.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetScanPartialResult</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestGetScanPartialResult</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a
get scan and cause returning only 1 cell per rpc call.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/TestGlobalFilter.html" title="class or interface in org.apache.hadoop.hbase.http" class="external-link">TestGlobalFilter</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class or interface in org.apache.hadoop.hbase.http" class="external-link">TestGlobalFilter.RecordingFilter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/TestGlobalFilter.html" title="class or interface in org.apache.hadoop.hbase.http" class="external-link">TestGlobalFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class or interface in org.apache.hadoop.hbase.http" class="external-link">TestGlobalFilter.RecordingFilter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">A very simple filter that records accessed uri's</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.Initializer.html" title="class or interface in org.apache.hadoop.hbase.http" class="external-link">TestGlobalFilter.RecordingFilter.Initializer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.Initializer.html" title="class or interface in org.apache.hadoop.hbase.http" class="external-link">TestGlobalFilter.RecordingFilter.Initializer</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration for RecordingFilter</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestGlobalMemStoreSize.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestGlobalMemStoreSize</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestGlobalMemStoreSize.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestGlobalMemStoreSize</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test HBASE-3694 whether the GlobalMemStoreSize is the same as the summary of all the online
region's MemStoreSize</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettingsImpl.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestGlobalQuotaSettingsImpl</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapred/TestGroupingTableMap.html" title="class or interface in org.apache.hadoop.hbase.mapred" class="external-link">TestGroupingTableMap</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettingsImpl.html" title="class or interface in org.apache.hadoop.hbase.quotas" class="external-link">TestGlobalQuotaSettingsImpl</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestGroupingTableMapper</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapred/TestGroupingTableMap.html" title="class or interface in org.apache.hadoop.hbase.mapred" class="external-link">TestGroupingTableMap</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestGsonUtil.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestGsonUtil</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestGroupingTableMapper</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGzipFilter.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGzipFilter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestGsonUtil.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestGsonUtil</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGZIPResponseWrapper</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGzipFilter.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGzipFilter</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestHalfStoreFileReader</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">TestGZIPResponseWrapper</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestHashTable.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestHashTable</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestHalfStoreFileReader</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestHashTable.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestHashTable</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Basic test for the HashTable M/R tool</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestHBackupFileSystem.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestHBackupFileSystem</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseClassTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseClassTestRule</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestHBackupFileSystem.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestHBackupFileSystem</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseClassTestRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseClassTestRule</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Tests HBaseClassTestRule.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestHBaseClient.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestHBaseClient</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseConfiguration.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseConfiguration</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestHBaseClient.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestHBaseClient</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseConfTool.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseConfTool</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseConfiguration.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseConfiguration</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckCleanReplicationBarriers</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseConfTool.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseConfTool</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckComparator</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckCleanReplicationBarriers</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckComparator</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test the comparator used by Hbck.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckEncryption</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckMOB</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckEncryption</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckReplication</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckMOB</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckWithoutTableHbaseReplication.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckWithoutTableHbaseReplication</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckReplication</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestHBaseHostnameVerifier.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestHBaseHostnameVerifier</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHBaseFsckWithoutTableHbaseReplication.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHBaseFsckWithoutTableHbaseReplication</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestHBaseHostnameVerifier.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestHBaseHostnameVerifier</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test cases taken and adapted from Apache ZooKeeper Project</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseMetaEdit.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseMetaEdit</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseMetaEdit.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseMetaEdit</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test being able to edit hbase:meta.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestHBaseMRTestingUtility</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseOnOtherDfsCluster.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseOnOtherDfsCluster</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestHBaseMRTestingUtility</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseOnOtherDfsCluster.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseOnOtherDfsCluster</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that an HBase cluster can run on top of an existing MiniDfsCluster</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestHBaseReplicationEndpoint.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestHBaseReplicationEndpoint</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestHBaseRpcControllerImpl.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestHBaseRpcControllerImpl</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/TestHBaseReplicationEndpoint.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">TestHBaseReplicationEndpoint</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">TestHBaseSaslRpcClient</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestHBaseRpcControllerImpl.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestHBaseRpcControllerImpl</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/backoff/TestHBaseServerExceptionPauseManager.html" title="class or interface in org.apache.hadoop.hbase.client.backoff" class="external-link">TestHBaseServerExceptionPauseManager</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">TestHBaseSaslRpcClient</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseTestingUtil.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseTestingUtil</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/backoff/TestHBaseServerExceptionPauseManager.html" title="class or interface in org.apache.hadoop.hbase.client.backoff" class="external-link">TestHBaseServerExceptionPauseManager</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseTestingUtil.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseTestingUtil</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test our testing utility class</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseTestingUtilitySpinup.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseTestingUtilitySpinup</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHBaseTestingUtilitySpinup.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHBaseTestingUtilitySpinup</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Make sure we can spin up a HBTU without a hbase-site.xml</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestHBaseTrustManager.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestHBaseTrustManager</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/TestHBaseTrustManager.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">TestHBaseTrustManager</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test cases taken and adapted from Apache ZooKeeper Project.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestHBaseWalOnEC.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestHBaseWalOnEC</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/TestHBaseWalOnEC.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">TestHBaseWalOnEC</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Class to test HBaseHbck.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.FailingMergeAfterMetaUpdatedMasterObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck.FailingMergeAfterMetaUpdatedMasterObserver</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.FailingSplitAfterMetaUpdatedMasterObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck.FailingSplitAfterMetaUpdatedMasterObserver</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.FailingMergeAfterMetaUpdatedMasterObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck.FailingMergeAfterMetaUpdatedMasterObserver</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.SuspendProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck.SuspendProcedure</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.FailingSplitAfterMetaUpdatedMasterObserver.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck.FailingSplitAfterMetaUpdatedMasterObserver</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHDFSBlocksDistribution.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHDFSBlocksDistribution</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/TestHbck.SuspendProcedure.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestHbck.SuspendProcedure</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHdfsSnapshotHRegion</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/TestHDFSBlocksDistribution.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestHDFSBlocksDistribution</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHeapMemoryManager</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHdfsSnapshotHRegion</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestHeapSize.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestHeapSize</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHeapMemoryManager</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestHeapSize.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestHeapSize</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testing the sizing that HeapSize offers and compares to the size given by ClassSize.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hbase/archetypes/exemplars/client/TestHelloHBase.html" title="class or interface in org.apache.hbase.archetypes.exemplars.client" class="external-link">TestHelloHBase</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hbase/archetypes/exemplars/client/TestHelloHBase.html" title="class or interface in org.apache.hbase.archetypes.exemplars.client" class="external-link">TestHelloHBase</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Unit testing for HelloHBase.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hbase/archetypes/exemplars/shaded_client/TestHelloHBase.html" title="class or interface in org.apache.hbase.archetypes.exemplars.shaded_client" class="external-link">TestHelloHBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hbase/archetypes/exemplars/shaded_client/TestHelloHBase.html" title="class or interface in org.apache.hbase.archetypes.exemplars.shaded_client" class="external-link">TestHelloHBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Unit testing for HelloHBase.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/screen/help/TestHelpScreenPresenter.html" title="class or interface in org.apache.hadoop.hbase.hbtop.screen.help" class="external-link">TestHelpScreenPresenter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFile.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFile</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/hbtop/screen/help/TestHelpScreenPresenter.html" title="class or interface in org.apache.hadoop.hbase.hbtop.screen.help" class="external-link">TestHelpScreenPresenter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFile.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFile</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">test hfile features.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHFileArchiveUtil</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestHFileArchiveUtil</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that the utility works as expected</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestHFileArchiving.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestHFileArchiving</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/TestHFileArchiving.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestHFileArchiving</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that the <a href="../apidocs/org/apache/hadoop/hbase/backup/HFileArchiver.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link"><code>HFileArchiver</code></a> correctly removes all the parts of a region when cleaning up
a region</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlock.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlock</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlock.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlock</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">This test provides coverage for HFileHeader block fields that are read and interpreted before
HBase checksum validation can be applied.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.Corrupter.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.Corrupter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.Corrupter.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.Corrupter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Enables writing and rewriting portions of the file backing an <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFileBlock</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.CountingConsumer.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.CountingConsumer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.CountingConsumer.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.CountingConsumer</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Reads blocks off of an <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileBlockChannelPositionIterator.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>TestHFileBlockHeaderCorruption.HFileBlockChannelPositionIterator</code></a>, counting them as it does.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileBlockChannelPosition.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.HFileBlockChannelPosition</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileBlockChannelPosition.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.HFileBlockChannelPosition</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Data class to enabled messing with the bytes behind an <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFileBlock</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileBlockChannelPositionIterator.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.HFileBlockChannelPositionIterator</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileBlockChannelPositionIterator.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.HFileBlockChannelPositionIterator</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">A simplified wrapper over an <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFileBlock.BlockIterator</code></a> that looks a lot like an
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link"><code>Iterator</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileTestRule.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.HFileTestRule</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockIndex</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockHeaderCorruption.HFileTestRule.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockHeaderCorruption.HFileTestRule</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockUnpack.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockUnpack</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockIndex</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileDataBlockEncoder</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileBlockUnpack.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileBlockUnpack</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileEncryption</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileDataBlockEncoder</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileInlineToRootChunkConversion.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileInlineToRootChunkConversion</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileEncryption</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileInlineToRootChunkConversion.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileInlineToRootChunkConversion</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test a case when an inline index chunk is converted to a root one.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestHFileLink.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestHFileLink</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/TestHFileLink.html" title="class or interface in org.apache.hadoop.hbase.io" class="external-link">TestHFileLink</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test that FileLink switches between alternate locations when the current location moves or gets
deleted.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestHFileOutputFormat2</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">TestHFileOutputFormat2</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Simple test for <a href="../apidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link"><code>HFileOutputFormat2</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFilePrettyPrinter.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFilePrettyPrinter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileReaderImpl.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileReaderImpl</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFilePrettyPrinter.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFilePrettyPrinter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileReaderImpl.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileReaderImpl</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileScannerImplReferenceCount.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileScannerImplReferenceCount</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileSeek</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileScannerImplReferenceCount.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileScannerImplReferenceCount</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileSeek</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">test the performance for seek.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileWriterV3</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileWriterV3</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testing writing a version 3 <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFile.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFile</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3WithDataEncoders.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileWriterV3WithDataEncoders</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3WithDataEncoders.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">TestHFileWriterV3WithDataEncoders</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Testing writing a version 3 <a href="../apidocs/org/apache/hadoop/hbase/io/hfile/HFile.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link"><code>HFile</code></a> for all encoded blocks</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestHMasterCommandLine</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestHMasterRPCException</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestHMasterCommandLine</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHMobStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHMobStore</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">TestHMasterRPCException</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html" title="class or interface in org.apache.hadoop.hbase.zookeeper" class="external-link">TestHQuorumPeer</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHMobStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHMobStore</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html" title="class or interface in org.apache.hadoop.hbase.zookeeper" class="external-link">TestHQuorumPeer</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Test for HQuorumPeer.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Basic stand-alone testing of HRegion.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion.HRegionForTesting</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion.HRegionForTesting</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The same as HRegion class, the only difference is that instantiateHStore will create a
different HStore - HStoreForTesting.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion.HStoreForTesting</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestHRegion.HStoreForTesting</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">HStoreForTesting is merely the same as HStore, the difference is in the doCompaction method of
... 19557 lines suppressed ...