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 2019/09/08 14:41:40 UTC
[hbase-site] branch asf-site updated: Published site at
693f201f3d474ee216f590e013f9df49dd1503df.
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 e3599f0 Published site at 693f201f3d474ee216f590e013f9df49dd1503df.
e3599f0 is described below
commit e3599f0f3542089da31f06669c3a7d7e5d8bfd7b
Author: jenkins <bu...@apache.org>
AuthorDate: Sun Sep 8 14:41:28 2019 +0000
Published site at 693f201f3d474ee216f590e013f9df49dd1503df.
---
acid-semantics.html | 2 +-
apache_hbase_reference_guide.pdf | 4 +-
book.html | 2 +-
bulk-loads.html | 2 +-
checkstyle-aggregate.html | 360 +-
coc.html | 2 +-
dependencies.html | 2 +-
dependency-convergence.html | 2 +-
dependency-info.html | 2 +-
dependency-management.html | 2 +-
devapidocs/constant-values.html | 4 +-
.../ipc/AbstractRpcClient.AbstractRpcChannel.html | 14 +-
...RpcClient.BlockingRpcChannelImplementation.html | 6 +-
...AbstractRpcClient.RpcChannelImplementation.html | 6 +-
.../apache/hadoop/hbase/ipc/AbstractRpcClient.html | 10 +-
.../src-html/org/apache/hadoop/hbase/Version.html | 4 +-
.../ipc/AbstractRpcClient.AbstractRpcChannel.html | 293 +-
...RpcClient.BlockingRpcChannelImplementation.html | 293 +-
...AbstractRpcClient.RpcChannelImplementation.html | 293 +-
.../apache/hadoop/hbase/ipc/AbstractRpcClient.html | 293 +-
downloads.html | 2 +-
export_control.html | 2 +-
index.html | 2 +-
issue-tracking.html | 2 +-
mail-lists.html | 2 +-
metrics.html | 2 +-
old_news.html | 2 +-
plugin-management.html | 2 +-
plugins.html | 2 +-
poweredbyhbase.html | 2 +-
project-info.html | 2 +-
project-reports.html | 2 +-
project-summary.html | 2 +-
pseudo-distributed.html | 2 +-
replication.html | 2 +-
resources.html | 2 +-
source-repository.html | 2 +-
sponsors.html | 2 +-
supportingprojects.html | 2 +-
team-list.html | 2 +-
testapidocs/index-all.html | 2 +
.../apache/hadoop/hbase/HBaseTestingUtility.html | 524 +-
.../hbase/class-use/StartMiniClusterOption.html | 6 +-
.../apache/hadoop/hbase/HBaseTestingUtility.html | 6265 ++++++++++----------
testdevapidocs/allclasses-frame.html | 2 +
testdevapidocs/allclasses-noframe.html | 2 +
testdevapidocs/index-all.html | 30 +-
...Utility.PortAllocator.AvailablePortChecker.html | 4 +-
.../hbase/HBaseTestingUtility.PortAllocator.html | 20 +-
.../hbase/HBaseTestingUtility.SeenRowTracker.html | 20 +-
.../apache/hadoop/hbase/HBaseTestingUtility.html | 558 +-
.../hadoop/hbase/IntegrationTestingUtility.html | 2 +-
.../apache/hadoop/hbase/backup/package-tree.html | 2 +-
.../hbase/class-use/StartMiniClusterOption.html | 6 +-
.../apache/hadoop/hbase/client/TestConnection.html | 104 +-
.../apache/hadoop/hbase/io/hfile/package-tree.html | 2 +-
...rRestartFailover.AssignmentManagerForTest.html} | 133 +-
.../TestClusterRestartFailover.HMasterForTest.html | 406 ++
.../hbase/master/TestClusterRestartFailover.html | 120 +-
.../TestClusterRestartFailoverSplitWithoutZk.html | 23 +-
...erRestartFailover.AssignmentManagerForTest.html | 125 +
.../TestClusterRestartFailover.HMasterForTest.html | 125 +
.../apache/hadoop/hbase/master/package-frame.html | 2 +
.../hadoop/hbase/master/package-summary.html | 8 +
.../apache/hadoop/hbase/master/package-tree.html | 6 +
.../org/apache/hadoop/hbase/package-tree.html | 8 +-
.../hadoop/hbase/procedure/package-tree.html | 8 +-
.../hadoop/hbase/procedure2/package-tree.html | 2 +-
.../hadoop/hbase/regionserver/package-tree.html | 2 +-
.../org/apache/hadoop/hbase/test/package-tree.html | 4 +-
.../org/apache/hadoop/hbase/wal/package-tree.html | 2 +-
testdevapidocs/overview-tree.html | 2 +
...Utility.PortAllocator.AvailablePortChecker.html | 6265 ++++++++++----------
.../hbase/HBaseTestingUtility.PortAllocator.html | 6265 ++++++++++----------
.../hbase/HBaseTestingUtility.SeenRowTracker.html | 6265 ++++++++++----------
.../apache/hadoop/hbase/HBaseTestingUtility.html | 6265 ++++++++++----------
.../apache/hadoop/hbase/client/TestConnection.html | 675 ++-
...erRestartFailover.AssignmentManagerForTest.html | 253 +
.../TestClusterRestartFailover.HMasterForTest.html | 253 +
.../hbase/master/TestClusterRestartFailover.html | 257 +-
80 files changed, 19092 insertions(+), 17567 deletions(-)
diff --git a/acid-semantics.html b/acid-semantics.html
index 668c2f4..9c321c6 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -450,7 +450,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 6061bdf..0ede80e 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
/Author (Apache HBase Team)
/Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
/Producer (Apache HBase Team)
-/ModDate (D:20190907143852+00'00')
-/CreationDate (D:20190907143852+00'00')
+/ModDate (D:20190908143831+00'00')
+/CreationDate (D:20190908143831+00'00')
>>
endobj
2 0 obj
diff --git a/book.html b/book.html
index f000ee9..6755ae6 100644
--- a/book.html
+++ b/book.html
@@ -43080,7 +43080,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
<div id="footer">
<div id="footer-text">
Version 3.0.0-SNAPSHOT<br>
-Last updated 2019-09-07 14:29:49 UTC
+Last updated 2019-09-08 14:29:52 UTC
</div>
</div>
</body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 3ed8dee..d643983 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -155,7 +155,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 1476923..497874e 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -9731,1075 +9731,1075 @@
<td>blocks</td>
<td>EmptyBlock</td>
<td>Must have at least one statement.</td>
-<td>1255</td></tr>
+<td>1264</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1266</td></tr>
+<td>1275</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1279</td></tr>
+<td>1288</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1341</td></tr>
+<td>1350</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1356</td></tr>
+<td>1365</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1368</td></tr>
+<td>1377</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1369</td></tr>
+<td>1378</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1370</td></tr>
+<td>1379</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1372</td></tr>
+<td>1381</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1387</td></tr>
+<td>1396</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1400</td></tr>
+<td>1409</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1422</td></tr>
+<td>1431</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1430</td></tr>
+<td>1439</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1438</td></tr>
+<td>1447</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1446</td></tr>
+<td>1455</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1454</td></tr>
+<td>1463</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1455</td></tr>
+<td>1464</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1457</td></tr>
+<td>1466</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1460</td></tr>
+<td>1469</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1466</td></tr>
+<td>1475</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1467</td></tr>
+<td>1476</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1469</td></tr>
+<td>1478</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1472</td></tr>
+<td>1481</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1482</td></tr>
+<td>1491</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1483</td></tr>
+<td>1492</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1485</td></tr>
+<td>1494</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1488</td></tr>
+<td>1497</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1494</td></tr>
+<td>1503</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1495</td></tr>
+<td>1504</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1496</td></tr>
+<td>1505</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1498</td></tr>
+<td>1507</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>1502</td></tr>
+<td>1511</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1512</td></tr>
+<td>1521</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1513</td></tr>
+<td>1522</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1515</td></tr>
+<td>1524</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1518</td></tr>
+<td>1527</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1524</td></tr>
+<td>1533</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1525</td></tr>
+<td>1534</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1527</td></tr>
+<td>1536</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1535</td></tr>
+<td>1544</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1536</td></tr>
+<td>1545</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1537</td></tr>
+<td>1546</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1539</td></tr>
+<td>1548</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1563</td></tr>
+<td>1572</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1575</td></tr>
+<td>1584</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1576</td></tr>
+<td>1585</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1579</td></tr>
+<td>1588</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1582</td></tr>
+<td>1591</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' child has incorrect indentation level 10, expected level should be 8.</td>
-<td>1623</td></tr>
+<td>1632</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1644</td></tr>
+<td>1653</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'for' child has incorrect indentation level 9, expected level should be 8.</td>
-<td>1651</td></tr>
+<td>1660</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1674</td></tr>
+<td>1683</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1685</td></tr>
+<td>1694</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1686</td></tr>
+<td>1695</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1687</td></tr>
+<td>1696</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1689</td></tr>
+<td>1698</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1692</td></tr>
+<td>1701</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1698</td></tr>
+<td>1707</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1699</td></tr>
+<td>1708</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1700</td></tr>
+<td>1709</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1702</td></tr>
+<td>1711</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1711</td></tr>
+<td>1720</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1712</td></tr>
+<td>1721</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1713</td></tr>
+<td>1722</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1714</td></tr>
+<td>1723</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1716</td></tr>
+<td>1725</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1741</td></tr>
+<td>1750</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1742</td></tr>
+<td>1751</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1743</td></tr>
+<td>1752</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1745</td></tr>
+<td>1754</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1754</td></tr>
+<td>1763</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1755</td></tr>
+<td>1764</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1756</td></tr>
+<td>1765</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1757</td></tr>
+<td>1766</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1759</td></tr>
+<td>1768</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1782</td></tr>
+<td>1791</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'for' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1783</td></tr>
+<td>1792</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'for' child has incorrect indentation level 8, expected level should be 6.</td>
-<td>1784</td></tr>
+<td>1793</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' has incorrect indentation level 8, expected level should be 6.</td>
-<td>1787</td></tr>
+<td>1796</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' child has incorrect indentation level 10, expected level should be 8.</td>
-<td>1788</td></tr>
+<td>1797</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if rcurly' has incorrect indentation level 8, expected level should be 6.</td>
-<td>1789</td></tr>
+<td>1798</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'for' child has incorrect indentation level 8, expected level should be 6.</td>
-<td>1790</td></tr>
+<td>1799</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'for rcurly' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1791</td></tr>
+<td>1800</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1792</td></tr>
+<td>1801</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' child has incorrect indentation level 8, expected level should be 6.</td>
-<td>1793</td></tr>
+<td>1802</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if rcurly' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1794</td></tr>
+<td>1803</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1795</td></tr>
+<td>1804</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1798</td></tr>
+<td>1807</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1799</td></tr>
+<td>1808</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def rcurly' has incorrect indentation level 4, expected level should be 2.</td>
-<td>1800</td></tr>
+<td>1809</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1804</td></tr>
+<td>1813</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1805</td></tr>
+<td>1814</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1806</td></tr>
+<td>1815</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1808</td></tr>
+<td>1817</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1812</td></tr>
+<td>1821</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1833</td></tr>
+<td>1842</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1834</td></tr>
+<td>1843</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1835</td></tr>
+<td>1844</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1837</td></tr>
+<td>1846</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1856</td></tr>
+<td>1865</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1857</td></tr>
+<td>1866</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>1859</td></tr>
+<td>1868</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' child has incorrect indentation level 10, expected level should be 8.</td>
-<td>1969</td></tr>
+<td>1978</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'if' child has incorrect indentation level 10, expected level should be 8.</td>
-<td>1998</td></tr>
+<td>2007</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2011</td></tr>
+<td>2020</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2015</td></tr>
+<td>2024</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2034</td></tr>
+<td>2043</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2068</td></tr>
+<td>2077</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2069</td></tr>
+<td>2078</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2070</td></tr>
+<td>2079</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2071</td></tr>
+<td>2080</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2072</td></tr>
+<td>2081</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2075</td></tr>
+<td>2084</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2117</td></tr>
+<td>2126</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2167</td></tr>
+<td>2176</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2178</td></tr>
+<td>2187</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2189</td></tr>
+<td>2198</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2201</td></tr>
+<td>2210</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2213</td></tr>
+<td>2222</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2297</td></tr>
+<td>2306</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2300</td></tr>
+<td>2309</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>2401</td></tr>
+<td>2410</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2545</td></tr>
+<td>2554</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2546</td></tr>
+<td>2555</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2547</td></tr>
+<td>2556</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2549</td></tr>
+<td>2558</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2553</td></tr>
+<td>2562</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2715</td></tr>
+<td>2724</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2716</td></tr>
+<td>2725</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>2925</td></tr>
+<td>2934</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 3, expected level should be 4.</td>
-<td>2963</td></tr>
+<td>2972</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2994</td></tr>
+<td>3003</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2996</td></tr>
+<td>3005</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def rcurly' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2997</td></tr>
+<td>3006</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2998</td></tr>
+<td>3007</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'while' child has incorrect indentation level 7, expected level should be 6.</td>
-<td>3009</td></tr>
+<td>3018</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3130</td></tr>
+<td>3139</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>3162</td></tr>
+<td>3171</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>JavadocTagContinuationIndentation</td>
<td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>3189</td></tr>
+<td>3198</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3210</td></tr>
+<td>3219</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3211</td></tr>
+<td>3220</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3310</td></tr>
+<td>3319</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3311</td></tr>
+<td>3320</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3314</td></tr>
+<td>3323</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3319</td></tr>
+<td>3328</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3327</td></tr>
+<td>3336</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3328</td></tr>
+<td>3337</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3344</td></tr>
+<td>3353</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3345</td></tr>
+<td>3354</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3357</td></tr>
+<td>3366</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3378</td></tr>
+<td>3387</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3410</td></tr>
+<td>3419</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3414</td></tr>
+<td>3423</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3466</td></tr>
+<td>3475</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3467</td></tr>
+<td>3476</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3468</td></tr>
+<td>3477</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3469</td></tr>
+<td>3478</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3470</td></tr>
+<td>3479</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3510</td></tr>
+<td>3519</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3511</td></tr>
+<td>3520</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3536</td></tr>
+<td>3545</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3545</td></tr>
+<td>3554</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3558</td></tr>
+<td>3567</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>coding</td>
<td>InnerAssignment</td>
<td>Inner assignments should be avoided.</td>
-<td>3578</td></tr>
+<td>3587</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 104).</td>
-<td>3609</td></tr>
+<td>3618</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3668</td></tr>
+<td>3677</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>3669</td></tr>
+<td>3678</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>indentation</td>
<td>Indentation</td>
<td>'method def rparen' has incorrect indentation level 48, expected level should be 2.</td>
-<td>3689</td></tr>
+<td>3698</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>EmptyBlock</td>
<td>Must have at least one statement.</td>
-<td>3707</td></tr>
+<td>3716</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 101).</td>
-<td>3998</td></tr>
+<td>4007</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>4085</td></tr>
+<td>4094</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>4087</td></tr>
+<td>4096</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>4121</td></tr>
+<td>4130</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>4162</td></tr>
+<td>4171</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'if' construct must use '{}'s.</td>
-<td>4164</td></tr>
+<td>4173</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>4242</td></tr>
+<td>4251</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>4250</td></tr>
+<td>4259</td></tr>
<tr class="a">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>4258</td></tr>
+<td>4267</td></tr>
<tr class="b">
<td><img src="images/icon_error_sml.gif" alt="" /> Error</td>
<td>javadoc</td>
<td>NonEmptyAtclauseDescription</td>
<td>At-clause should have a non-empty description.</td>
-<td>4259</td></tr></table></div>
+<td>4268</td></tr></table></div>
<div class="section">
<h3 id="org.apache.hadoop.hbase.HColumnDescriptor.java">org/apache/hadoop/hbase/HColumnDescriptor.java</h3>
<table border="0" class="table table-striped">
@@ -92801,7 +92801,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/coc.html b/coc.html
index 4f38547..eed0c9e 100644
--- a/coc.html
+++ b/coc.html
@@ -224,7 +224,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index 210c04a..7bf9e2a 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -296,7 +296,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index b76feab..9231281 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -541,7 +541,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index f73c71e..a34c1b1 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -177,7 +177,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 2b8b770..345a6e7 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -899,7 +899,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index a20608e..b015951 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -4006,14 +4006,14 @@
<!-- -->
</a><code>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Sep 7 14:35:10 UTC 2019"</code></td>
+<td class="colLast"><code>"Sun Sep 8 14:34:49 UTC 2019"</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
<!-- -->
</a><code>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"78bae9e3d02e259cd9596fd72b1c985c2962c1c3"</code></td>
+<td class="colLast"><code>"693f201f3d474ee216f590e013f9df49dd1503df"</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html
index 8f27a22..dfdd00a 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.529">AbstractRpcClient.AbstractRpcChannel</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.530">AbstractRpcClient.AbstractRpcChannel</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
</li>
</ul>
@@ -224,7 +224,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>addr</h4>
-<pre>protected final <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.531">addr</a></pre>
+<pre>protected final <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.532">addr</a></pre>
</li>
</ul>
<a name="rpcClient">
@@ -233,7 +233,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>rpcClient</h4>
-<pre>protected final <a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.533">rpcClient</a></pre>
+<pre>protected final <a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.534">rpcClient</a></pre>
</li>
</ul>
<a name="ticket">
@@ -242,7 +242,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>ticket</h4>
-<pre>protected final <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.535">ticket</a></pre>
+<pre>protected final <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.536">ticket</a></pre>
</li>
</ul>
<a name="rpcTimeout">
@@ -251,7 +251,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>rpcTimeout</h4>
-<pre>protected final int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.537">rpcTimeout</a></pre>
+<pre>protected final int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.538">rpcTimeout</a></pre>
</li>
</ul>
</li>
@@ -268,7 +268,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractRpcChannel</h4>
-<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.539">AbstractRpcChannel</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> rpcClient,
+<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.540">AbstractRpcChannel</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> rpcClient,
<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a> addr,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> ticket,
int rpcTimeout)</pre>
@@ -288,7 +288,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>configureRpcController</h4>
-<pre>protected <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.552">configureRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller)</pre>
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.553">configureRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller)</pre>
<div class="block">Configure an rpc controller</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html
index 05ab887..231f0cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.573">AbstractRpcClient.BlockingRpcChannelImplementation</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.574">AbstractRpcClient.BlockingRpcChannelImplementation</a>
extends <a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient.AbstractRpcChannel</a>
implements org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel</pre>
<div class="block">Blocking rpc channel that goes via hbase rpc.</div>
@@ -223,7 +223,7 @@ implements org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel</p
<ul class="blockListLast">
<li class="blockList">
<h4>BlockingRpcChannelImplementation</h4>
-<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html#line.576">BlockingRpcChannelImplementation</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> rpcClient,
+<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html#line.577">BlockingRpcChannelImplementation</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> rpcClient,
<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a> addr,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> ticket,
int rpcTimeout)</pre>
@@ -243,7 +243,7 @@ implements org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel</p
<ul class="blockListLast">
<li class="blockList">
<h4>callBlockingMethod</h4>
-<pre>public org.apache.hbase.thirdparty.com.google.protobuf.Message <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html#line.582">callBlockingMethod</a>(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor md,
+<pre>public org.apache.hbase.thirdparty.com.google.protobuf.Message <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html#line.583">callBlockingMethod</a>(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor md,
org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller,
org.apache.hbase.thirdparty.com.google.protobuf.Message param,
org.apache.hbase.thirdparty.com.google.protobuf.Message returnType)
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html
index 47c904f..c7d3925 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.592">AbstractRpcClient.RpcChannelImplementation</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.593">AbstractRpcClient.RpcChannelImplementation</a>
extends <a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient.AbstractRpcChannel</a>
implements org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel</pre>
<div class="block">Async rpc channel that goes via hbase rpc.</div>
@@ -224,7 +224,7 @@ implements org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>RpcChannelImplementation</h4>
-<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html#line.595">RpcChannelImplementation</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> rpcClient,
+<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html#line.596">RpcChannelImplementation</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a><?> rpcClient,
<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a> addr,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> ticket,
int rpcTimeout)
@@ -249,7 +249,7 @@ implements org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel</pre>
<ul class="blockListLast">
<li class="blockList">
<h4>callMethod</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html#line.601">callMethod</a>(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor md,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html#line.602">callMethod</a>(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor md,
org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller,
org.apache.hbase.thirdparty.com.google.protobuf.Message param,
org.apache.hbase.thirdparty.com.google.protobuf.Message returnType,
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html
index 4b8c56b..b58d656 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html
@@ -1036,7 +1036,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" t
<ul class="blockList">
<li class="blockList">
<h4>configureHBaseRpcController</h4>
-<pre>static <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.476">configureHBaseRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller,
+<pre>static <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.477">configureHBaseRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller,
int channelOperationTimeout)</pre>
<div class="block">Configure an hbase rpccontroller</div>
<dl>
@@ -1054,7 +1054,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" t
<ul class="blockList">
<li class="blockList">
<h4>closeInternal</h4>
-<pre>protected abstract void <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.491">closeInternal</a>()</pre>
+<pre>protected abstract void <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.492">closeInternal</a>()</pre>
</li>
</ul>
<a name="close--">
@@ -1063,7 +1063,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" t
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.494">close</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.495">close</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html#close--">RpcClient</a></code></span></div>
<div class="block">Stop all threads related to this client. No further calls may be made
using this client.</div>
@@ -1083,7 +1083,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" t
<ul class="blockList">
<li class="blockList">
<h4>createBlockingRpcChannel</h4>
-<pre>public org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.518">createBlockingRpcChannel</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
+<pre>public org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.519">createBlockingRpcChannel</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> ticket,
int rpcTimeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></pre>
@@ -1110,7 +1110,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" t
<ul class="blockListLast">
<li class="blockList">
<h4>createRpcChannel</h4>
-<pre>public org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.524">createRpcChannel</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
+<pre>public org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.525">createRpcChannel</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user,
int rpcTimeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></pre>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index c454ab5..1c801e1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,9 +16,9 @@
<span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
<span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
<span class="sourceLineNo">010</span> public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span> public static final String revision = "78bae9e3d02e259cd9596fd72b1c985c2962c1c3";<a name="line.11"></a>
+<span class="sourceLineNo">011</span> public static final String revision = "693f201f3d474ee216f590e013f9df49dd1503df";<a name="line.11"></a>
<span class="sourceLineNo">012</span> public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span> public static final String date = "Sat Sep 7 14:35:10 UTC 2019";<a name="line.13"></a>
+<span class="sourceLineNo">013</span> public static final String date = "Sun Sep 8 14:34:49 UTC 2019";<a name="line.13"></a>
<span class="sourceLineNo">014</span> public static final String url = "git://jenkins-websites-he-de.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
<span class="sourceLineNo">015</span> public static final String srcChecksum = "(stdin)=";<a name="line.15"></a>
<span class="sourceLineNo">016</span>}<a name="line.16"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html
index 2e7807e..7f0f1e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html
@@ -471,152 +471,153 @@
<span class="sourceLineNo">463</span> + connection.remoteId);<a name="line.463"></a>
<span class="sourceLineNo">464</span> connections.removeValue(remoteId, connection);<a name="line.464"></a>
<span class="sourceLineNo">465</span> connection.shutdown();<a name="line.465"></a>
-<span class="sourceLineNo">466</span> }<a name="line.466"></a>
-<span class="sourceLineNo">467</span> }<a name="line.467"></a>
-<span class="sourceLineNo">468</span> }<a name="line.468"></a>
-<span class="sourceLineNo">469</span> }<a name="line.469"></a>
-<span class="sourceLineNo">470</span> /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span> * Configure an hbase rpccontroller<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * @param controller to configure<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * @param channelOperationTimeout timeout for operation<a name="line.473"></a>
-<span class="sourceLineNo">474</span> * @return configured controller<a name="line.474"></a>
-<span class="sourceLineNo">475</span> */<a name="line.475"></a>
-<span class="sourceLineNo">476</span> static HBaseRpcController configureHBaseRpcController(<a name="line.476"></a>
-<span class="sourceLineNo">477</span> RpcController controller, int channelOperationTimeout) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> HBaseRpcController hrc;<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> hrc = (HBaseRpcController) controller;<a name="line.480"></a>
-<span class="sourceLineNo">481</span> if (!hrc.hasCallTimeout()) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.482"></a>
-<span class="sourceLineNo">483</span> }<a name="line.483"></a>
-<span class="sourceLineNo">484</span> } else {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> hrc = new HBaseRpcControllerImpl();<a name="line.485"></a>
-<span class="sourceLineNo">486</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> return hrc;<a name="line.488"></a>
-<span class="sourceLineNo">489</span> }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span> protected abstract void closeInternal();<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> @Override<a name="line.493"></a>
-<span class="sourceLineNo">494</span> public void close() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span> if (LOG.isDebugEnabled()) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span> LOG.debug("Stopping rpc client");<a name="line.496"></a>
-<span class="sourceLineNo">497</span> }<a name="line.497"></a>
-<span class="sourceLineNo">498</span> Collection<T> connToClose;<a name="line.498"></a>
-<span class="sourceLineNo">499</span> synchronized (connections) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (!running) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> return;<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> running = false;<a name="line.503"></a>
-<span class="sourceLineNo">504</span> connToClose = connections.values();<a name="line.504"></a>
-<span class="sourceLineNo">505</span> connections.clear();<a name="line.505"></a>
-<span class="sourceLineNo">506</span> }<a name="line.506"></a>
-<span class="sourceLineNo">507</span> cleanupIdleConnectionTask.cancel(true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> for (T conn : connToClose) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span> conn.shutdown();<a name="line.509"></a>
-<span class="sourceLineNo">510</span> }<a name="line.510"></a>
-<span class="sourceLineNo">511</span> closeInternal();<a name="line.511"></a>
-<span class="sourceLineNo">512</span> for (T conn : connToClose) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span> conn.cleanupConnection();<a name="line.513"></a>
-<span class="sourceLineNo">514</span> }<a name="line.514"></a>
-<span class="sourceLineNo">515</span> }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span> @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.518"></a>
-<span class="sourceLineNo">519</span> int rpcTimeout) throws UnknownHostException {<a name="line.519"></a>
-<span class="sourceLineNo">520</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.520"></a>
-<span class="sourceLineNo">521</span> }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span> @Override<a name="line.523"></a>
-<span class="sourceLineNo">524</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.524"></a>
-<span class="sourceLineNo">525</span> throws UnknownHostException {<a name="line.525"></a>
-<span class="sourceLineNo">526</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.526"></a>
-<span class="sourceLineNo">527</span> }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span> private static class AbstractRpcChannel {<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span> protected final InetSocketAddress addr;<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span> protected final User ticket;<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span> protected final int rpcTimeout;<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.539"></a>
-<span class="sourceLineNo">540</span> User ticket, int rpcTimeout) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span> this.addr = addr;<a name="line.541"></a>
-<span class="sourceLineNo">542</span> this.rpcClient = rpcClient;<a name="line.542"></a>
-<span class="sourceLineNo">543</span> this.ticket = ticket;<a name="line.543"></a>
-<span class="sourceLineNo">544</span> this.rpcTimeout = rpcTimeout;<a name="line.544"></a>
-<span class="sourceLineNo">545</span> }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span> /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span> * Configure an rpc controller<a name="line.548"></a>
-<span class="sourceLineNo">549</span> * @param controller to configure<a name="line.549"></a>
-<span class="sourceLineNo">550</span> * @return configured rpc controller<a name="line.550"></a>
-<span class="sourceLineNo">551</span> */<a name="line.551"></a>
-<span class="sourceLineNo">552</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span> HBaseRpcController hrc;<a name="line.553"></a>
-<span class="sourceLineNo">554</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.554"></a>
-<span class="sourceLineNo">555</span> // side. And now we may use ServerRpcController.<a name="line.555"></a>
-<span class="sourceLineNo">556</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span> hrc = (HBaseRpcController) controller;<a name="line.557"></a>
-<span class="sourceLineNo">558</span> if (!hrc.hasCallTimeout()) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span> hrc.setCallTimeout(rpcTimeout);<a name="line.559"></a>
-<span class="sourceLineNo">560</span> }<a name="line.560"></a>
-<span class="sourceLineNo">561</span> } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span> hrc = new HBaseRpcControllerImpl();<a name="line.562"></a>
-<span class="sourceLineNo">563</span> hrc.setCallTimeout(rpcTimeout);<a name="line.563"></a>
-<span class="sourceLineNo">564</span> }<a name="line.564"></a>
-<span class="sourceLineNo">565</span> return hrc;<a name="line.565"></a>
-<span class="sourceLineNo">566</span> }<a name="line.566"></a>
-<span class="sourceLineNo">567</span> }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> /**<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> */<a name="line.571"></a>
-<span class="sourceLineNo">572</span> @VisibleForTesting<a name="line.572"></a>
-<span class="sourceLineNo">573</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.573"></a>
-<span class="sourceLineNo">574</span> implements BlockingRpcChannel {<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.576"></a>
-<span class="sourceLineNo">577</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.578"></a>
-<span class="sourceLineNo">579</span> }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span> @Override<a name="line.581"></a>
-<span class="sourceLineNo">582</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.582"></a>
-<span class="sourceLineNo">583</span> Message param, Message returnType) throws ServiceException {<a name="line.583"></a>
-<span class="sourceLineNo">584</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.584"></a>
-<span class="sourceLineNo">585</span> param, returnType, ticket, addr);<a name="line.585"></a>
-<span class="sourceLineNo">586</span> }<a name="line.586"></a>
-<span class="sourceLineNo">587</span> }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span> /**<a name="line.589"></a>
-<span class="sourceLineNo">590</span> * Async rpc channel that goes via hbase rpc.<a name="line.590"></a>
-<span class="sourceLineNo">591</span> */<a name="line.591"></a>
-<span class="sourceLineNo">592</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.592"></a>
-<span class="sourceLineNo">593</span> RpcChannel {<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.595"></a>
-<span class="sourceLineNo">596</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.596"></a>
-<span class="sourceLineNo">597</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.597"></a>
-<span class="sourceLineNo">598</span> }<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span> @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.601"></a>
-<span class="sourceLineNo">602</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.603"></a>
-<span class="sourceLineNo">604</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.604"></a>
-<span class="sourceLineNo">605</span> this.rpcClient.callMethod(md,<a name="line.605"></a>
-<span class="sourceLineNo">606</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.606"></a>
-<span class="sourceLineNo">607</span> "RpcController can not be null for async rpc call")),<a name="line.607"></a>
-<span class="sourceLineNo">608</span> param, returnType, ticket, addr, done);<a name="line.608"></a>
-<span class="sourceLineNo">609</span> }<a name="line.609"></a>
-<span class="sourceLineNo">610</span> }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>}<a name="line.611"></a>
+<span class="sourceLineNo">466</span> connection.cleanupConnection();<a name="line.466"></a>
+<span class="sourceLineNo">467</span> }<a name="line.467"></a>
+<span class="sourceLineNo">468</span> }<a name="line.468"></a>
+<span class="sourceLineNo">469</span> }<a name="line.469"></a>
+<span class="sourceLineNo">470</span> }<a name="line.470"></a>
+<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
+<span class="sourceLineNo">472</span> * Configure an hbase rpccontroller<a name="line.472"></a>
+<span class="sourceLineNo">473</span> * @param controller to configure<a name="line.473"></a>
+<span class="sourceLineNo">474</span> * @param channelOperationTimeout timeout for operation<a name="line.474"></a>
+<span class="sourceLineNo">475</span> * @return configured controller<a name="line.475"></a>
+<span class="sourceLineNo">476</span> */<a name="line.476"></a>
+<span class="sourceLineNo">477</span> static HBaseRpcController configureHBaseRpcController(<a name="line.477"></a>
+<span class="sourceLineNo">478</span> RpcController controller, int channelOperationTimeout) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span> HBaseRpcController hrc;<a name="line.479"></a>
+<span class="sourceLineNo">480</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span> hrc = (HBaseRpcController) controller;<a name="line.481"></a>
+<span class="sourceLineNo">482</span> if (!hrc.hasCallTimeout()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.483"></a>
+<span class="sourceLineNo">484</span> }<a name="line.484"></a>
+<span class="sourceLineNo">485</span> } else {<a name="line.485"></a>
+<span class="sourceLineNo">486</span> hrc = new HBaseRpcControllerImpl();<a name="line.486"></a>
+<span class="sourceLineNo">487</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.487"></a>
+<span class="sourceLineNo">488</span> }<a name="line.488"></a>
+<span class="sourceLineNo">489</span> return hrc;<a name="line.489"></a>
+<span class="sourceLineNo">490</span> }<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span> protected abstract void closeInternal();<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span> @Override<a name="line.494"></a>
+<span class="sourceLineNo">495</span> public void close() {<a name="line.495"></a>
+<span class="sourceLineNo">496</span> if (LOG.isDebugEnabled()) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span> LOG.debug("Stopping rpc client");<a name="line.497"></a>
+<span class="sourceLineNo">498</span> }<a name="line.498"></a>
+<span class="sourceLineNo">499</span> Collection<T> connToClose;<a name="line.499"></a>
+<span class="sourceLineNo">500</span> synchronized (connections) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span> if (!running) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span> return;<a name="line.502"></a>
+<span class="sourceLineNo">503</span> }<a name="line.503"></a>
+<span class="sourceLineNo">504</span> running = false;<a name="line.504"></a>
+<span class="sourceLineNo">505</span> connToClose = connections.values();<a name="line.505"></a>
+<span class="sourceLineNo">506</span> connections.clear();<a name="line.506"></a>
+<span class="sourceLineNo">507</span> }<a name="line.507"></a>
+<span class="sourceLineNo">508</span> cleanupIdleConnectionTask.cancel(true);<a name="line.508"></a>
+<span class="sourceLineNo">509</span> for (T conn : connToClose) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span> conn.shutdown();<a name="line.510"></a>
+<span class="sourceLineNo">511</span> }<a name="line.511"></a>
+<span class="sourceLineNo">512</span> closeInternal();<a name="line.512"></a>
+<span class="sourceLineNo">513</span> for (T conn : connToClose) {<a name="line.513"></a>
+<span class="sourceLineNo">514</span> conn.cleanupConnection();<a name="line.514"></a>
+<span class="sourceLineNo">515</span> }<a name="line.515"></a>
+<span class="sourceLineNo">516</span> }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span> @Override<a name="line.518"></a>
+<span class="sourceLineNo">519</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.519"></a>
+<span class="sourceLineNo">520</span> int rpcTimeout) throws UnknownHostException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.521"></a>
+<span class="sourceLineNo">522</span> }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span> @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.525"></a>
+<span class="sourceLineNo">526</span> throws UnknownHostException {<a name="line.526"></a>
+<span class="sourceLineNo">527</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.527"></a>
+<span class="sourceLineNo">528</span> }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span> private static class AbstractRpcChannel {<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span> protected final InetSocketAddress addr;<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span> protected final User ticket;<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span> protected final int rpcTimeout;<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.540"></a>
+<span class="sourceLineNo">541</span> User ticket, int rpcTimeout) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span> this.addr = addr;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> this.rpcClient = rpcClient;<a name="line.543"></a>
+<span class="sourceLineNo">544</span> this.ticket = ticket;<a name="line.544"></a>
+<span class="sourceLineNo">545</span> this.rpcTimeout = rpcTimeout;<a name="line.545"></a>
+<span class="sourceLineNo">546</span> }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span> /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span> * Configure an rpc controller<a name="line.549"></a>
+<span class="sourceLineNo">550</span> * @param controller to configure<a name="line.550"></a>
+<span class="sourceLineNo">551</span> * @return configured rpc controller<a name="line.551"></a>
+<span class="sourceLineNo">552</span> */<a name="line.552"></a>
+<span class="sourceLineNo">553</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span> HBaseRpcController hrc;<a name="line.554"></a>
+<span class="sourceLineNo">555</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.555"></a>
+<span class="sourceLineNo">556</span> // side. And now we may use ServerRpcController.<a name="line.556"></a>
+<span class="sourceLineNo">557</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> hrc = (HBaseRpcController) controller;<a name="line.558"></a>
+<span class="sourceLineNo">559</span> if (!hrc.hasCallTimeout()) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span> hrc.setCallTimeout(rpcTimeout);<a name="line.560"></a>
+<span class="sourceLineNo">561</span> }<a name="line.561"></a>
+<span class="sourceLineNo">562</span> } else {<a name="line.562"></a>
+<span class="sourceLineNo">563</span> hrc = new HBaseRpcControllerImpl();<a name="line.563"></a>
+<span class="sourceLineNo">564</span> hrc.setCallTimeout(rpcTimeout);<a name="line.564"></a>
+<span class="sourceLineNo">565</span> }<a name="line.565"></a>
+<span class="sourceLineNo">566</span> return hrc;<a name="line.566"></a>
+<span class="sourceLineNo">567</span> }<a name="line.567"></a>
+<span class="sourceLineNo">568</span> }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span> /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.571"></a>
+<span class="sourceLineNo">572</span> */<a name="line.572"></a>
+<span class="sourceLineNo">573</span> @VisibleForTesting<a name="line.573"></a>
+<span class="sourceLineNo">574</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.574"></a>
+<span class="sourceLineNo">575</span> implements BlockingRpcChannel {<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.577"></a>
+<span class="sourceLineNo">578</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.579"></a>
+<span class="sourceLineNo">580</span> }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span> @Override<a name="line.582"></a>
+<span class="sourceLineNo">583</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.583"></a>
+<span class="sourceLineNo">584</span> Message param, Message returnType) throws ServiceException {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.585"></a>
+<span class="sourceLineNo">586</span> param, returnType, ticket, addr);<a name="line.586"></a>
+<span class="sourceLineNo">587</span> }<a name="line.587"></a>
+<span class="sourceLineNo">588</span> }<a name="line.588"></a>
+<span class="sourceLineNo">589</span><a name="line.589"></a>
+<span class="sourceLineNo">590</span> /**<a name="line.590"></a>
+<span class="sourceLineNo">591</span> * Async rpc channel that goes via hbase rpc.<a name="line.591"></a>
+<span class="sourceLineNo">592</span> */<a name="line.592"></a>
+<span class="sourceLineNo">593</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.593"></a>
+<span class="sourceLineNo">594</span> RpcChannel {<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.596"></a>
+<span class="sourceLineNo">597</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.597"></a>
+<span class="sourceLineNo">598</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.598"></a>
+<span class="sourceLineNo">599</span> }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span> @Override<a name="line.601"></a>
+<span class="sourceLineNo">602</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.602"></a>
+<span class="sourceLineNo">603</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.604"></a>
+<span class="sourceLineNo">605</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.605"></a>
+<span class="sourceLineNo">606</span> this.rpcClient.callMethod(md,<a name="line.606"></a>
+<span class="sourceLineNo">607</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.607"></a>
+<span class="sourceLineNo">608</span> "RpcController can not be null for async rpc call")),<a name="line.608"></a>
+<span class="sourceLineNo">609</span> param, returnType, ticket, addr, done);<a name="line.609"></a>
+<span class="sourceLineNo">610</span> }<a name="line.610"></a>
+<span class="sourceLineNo">611</span> }<a name="line.611"></a>
+<span class="sourceLineNo">612</span>}<a name="line.612"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html
index 2e7807e..7f0f1e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.BlockingRpcChannelImplementation.html
@@ -471,152 +471,153 @@
<span class="sourceLineNo">463</span> + connection.remoteId);<a name="line.463"></a>
<span class="sourceLineNo">464</span> connections.removeValue(remoteId, connection);<a name="line.464"></a>
<span class="sourceLineNo">465</span> connection.shutdown();<a name="line.465"></a>
-<span class="sourceLineNo">466</span> }<a name="line.466"></a>
-<span class="sourceLineNo">467</span> }<a name="line.467"></a>
-<span class="sourceLineNo">468</span> }<a name="line.468"></a>
-<span class="sourceLineNo">469</span> }<a name="line.469"></a>
-<span class="sourceLineNo">470</span> /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span> * Configure an hbase rpccontroller<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * @param controller to configure<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * @param channelOperationTimeout timeout for operation<a name="line.473"></a>
-<span class="sourceLineNo">474</span> * @return configured controller<a name="line.474"></a>
-<span class="sourceLineNo">475</span> */<a name="line.475"></a>
-<span class="sourceLineNo">476</span> static HBaseRpcController configureHBaseRpcController(<a name="line.476"></a>
-<span class="sourceLineNo">477</span> RpcController controller, int channelOperationTimeout) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> HBaseRpcController hrc;<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> hrc = (HBaseRpcController) controller;<a name="line.480"></a>
-<span class="sourceLineNo">481</span> if (!hrc.hasCallTimeout()) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.482"></a>
-<span class="sourceLineNo">483</span> }<a name="line.483"></a>
-<span class="sourceLineNo">484</span> } else {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> hrc = new HBaseRpcControllerImpl();<a name="line.485"></a>
-<span class="sourceLineNo">486</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> return hrc;<a name="line.488"></a>
-<span class="sourceLineNo">489</span> }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span> protected abstract void closeInternal();<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> @Override<a name="line.493"></a>
-<span class="sourceLineNo">494</span> public void close() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span> if (LOG.isDebugEnabled()) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span> LOG.debug("Stopping rpc client");<a name="line.496"></a>
-<span class="sourceLineNo">497</span> }<a name="line.497"></a>
-<span class="sourceLineNo">498</span> Collection<T> connToClose;<a name="line.498"></a>
-<span class="sourceLineNo">499</span> synchronized (connections) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (!running) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> return;<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> running = false;<a name="line.503"></a>
-<span class="sourceLineNo">504</span> connToClose = connections.values();<a name="line.504"></a>
-<span class="sourceLineNo">505</span> connections.clear();<a name="line.505"></a>
-<span class="sourceLineNo">506</span> }<a name="line.506"></a>
-<span class="sourceLineNo">507</span> cleanupIdleConnectionTask.cancel(true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> for (T conn : connToClose) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span> conn.shutdown();<a name="line.509"></a>
-<span class="sourceLineNo">510</span> }<a name="line.510"></a>
-<span class="sourceLineNo">511</span> closeInternal();<a name="line.511"></a>
-<span class="sourceLineNo">512</span> for (T conn : connToClose) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span> conn.cleanupConnection();<a name="line.513"></a>
-<span class="sourceLineNo">514</span> }<a name="line.514"></a>
-<span class="sourceLineNo">515</span> }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span> @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.518"></a>
-<span class="sourceLineNo">519</span> int rpcTimeout) throws UnknownHostException {<a name="line.519"></a>
-<span class="sourceLineNo">520</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.520"></a>
-<span class="sourceLineNo">521</span> }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span> @Override<a name="line.523"></a>
-<span class="sourceLineNo">524</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.524"></a>
-<span class="sourceLineNo">525</span> throws UnknownHostException {<a name="line.525"></a>
-<span class="sourceLineNo">526</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.526"></a>
-<span class="sourceLineNo">527</span> }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span> private static class AbstractRpcChannel {<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span> protected final InetSocketAddress addr;<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span> protected final User ticket;<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span> protected final int rpcTimeout;<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.539"></a>
-<span class="sourceLineNo">540</span> User ticket, int rpcTimeout) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span> this.addr = addr;<a name="line.541"></a>
-<span class="sourceLineNo">542</span> this.rpcClient = rpcClient;<a name="line.542"></a>
-<span class="sourceLineNo">543</span> this.ticket = ticket;<a name="line.543"></a>
-<span class="sourceLineNo">544</span> this.rpcTimeout = rpcTimeout;<a name="line.544"></a>
-<span class="sourceLineNo">545</span> }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span> /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span> * Configure an rpc controller<a name="line.548"></a>
-<span class="sourceLineNo">549</span> * @param controller to configure<a name="line.549"></a>
-<span class="sourceLineNo">550</span> * @return configured rpc controller<a name="line.550"></a>
-<span class="sourceLineNo">551</span> */<a name="line.551"></a>
-<span class="sourceLineNo">552</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span> HBaseRpcController hrc;<a name="line.553"></a>
-<span class="sourceLineNo">554</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.554"></a>
-<span class="sourceLineNo">555</span> // side. And now we may use ServerRpcController.<a name="line.555"></a>
-<span class="sourceLineNo">556</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span> hrc = (HBaseRpcController) controller;<a name="line.557"></a>
-<span class="sourceLineNo">558</span> if (!hrc.hasCallTimeout()) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span> hrc.setCallTimeout(rpcTimeout);<a name="line.559"></a>
-<span class="sourceLineNo">560</span> }<a name="line.560"></a>
-<span class="sourceLineNo">561</span> } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span> hrc = new HBaseRpcControllerImpl();<a name="line.562"></a>
-<span class="sourceLineNo">563</span> hrc.setCallTimeout(rpcTimeout);<a name="line.563"></a>
-<span class="sourceLineNo">564</span> }<a name="line.564"></a>
-<span class="sourceLineNo">565</span> return hrc;<a name="line.565"></a>
-<span class="sourceLineNo">566</span> }<a name="line.566"></a>
-<span class="sourceLineNo">567</span> }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> /**<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> */<a name="line.571"></a>
-<span class="sourceLineNo">572</span> @VisibleForTesting<a name="line.572"></a>
-<span class="sourceLineNo">573</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.573"></a>
-<span class="sourceLineNo">574</span> implements BlockingRpcChannel {<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.576"></a>
-<span class="sourceLineNo">577</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.578"></a>
-<span class="sourceLineNo">579</span> }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span> @Override<a name="line.581"></a>
-<span class="sourceLineNo">582</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.582"></a>
-<span class="sourceLineNo">583</span> Message param, Message returnType) throws ServiceException {<a name="line.583"></a>
-<span class="sourceLineNo">584</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.584"></a>
-<span class="sourceLineNo">585</span> param, returnType, ticket, addr);<a name="line.585"></a>
-<span class="sourceLineNo">586</span> }<a name="line.586"></a>
-<span class="sourceLineNo">587</span> }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span> /**<a name="line.589"></a>
-<span class="sourceLineNo">590</span> * Async rpc channel that goes via hbase rpc.<a name="line.590"></a>
-<span class="sourceLineNo">591</span> */<a name="line.591"></a>
-<span class="sourceLineNo">592</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.592"></a>
-<span class="sourceLineNo">593</span> RpcChannel {<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.595"></a>
-<span class="sourceLineNo">596</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.596"></a>
-<span class="sourceLineNo">597</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.597"></a>
-<span class="sourceLineNo">598</span> }<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span> @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.601"></a>
-<span class="sourceLineNo">602</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.603"></a>
-<span class="sourceLineNo">604</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.604"></a>
-<span class="sourceLineNo">605</span> this.rpcClient.callMethod(md,<a name="line.605"></a>
-<span class="sourceLineNo">606</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.606"></a>
-<span class="sourceLineNo">607</span> "RpcController can not be null for async rpc call")),<a name="line.607"></a>
-<span class="sourceLineNo">608</span> param, returnType, ticket, addr, done);<a name="line.608"></a>
-<span class="sourceLineNo">609</span> }<a name="line.609"></a>
-<span class="sourceLineNo">610</span> }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>}<a name="line.611"></a>
+<span class="sourceLineNo">466</span> connection.cleanupConnection();<a name="line.466"></a>
+<span class="sourceLineNo">467</span> }<a name="line.467"></a>
+<span class="sourceLineNo">468</span> }<a name="line.468"></a>
+<span class="sourceLineNo">469</span> }<a name="line.469"></a>
+<span class="sourceLineNo">470</span> }<a name="line.470"></a>
+<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
+<span class="sourceLineNo">472</span> * Configure an hbase rpccontroller<a name="line.472"></a>
+<span class="sourceLineNo">473</span> * @param controller to configure<a name="line.473"></a>
+<span class="sourceLineNo">474</span> * @param channelOperationTimeout timeout for operation<a name="line.474"></a>
+<span class="sourceLineNo">475</span> * @return configured controller<a name="line.475"></a>
+<span class="sourceLineNo">476</span> */<a name="line.476"></a>
+<span class="sourceLineNo">477</span> static HBaseRpcController configureHBaseRpcController(<a name="line.477"></a>
+<span class="sourceLineNo">478</span> RpcController controller, int channelOperationTimeout) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span> HBaseRpcController hrc;<a name="line.479"></a>
+<span class="sourceLineNo">480</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span> hrc = (HBaseRpcController) controller;<a name="line.481"></a>
+<span class="sourceLineNo">482</span> if (!hrc.hasCallTimeout()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.483"></a>
+<span class="sourceLineNo">484</span> }<a name="line.484"></a>
+<span class="sourceLineNo">485</span> } else {<a name="line.485"></a>
+<span class="sourceLineNo">486</span> hrc = new HBaseRpcControllerImpl();<a name="line.486"></a>
+<span class="sourceLineNo">487</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.487"></a>
+<span class="sourceLineNo">488</span> }<a name="line.488"></a>
+<span class="sourceLineNo">489</span> return hrc;<a name="line.489"></a>
+<span class="sourceLineNo">490</span> }<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span> protected abstract void closeInternal();<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span> @Override<a name="line.494"></a>
+<span class="sourceLineNo">495</span> public void close() {<a name="line.495"></a>
+<span class="sourceLineNo">496</span> if (LOG.isDebugEnabled()) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span> LOG.debug("Stopping rpc client");<a name="line.497"></a>
+<span class="sourceLineNo">498</span> }<a name="line.498"></a>
+<span class="sourceLineNo">499</span> Collection<T> connToClose;<a name="line.499"></a>
+<span class="sourceLineNo">500</span> synchronized (connections) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span> if (!running) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span> return;<a name="line.502"></a>
+<span class="sourceLineNo">503</span> }<a name="line.503"></a>
+<span class="sourceLineNo">504</span> running = false;<a name="line.504"></a>
+<span class="sourceLineNo">505</span> connToClose = connections.values();<a name="line.505"></a>
+<span class="sourceLineNo">506</span> connections.clear();<a name="line.506"></a>
+<span class="sourceLineNo">507</span> }<a name="line.507"></a>
+<span class="sourceLineNo">508</span> cleanupIdleConnectionTask.cancel(true);<a name="line.508"></a>
+<span class="sourceLineNo">509</span> for (T conn : connToClose) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span> conn.shutdown();<a name="line.510"></a>
+<span class="sourceLineNo">511</span> }<a name="line.511"></a>
+<span class="sourceLineNo">512</span> closeInternal();<a name="line.512"></a>
+<span class="sourceLineNo">513</span> for (T conn : connToClose) {<a name="line.513"></a>
+<span class="sourceLineNo">514</span> conn.cleanupConnection();<a name="line.514"></a>
+<span class="sourceLineNo">515</span> }<a name="line.515"></a>
+<span class="sourceLineNo">516</span> }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span> @Override<a name="line.518"></a>
+<span class="sourceLineNo">519</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.519"></a>
+<span class="sourceLineNo">520</span> int rpcTimeout) throws UnknownHostException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.521"></a>
+<span class="sourceLineNo">522</span> }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span> @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.525"></a>
+<span class="sourceLineNo">526</span> throws UnknownHostException {<a name="line.526"></a>
+<span class="sourceLineNo">527</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.527"></a>
+<span class="sourceLineNo">528</span> }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span> private static class AbstractRpcChannel {<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span> protected final InetSocketAddress addr;<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span> protected final User ticket;<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span> protected final int rpcTimeout;<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.540"></a>
+<span class="sourceLineNo">541</span> User ticket, int rpcTimeout) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span> this.addr = addr;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> this.rpcClient = rpcClient;<a name="line.543"></a>
+<span class="sourceLineNo">544</span> this.ticket = ticket;<a name="line.544"></a>
+<span class="sourceLineNo">545</span> this.rpcTimeout = rpcTimeout;<a name="line.545"></a>
+<span class="sourceLineNo">546</span> }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span> /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span> * Configure an rpc controller<a name="line.549"></a>
+<span class="sourceLineNo">550</span> * @param controller to configure<a name="line.550"></a>
+<span class="sourceLineNo">551</span> * @return configured rpc controller<a name="line.551"></a>
+<span class="sourceLineNo">552</span> */<a name="line.552"></a>
+<span class="sourceLineNo">553</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span> HBaseRpcController hrc;<a name="line.554"></a>
+<span class="sourceLineNo">555</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.555"></a>
+<span class="sourceLineNo">556</span> // side. And now we may use ServerRpcController.<a name="line.556"></a>
+<span class="sourceLineNo">557</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> hrc = (HBaseRpcController) controller;<a name="line.558"></a>
+<span class="sourceLineNo">559</span> if (!hrc.hasCallTimeout()) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span> hrc.setCallTimeout(rpcTimeout);<a name="line.560"></a>
+<span class="sourceLineNo">561</span> }<a name="line.561"></a>
+<span class="sourceLineNo">562</span> } else {<a name="line.562"></a>
+<span class="sourceLineNo">563</span> hrc = new HBaseRpcControllerImpl();<a name="line.563"></a>
+<span class="sourceLineNo">564</span> hrc.setCallTimeout(rpcTimeout);<a name="line.564"></a>
+<span class="sourceLineNo">565</span> }<a name="line.565"></a>
+<span class="sourceLineNo">566</span> return hrc;<a name="line.566"></a>
+<span class="sourceLineNo">567</span> }<a name="line.567"></a>
+<span class="sourceLineNo">568</span> }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span> /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.571"></a>
+<span class="sourceLineNo">572</span> */<a name="line.572"></a>
+<span class="sourceLineNo">573</span> @VisibleForTesting<a name="line.573"></a>
+<span class="sourceLineNo">574</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.574"></a>
+<span class="sourceLineNo">575</span> implements BlockingRpcChannel {<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.577"></a>
+<span class="sourceLineNo">578</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.579"></a>
+<span class="sourceLineNo">580</span> }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span> @Override<a name="line.582"></a>
+<span class="sourceLineNo">583</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.583"></a>
+<span class="sourceLineNo">584</span> Message param, Message returnType) throws ServiceException {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.585"></a>
+<span class="sourceLineNo">586</span> param, returnType, ticket, addr);<a name="line.586"></a>
+<span class="sourceLineNo">587</span> }<a name="line.587"></a>
+<span class="sourceLineNo">588</span> }<a name="line.588"></a>
+<span class="sourceLineNo">589</span><a name="line.589"></a>
+<span class="sourceLineNo">590</span> /**<a name="line.590"></a>
+<span class="sourceLineNo">591</span> * Async rpc channel that goes via hbase rpc.<a name="line.591"></a>
+<span class="sourceLineNo">592</span> */<a name="line.592"></a>
+<span class="sourceLineNo">593</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.593"></a>
+<span class="sourceLineNo">594</span> RpcChannel {<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.596"></a>
+<span class="sourceLineNo">597</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.597"></a>
+<span class="sourceLineNo">598</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.598"></a>
+<span class="sourceLineNo">599</span> }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span> @Override<a name="line.601"></a>
+<span class="sourceLineNo">602</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.602"></a>
+<span class="sourceLineNo">603</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.604"></a>
+<span class="sourceLineNo">605</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.605"></a>
+<span class="sourceLineNo">606</span> this.rpcClient.callMethod(md,<a name="line.606"></a>
+<span class="sourceLineNo">607</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.607"></a>
+<span class="sourceLineNo">608</span> "RpcController can not be null for async rpc call")),<a name="line.608"></a>
+<span class="sourceLineNo">609</span> param, returnType, ticket, addr, done);<a name="line.609"></a>
+<span class="sourceLineNo">610</span> }<a name="line.610"></a>
+<span class="sourceLineNo">611</span> }<a name="line.611"></a>
+<span class="sourceLineNo">612</span>}<a name="line.612"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html
index 2e7807e..7f0f1e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.RpcChannelImplementation.html
@@ -471,152 +471,153 @@
<span class="sourceLineNo">463</span> + connection.remoteId);<a name="line.463"></a>
<span class="sourceLineNo">464</span> connections.removeValue(remoteId, connection);<a name="line.464"></a>
<span class="sourceLineNo">465</span> connection.shutdown();<a name="line.465"></a>
-<span class="sourceLineNo">466</span> }<a name="line.466"></a>
-<span class="sourceLineNo">467</span> }<a name="line.467"></a>
-<span class="sourceLineNo">468</span> }<a name="line.468"></a>
-<span class="sourceLineNo">469</span> }<a name="line.469"></a>
-<span class="sourceLineNo">470</span> /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span> * Configure an hbase rpccontroller<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * @param controller to configure<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * @param channelOperationTimeout timeout for operation<a name="line.473"></a>
-<span class="sourceLineNo">474</span> * @return configured controller<a name="line.474"></a>
-<span class="sourceLineNo">475</span> */<a name="line.475"></a>
-<span class="sourceLineNo">476</span> static HBaseRpcController configureHBaseRpcController(<a name="line.476"></a>
-<span class="sourceLineNo">477</span> RpcController controller, int channelOperationTimeout) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> HBaseRpcController hrc;<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> hrc = (HBaseRpcController) controller;<a name="line.480"></a>
-<span class="sourceLineNo">481</span> if (!hrc.hasCallTimeout()) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.482"></a>
-<span class="sourceLineNo">483</span> }<a name="line.483"></a>
-<span class="sourceLineNo">484</span> } else {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> hrc = new HBaseRpcControllerImpl();<a name="line.485"></a>
-<span class="sourceLineNo">486</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> return hrc;<a name="line.488"></a>
-<span class="sourceLineNo">489</span> }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span> protected abstract void closeInternal();<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> @Override<a name="line.493"></a>
-<span class="sourceLineNo">494</span> public void close() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span> if (LOG.isDebugEnabled()) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span> LOG.debug("Stopping rpc client");<a name="line.496"></a>
-<span class="sourceLineNo">497</span> }<a name="line.497"></a>
-<span class="sourceLineNo">498</span> Collection<T> connToClose;<a name="line.498"></a>
-<span class="sourceLineNo">499</span> synchronized (connections) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (!running) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> return;<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> running = false;<a name="line.503"></a>
-<span class="sourceLineNo">504</span> connToClose = connections.values();<a name="line.504"></a>
-<span class="sourceLineNo">505</span> connections.clear();<a name="line.505"></a>
-<span class="sourceLineNo">506</span> }<a name="line.506"></a>
-<span class="sourceLineNo">507</span> cleanupIdleConnectionTask.cancel(true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> for (T conn : connToClose) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span> conn.shutdown();<a name="line.509"></a>
-<span class="sourceLineNo">510</span> }<a name="line.510"></a>
-<span class="sourceLineNo">511</span> closeInternal();<a name="line.511"></a>
-<span class="sourceLineNo">512</span> for (T conn : connToClose) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span> conn.cleanupConnection();<a name="line.513"></a>
-<span class="sourceLineNo">514</span> }<a name="line.514"></a>
-<span class="sourceLineNo">515</span> }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span> @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.518"></a>
-<span class="sourceLineNo">519</span> int rpcTimeout) throws UnknownHostException {<a name="line.519"></a>
-<span class="sourceLineNo">520</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.520"></a>
-<span class="sourceLineNo">521</span> }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span> @Override<a name="line.523"></a>
-<span class="sourceLineNo">524</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.524"></a>
-<span class="sourceLineNo">525</span> throws UnknownHostException {<a name="line.525"></a>
-<span class="sourceLineNo">526</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.526"></a>
-<span class="sourceLineNo">527</span> }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span> private static class AbstractRpcChannel {<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span> protected final InetSocketAddress addr;<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span> protected final User ticket;<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span> protected final int rpcTimeout;<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.539"></a>
-<span class="sourceLineNo">540</span> User ticket, int rpcTimeout) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span> this.addr = addr;<a name="line.541"></a>
-<span class="sourceLineNo">542</span> this.rpcClient = rpcClient;<a name="line.542"></a>
-<span class="sourceLineNo">543</span> this.ticket = ticket;<a name="line.543"></a>
-<span class="sourceLineNo">544</span> this.rpcTimeout = rpcTimeout;<a name="line.544"></a>
-<span class="sourceLineNo">545</span> }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span> /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span> * Configure an rpc controller<a name="line.548"></a>
-<span class="sourceLineNo">549</span> * @param controller to configure<a name="line.549"></a>
-<span class="sourceLineNo">550</span> * @return configured rpc controller<a name="line.550"></a>
-<span class="sourceLineNo">551</span> */<a name="line.551"></a>
-<span class="sourceLineNo">552</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span> HBaseRpcController hrc;<a name="line.553"></a>
-<span class="sourceLineNo">554</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.554"></a>
-<span class="sourceLineNo">555</span> // side. And now we may use ServerRpcController.<a name="line.555"></a>
-<span class="sourceLineNo">556</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span> hrc = (HBaseRpcController) controller;<a name="line.557"></a>
-<span class="sourceLineNo">558</span> if (!hrc.hasCallTimeout()) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span> hrc.setCallTimeout(rpcTimeout);<a name="line.559"></a>
-<span class="sourceLineNo">560</span> }<a name="line.560"></a>
-<span class="sourceLineNo">561</span> } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span> hrc = new HBaseRpcControllerImpl();<a name="line.562"></a>
-<span class="sourceLineNo">563</span> hrc.setCallTimeout(rpcTimeout);<a name="line.563"></a>
-<span class="sourceLineNo">564</span> }<a name="line.564"></a>
-<span class="sourceLineNo">565</span> return hrc;<a name="line.565"></a>
-<span class="sourceLineNo">566</span> }<a name="line.566"></a>
-<span class="sourceLineNo">567</span> }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> /**<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> */<a name="line.571"></a>
-<span class="sourceLineNo">572</span> @VisibleForTesting<a name="line.572"></a>
-<span class="sourceLineNo">573</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.573"></a>
-<span class="sourceLineNo">574</span> implements BlockingRpcChannel {<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.576"></a>
-<span class="sourceLineNo">577</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.578"></a>
-<span class="sourceLineNo">579</span> }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span> @Override<a name="line.581"></a>
-<span class="sourceLineNo">582</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.582"></a>
-<span class="sourceLineNo">583</span> Message param, Message returnType) throws ServiceException {<a name="line.583"></a>
-<span class="sourceLineNo">584</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.584"></a>
-<span class="sourceLineNo">585</span> param, returnType, ticket, addr);<a name="line.585"></a>
-<span class="sourceLineNo">586</span> }<a name="line.586"></a>
-<span class="sourceLineNo">587</span> }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span> /**<a name="line.589"></a>
-<span class="sourceLineNo">590</span> * Async rpc channel that goes via hbase rpc.<a name="line.590"></a>
-<span class="sourceLineNo">591</span> */<a name="line.591"></a>
-<span class="sourceLineNo">592</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.592"></a>
-<span class="sourceLineNo">593</span> RpcChannel {<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.595"></a>
-<span class="sourceLineNo">596</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.596"></a>
-<span class="sourceLineNo">597</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.597"></a>
-<span class="sourceLineNo">598</span> }<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span> @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.601"></a>
-<span class="sourceLineNo">602</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.603"></a>
-<span class="sourceLineNo">604</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.604"></a>
-<span class="sourceLineNo">605</span> this.rpcClient.callMethod(md,<a name="line.605"></a>
-<span class="sourceLineNo">606</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.606"></a>
-<span class="sourceLineNo">607</span> "RpcController can not be null for async rpc call")),<a name="line.607"></a>
-<span class="sourceLineNo">608</span> param, returnType, ticket, addr, done);<a name="line.608"></a>
-<span class="sourceLineNo">609</span> }<a name="line.609"></a>
-<span class="sourceLineNo">610</span> }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>}<a name="line.611"></a>
+<span class="sourceLineNo">466</span> connection.cleanupConnection();<a name="line.466"></a>
+<span class="sourceLineNo">467</span> }<a name="line.467"></a>
+<span class="sourceLineNo">468</span> }<a name="line.468"></a>
+<span class="sourceLineNo">469</span> }<a name="line.469"></a>
+<span class="sourceLineNo">470</span> }<a name="line.470"></a>
+<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
+<span class="sourceLineNo">472</span> * Configure an hbase rpccontroller<a name="line.472"></a>
+<span class="sourceLineNo">473</span> * @param controller to configure<a name="line.473"></a>
+<span class="sourceLineNo">474</span> * @param channelOperationTimeout timeout for operation<a name="line.474"></a>
+<span class="sourceLineNo">475</span> * @return configured controller<a name="line.475"></a>
+<span class="sourceLineNo">476</span> */<a name="line.476"></a>
+<span class="sourceLineNo">477</span> static HBaseRpcController configureHBaseRpcController(<a name="line.477"></a>
+<span class="sourceLineNo">478</span> RpcController controller, int channelOperationTimeout) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span> HBaseRpcController hrc;<a name="line.479"></a>
+<span class="sourceLineNo">480</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span> hrc = (HBaseRpcController) controller;<a name="line.481"></a>
+<span class="sourceLineNo">482</span> if (!hrc.hasCallTimeout()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.483"></a>
+<span class="sourceLineNo">484</span> }<a name="line.484"></a>
+<span class="sourceLineNo">485</span> } else {<a name="line.485"></a>
+<span class="sourceLineNo">486</span> hrc = new HBaseRpcControllerImpl();<a name="line.486"></a>
+<span class="sourceLineNo">487</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.487"></a>
+<span class="sourceLineNo">488</span> }<a name="line.488"></a>
+<span class="sourceLineNo">489</span> return hrc;<a name="line.489"></a>
+<span class="sourceLineNo">490</span> }<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span> protected abstract void closeInternal();<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span> @Override<a name="line.494"></a>
+<span class="sourceLineNo">495</span> public void close() {<a name="line.495"></a>
+<span class="sourceLineNo">496</span> if (LOG.isDebugEnabled()) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span> LOG.debug("Stopping rpc client");<a name="line.497"></a>
+<span class="sourceLineNo">498</span> }<a name="line.498"></a>
+<span class="sourceLineNo">499</span> Collection<T> connToClose;<a name="line.499"></a>
+<span class="sourceLineNo">500</span> synchronized (connections) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span> if (!running) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span> return;<a name="line.502"></a>
+<span class="sourceLineNo">503</span> }<a name="line.503"></a>
+<span class="sourceLineNo">504</span> running = false;<a name="line.504"></a>
+<span class="sourceLineNo">505</span> connToClose = connections.values();<a name="line.505"></a>
+<span class="sourceLineNo">506</span> connections.clear();<a name="line.506"></a>
+<span class="sourceLineNo">507</span> }<a name="line.507"></a>
+<span class="sourceLineNo">508</span> cleanupIdleConnectionTask.cancel(true);<a name="line.508"></a>
+<span class="sourceLineNo">509</span> for (T conn : connToClose) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span> conn.shutdown();<a name="line.510"></a>
+<span class="sourceLineNo">511</span> }<a name="line.511"></a>
+<span class="sourceLineNo">512</span> closeInternal();<a name="line.512"></a>
+<span class="sourceLineNo">513</span> for (T conn : connToClose) {<a name="line.513"></a>
+<span class="sourceLineNo">514</span> conn.cleanupConnection();<a name="line.514"></a>
+<span class="sourceLineNo">515</span> }<a name="line.515"></a>
+<span class="sourceLineNo">516</span> }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span> @Override<a name="line.518"></a>
+<span class="sourceLineNo">519</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.519"></a>
+<span class="sourceLineNo">520</span> int rpcTimeout) throws UnknownHostException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.521"></a>
+<span class="sourceLineNo">522</span> }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span> @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.525"></a>
+<span class="sourceLineNo">526</span> throws UnknownHostException {<a name="line.526"></a>
+<span class="sourceLineNo">527</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.527"></a>
+<span class="sourceLineNo">528</span> }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span> private static class AbstractRpcChannel {<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span> protected final InetSocketAddress addr;<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span> protected final User ticket;<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span> protected final int rpcTimeout;<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.540"></a>
+<span class="sourceLineNo">541</span> User ticket, int rpcTimeout) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span> this.addr = addr;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> this.rpcClient = rpcClient;<a name="line.543"></a>
+<span class="sourceLineNo">544</span> this.ticket = ticket;<a name="line.544"></a>
+<span class="sourceLineNo">545</span> this.rpcTimeout = rpcTimeout;<a name="line.545"></a>
+<span class="sourceLineNo">546</span> }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span> /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span> * Configure an rpc controller<a name="line.549"></a>
+<span class="sourceLineNo">550</span> * @param controller to configure<a name="line.550"></a>
+<span class="sourceLineNo">551</span> * @return configured rpc controller<a name="line.551"></a>
+<span class="sourceLineNo">552</span> */<a name="line.552"></a>
+<span class="sourceLineNo">553</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span> HBaseRpcController hrc;<a name="line.554"></a>
+<span class="sourceLineNo">555</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.555"></a>
+<span class="sourceLineNo">556</span> // side. And now we may use ServerRpcController.<a name="line.556"></a>
+<span class="sourceLineNo">557</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> hrc = (HBaseRpcController) controller;<a name="line.558"></a>
+<span class="sourceLineNo">559</span> if (!hrc.hasCallTimeout()) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span> hrc.setCallTimeout(rpcTimeout);<a name="line.560"></a>
+<span class="sourceLineNo">561</span> }<a name="line.561"></a>
+<span class="sourceLineNo">562</span> } else {<a name="line.562"></a>
+<span class="sourceLineNo">563</span> hrc = new HBaseRpcControllerImpl();<a name="line.563"></a>
+<span class="sourceLineNo">564</span> hrc.setCallTimeout(rpcTimeout);<a name="line.564"></a>
+<span class="sourceLineNo">565</span> }<a name="line.565"></a>
+<span class="sourceLineNo">566</span> return hrc;<a name="line.566"></a>
+<span class="sourceLineNo">567</span> }<a name="line.567"></a>
+<span class="sourceLineNo">568</span> }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span> /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.571"></a>
+<span class="sourceLineNo">572</span> */<a name="line.572"></a>
+<span class="sourceLineNo">573</span> @VisibleForTesting<a name="line.573"></a>
+<span class="sourceLineNo">574</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.574"></a>
+<span class="sourceLineNo">575</span> implements BlockingRpcChannel {<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.577"></a>
+<span class="sourceLineNo">578</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.579"></a>
+<span class="sourceLineNo">580</span> }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span> @Override<a name="line.582"></a>
+<span class="sourceLineNo">583</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.583"></a>
+<span class="sourceLineNo">584</span> Message param, Message returnType) throws ServiceException {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.585"></a>
+<span class="sourceLineNo">586</span> param, returnType, ticket, addr);<a name="line.586"></a>
+<span class="sourceLineNo">587</span> }<a name="line.587"></a>
+<span class="sourceLineNo">588</span> }<a name="line.588"></a>
+<span class="sourceLineNo">589</span><a name="line.589"></a>
+<span class="sourceLineNo">590</span> /**<a name="line.590"></a>
+<span class="sourceLineNo">591</span> * Async rpc channel that goes via hbase rpc.<a name="line.591"></a>
+<span class="sourceLineNo">592</span> */<a name="line.592"></a>
+<span class="sourceLineNo">593</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.593"></a>
+<span class="sourceLineNo">594</span> RpcChannel {<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.596"></a>
+<span class="sourceLineNo">597</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.597"></a>
+<span class="sourceLineNo">598</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.598"></a>
+<span class="sourceLineNo">599</span> }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span> @Override<a name="line.601"></a>
+<span class="sourceLineNo">602</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.602"></a>
+<span class="sourceLineNo">603</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.604"></a>
+<span class="sourceLineNo">605</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.605"></a>
+<span class="sourceLineNo">606</span> this.rpcClient.callMethod(md,<a name="line.606"></a>
+<span class="sourceLineNo">607</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.607"></a>
+<span class="sourceLineNo">608</span> "RpcController can not be null for async rpc call")),<a name="line.608"></a>
+<span class="sourceLineNo">609</span> param, returnType, ticket, addr, done);<a name="line.609"></a>
+<span class="sourceLineNo">610</span> }<a name="line.610"></a>
+<span class="sourceLineNo">611</span> }<a name="line.611"></a>
+<span class="sourceLineNo">612</span>}<a name="line.612"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html
index 2e7807e..7f0f1e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html
@@ -471,152 +471,153 @@
<span class="sourceLineNo">463</span> + connection.remoteId);<a name="line.463"></a>
<span class="sourceLineNo">464</span> connections.removeValue(remoteId, connection);<a name="line.464"></a>
<span class="sourceLineNo">465</span> connection.shutdown();<a name="line.465"></a>
-<span class="sourceLineNo">466</span> }<a name="line.466"></a>
-<span class="sourceLineNo">467</span> }<a name="line.467"></a>
-<span class="sourceLineNo">468</span> }<a name="line.468"></a>
-<span class="sourceLineNo">469</span> }<a name="line.469"></a>
-<span class="sourceLineNo">470</span> /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span> * Configure an hbase rpccontroller<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * @param controller to configure<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * @param channelOperationTimeout timeout for operation<a name="line.473"></a>
-<span class="sourceLineNo">474</span> * @return configured controller<a name="line.474"></a>
-<span class="sourceLineNo">475</span> */<a name="line.475"></a>
-<span class="sourceLineNo">476</span> static HBaseRpcController configureHBaseRpcController(<a name="line.476"></a>
-<span class="sourceLineNo">477</span> RpcController controller, int channelOperationTimeout) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> HBaseRpcController hrc;<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> hrc = (HBaseRpcController) controller;<a name="line.480"></a>
-<span class="sourceLineNo">481</span> if (!hrc.hasCallTimeout()) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.482"></a>
-<span class="sourceLineNo">483</span> }<a name="line.483"></a>
-<span class="sourceLineNo">484</span> } else {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> hrc = new HBaseRpcControllerImpl();<a name="line.485"></a>
-<span class="sourceLineNo">486</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> return hrc;<a name="line.488"></a>
-<span class="sourceLineNo">489</span> }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span> protected abstract void closeInternal();<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> @Override<a name="line.493"></a>
-<span class="sourceLineNo">494</span> public void close() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span> if (LOG.isDebugEnabled()) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span> LOG.debug("Stopping rpc client");<a name="line.496"></a>
-<span class="sourceLineNo">497</span> }<a name="line.497"></a>
-<span class="sourceLineNo">498</span> Collection<T> connToClose;<a name="line.498"></a>
-<span class="sourceLineNo">499</span> synchronized (connections) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (!running) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> return;<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> running = false;<a name="line.503"></a>
-<span class="sourceLineNo">504</span> connToClose = connections.values();<a name="line.504"></a>
-<span class="sourceLineNo">505</span> connections.clear();<a name="line.505"></a>
-<span class="sourceLineNo">506</span> }<a name="line.506"></a>
-<span class="sourceLineNo">507</span> cleanupIdleConnectionTask.cancel(true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> for (T conn : connToClose) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span> conn.shutdown();<a name="line.509"></a>
-<span class="sourceLineNo">510</span> }<a name="line.510"></a>
-<span class="sourceLineNo">511</span> closeInternal();<a name="line.511"></a>
-<span class="sourceLineNo">512</span> for (T conn : connToClose) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span> conn.cleanupConnection();<a name="line.513"></a>
-<span class="sourceLineNo">514</span> }<a name="line.514"></a>
-<span class="sourceLineNo">515</span> }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span> @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.518"></a>
-<span class="sourceLineNo">519</span> int rpcTimeout) throws UnknownHostException {<a name="line.519"></a>
-<span class="sourceLineNo">520</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.520"></a>
-<span class="sourceLineNo">521</span> }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span> @Override<a name="line.523"></a>
-<span class="sourceLineNo">524</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.524"></a>
-<span class="sourceLineNo">525</span> throws UnknownHostException {<a name="line.525"></a>
-<span class="sourceLineNo">526</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.526"></a>
-<span class="sourceLineNo">527</span> }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span> private static class AbstractRpcChannel {<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span> protected final InetSocketAddress addr;<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span> protected final User ticket;<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span> protected final int rpcTimeout;<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.539"></a>
-<span class="sourceLineNo">540</span> User ticket, int rpcTimeout) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span> this.addr = addr;<a name="line.541"></a>
-<span class="sourceLineNo">542</span> this.rpcClient = rpcClient;<a name="line.542"></a>
-<span class="sourceLineNo">543</span> this.ticket = ticket;<a name="line.543"></a>
-<span class="sourceLineNo">544</span> this.rpcTimeout = rpcTimeout;<a name="line.544"></a>
-<span class="sourceLineNo">545</span> }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span> /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span> * Configure an rpc controller<a name="line.548"></a>
-<span class="sourceLineNo">549</span> * @param controller to configure<a name="line.549"></a>
-<span class="sourceLineNo">550</span> * @return configured rpc controller<a name="line.550"></a>
-<span class="sourceLineNo">551</span> */<a name="line.551"></a>
-<span class="sourceLineNo">552</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span> HBaseRpcController hrc;<a name="line.553"></a>
-<span class="sourceLineNo">554</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.554"></a>
-<span class="sourceLineNo">555</span> // side. And now we may use ServerRpcController.<a name="line.555"></a>
-<span class="sourceLineNo">556</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span> hrc = (HBaseRpcController) controller;<a name="line.557"></a>
-<span class="sourceLineNo">558</span> if (!hrc.hasCallTimeout()) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span> hrc.setCallTimeout(rpcTimeout);<a name="line.559"></a>
-<span class="sourceLineNo">560</span> }<a name="line.560"></a>
-<span class="sourceLineNo">561</span> } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span> hrc = new HBaseRpcControllerImpl();<a name="line.562"></a>
-<span class="sourceLineNo">563</span> hrc.setCallTimeout(rpcTimeout);<a name="line.563"></a>
-<span class="sourceLineNo">564</span> }<a name="line.564"></a>
-<span class="sourceLineNo">565</span> return hrc;<a name="line.565"></a>
-<span class="sourceLineNo">566</span> }<a name="line.566"></a>
-<span class="sourceLineNo">567</span> }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> /**<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> */<a name="line.571"></a>
-<span class="sourceLineNo">572</span> @VisibleForTesting<a name="line.572"></a>
-<span class="sourceLineNo">573</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.573"></a>
-<span class="sourceLineNo">574</span> implements BlockingRpcChannel {<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.576"></a>
-<span class="sourceLineNo">577</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.578"></a>
-<span class="sourceLineNo">579</span> }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span> @Override<a name="line.581"></a>
-<span class="sourceLineNo">582</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.582"></a>
-<span class="sourceLineNo">583</span> Message param, Message returnType) throws ServiceException {<a name="line.583"></a>
-<span class="sourceLineNo">584</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.584"></a>
-<span class="sourceLineNo">585</span> param, returnType, ticket, addr);<a name="line.585"></a>
-<span class="sourceLineNo">586</span> }<a name="line.586"></a>
-<span class="sourceLineNo">587</span> }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span> /**<a name="line.589"></a>
-<span class="sourceLineNo">590</span> * Async rpc channel that goes via hbase rpc.<a name="line.590"></a>
-<span class="sourceLineNo">591</span> */<a name="line.591"></a>
-<span class="sourceLineNo">592</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.592"></a>
-<span class="sourceLineNo">593</span> RpcChannel {<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.595"></a>
-<span class="sourceLineNo">596</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.596"></a>
-<span class="sourceLineNo">597</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.597"></a>
-<span class="sourceLineNo">598</span> }<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span> @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.601"></a>
-<span class="sourceLineNo">602</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.603"></a>
-<span class="sourceLineNo">604</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.604"></a>
-<span class="sourceLineNo">605</span> this.rpcClient.callMethod(md,<a name="line.605"></a>
-<span class="sourceLineNo">606</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.606"></a>
-<span class="sourceLineNo">607</span> "RpcController can not be null for async rpc call")),<a name="line.607"></a>
-<span class="sourceLineNo">608</span> param, returnType, ticket, addr, done);<a name="line.608"></a>
-<span class="sourceLineNo">609</span> }<a name="line.609"></a>
-<span class="sourceLineNo">610</span> }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>}<a name="line.611"></a>
+<span class="sourceLineNo">466</span> connection.cleanupConnection();<a name="line.466"></a>
+<span class="sourceLineNo">467</span> }<a name="line.467"></a>
+<span class="sourceLineNo">468</span> }<a name="line.468"></a>
+<span class="sourceLineNo">469</span> }<a name="line.469"></a>
+<span class="sourceLineNo">470</span> }<a name="line.470"></a>
+<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
+<span class="sourceLineNo">472</span> * Configure an hbase rpccontroller<a name="line.472"></a>
+<span class="sourceLineNo">473</span> * @param controller to configure<a name="line.473"></a>
+<span class="sourceLineNo">474</span> * @param channelOperationTimeout timeout for operation<a name="line.474"></a>
+<span class="sourceLineNo">475</span> * @return configured controller<a name="line.475"></a>
+<span class="sourceLineNo">476</span> */<a name="line.476"></a>
+<span class="sourceLineNo">477</span> static HBaseRpcController configureHBaseRpcController(<a name="line.477"></a>
+<span class="sourceLineNo">478</span> RpcController controller, int channelOperationTimeout) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span> HBaseRpcController hrc;<a name="line.479"></a>
+<span class="sourceLineNo">480</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span> hrc = (HBaseRpcController) controller;<a name="line.481"></a>
+<span class="sourceLineNo">482</span> if (!hrc.hasCallTimeout()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.483"></a>
+<span class="sourceLineNo">484</span> }<a name="line.484"></a>
+<span class="sourceLineNo">485</span> } else {<a name="line.485"></a>
+<span class="sourceLineNo">486</span> hrc = new HBaseRpcControllerImpl();<a name="line.486"></a>
+<span class="sourceLineNo">487</span> hrc.setCallTimeout(channelOperationTimeout);<a name="line.487"></a>
+<span class="sourceLineNo">488</span> }<a name="line.488"></a>
+<span class="sourceLineNo">489</span> return hrc;<a name="line.489"></a>
+<span class="sourceLineNo">490</span> }<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span> protected abstract void closeInternal();<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span> @Override<a name="line.494"></a>
+<span class="sourceLineNo">495</span> public void close() {<a name="line.495"></a>
+<span class="sourceLineNo">496</span> if (LOG.isDebugEnabled()) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span> LOG.debug("Stopping rpc client");<a name="line.497"></a>
+<span class="sourceLineNo">498</span> }<a name="line.498"></a>
+<span class="sourceLineNo">499</span> Collection<T> connToClose;<a name="line.499"></a>
+<span class="sourceLineNo">500</span> synchronized (connections) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span> if (!running) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span> return;<a name="line.502"></a>
+<span class="sourceLineNo">503</span> }<a name="line.503"></a>
+<span class="sourceLineNo">504</span> running = false;<a name="line.504"></a>
+<span class="sourceLineNo">505</span> connToClose = connections.values();<a name="line.505"></a>
+<span class="sourceLineNo">506</span> connections.clear();<a name="line.506"></a>
+<span class="sourceLineNo">507</span> }<a name="line.507"></a>
+<span class="sourceLineNo">508</span> cleanupIdleConnectionTask.cancel(true);<a name="line.508"></a>
+<span class="sourceLineNo">509</span> for (T conn : connToClose) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span> conn.shutdown();<a name="line.510"></a>
+<span class="sourceLineNo">511</span> }<a name="line.511"></a>
+<span class="sourceLineNo">512</span> closeInternal();<a name="line.512"></a>
+<span class="sourceLineNo">513</span> for (T conn : connToClose) {<a name="line.513"></a>
+<span class="sourceLineNo">514</span> conn.cleanupConnection();<a name="line.514"></a>
+<span class="sourceLineNo">515</span> }<a name="line.515"></a>
+<span class="sourceLineNo">516</span> }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span> @Override<a name="line.518"></a>
+<span class="sourceLineNo">519</span> public BlockingRpcChannel createBlockingRpcChannel(final ServerName sn, final User ticket,<a name="line.519"></a>
+<span class="sourceLineNo">520</span> int rpcTimeout) throws UnknownHostException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span> return new BlockingRpcChannelImplementation(this, createAddr(sn), ticket, rpcTimeout);<a name="line.521"></a>
+<span class="sourceLineNo">522</span> }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span> @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span> public RpcChannel createRpcChannel(ServerName sn, User user, int rpcTimeout)<a name="line.525"></a>
+<span class="sourceLineNo">526</span> throws UnknownHostException {<a name="line.526"></a>
+<span class="sourceLineNo">527</span> return new RpcChannelImplementation(this, createAddr(sn), user, rpcTimeout);<a name="line.527"></a>
+<span class="sourceLineNo">528</span> }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span> private static class AbstractRpcChannel {<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span> protected final InetSocketAddress addr;<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span> protected final AbstractRpcClient<?> rpcClient;<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span> protected final User ticket;<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span> protected final int rpcTimeout;<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span> protected AbstractRpcChannel(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.540"></a>
+<span class="sourceLineNo">541</span> User ticket, int rpcTimeout) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span> this.addr = addr;<a name="line.542"></a>
+<span class="sourceLineNo">543</span> this.rpcClient = rpcClient;<a name="line.543"></a>
+<span class="sourceLineNo">544</span> this.ticket = ticket;<a name="line.544"></a>
+<span class="sourceLineNo">545</span> this.rpcTimeout = rpcTimeout;<a name="line.545"></a>
+<span class="sourceLineNo">546</span> }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span> /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span> * Configure an rpc controller<a name="line.549"></a>
+<span class="sourceLineNo">550</span> * @param controller to configure<a name="line.550"></a>
+<span class="sourceLineNo">551</span> * @return configured rpc controller<a name="line.551"></a>
+<span class="sourceLineNo">552</span> */<a name="line.552"></a>
+<span class="sourceLineNo">553</span> protected HBaseRpcController configureRpcController(RpcController controller) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span> HBaseRpcController hrc;<a name="line.554"></a>
+<span class="sourceLineNo">555</span> // TODO: Ideally we should not use an RpcController other than HBaseRpcController at client<a name="line.555"></a>
+<span class="sourceLineNo">556</span> // side. And now we may use ServerRpcController.<a name="line.556"></a>
+<span class="sourceLineNo">557</span> if (controller != null && controller instanceof HBaseRpcController) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> hrc = (HBaseRpcController) controller;<a name="line.558"></a>
+<span class="sourceLineNo">559</span> if (!hrc.hasCallTimeout()) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span> hrc.setCallTimeout(rpcTimeout);<a name="line.560"></a>
+<span class="sourceLineNo">561</span> }<a name="line.561"></a>
+<span class="sourceLineNo">562</span> } else {<a name="line.562"></a>
+<span class="sourceLineNo">563</span> hrc = new HBaseRpcControllerImpl();<a name="line.563"></a>
+<span class="sourceLineNo">564</span> hrc.setCallTimeout(rpcTimeout);<a name="line.564"></a>
+<span class="sourceLineNo">565</span> }<a name="line.565"></a>
+<span class="sourceLineNo">566</span> return hrc;<a name="line.566"></a>
+<span class="sourceLineNo">567</span> }<a name="line.567"></a>
+<span class="sourceLineNo">568</span> }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span> /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span> * Blocking rpc channel that goes via hbase rpc.<a name="line.571"></a>
+<span class="sourceLineNo">572</span> */<a name="line.572"></a>
+<span class="sourceLineNo">573</span> @VisibleForTesting<a name="line.573"></a>
+<span class="sourceLineNo">574</span> public static class BlockingRpcChannelImplementation extends AbstractRpcChannel<a name="line.574"></a>
+<span class="sourceLineNo">575</span> implements BlockingRpcChannel {<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span> protected BlockingRpcChannelImplementation(AbstractRpcClient<?> rpcClient,<a name="line.577"></a>
+<span class="sourceLineNo">578</span> InetSocketAddress addr, User ticket, int rpcTimeout) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.579"></a>
+<span class="sourceLineNo">580</span> }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span> @Override<a name="line.582"></a>
+<span class="sourceLineNo">583</span> public Message callBlockingMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.583"></a>
+<span class="sourceLineNo">584</span> Message param, Message returnType) throws ServiceException {<a name="line.584"></a>
+<span class="sourceLineNo">585</span> return rpcClient.callBlockingMethod(md, configureRpcController(controller),<a name="line.585"></a>
+<span class="sourceLineNo">586</span> param, returnType, ticket, addr);<a name="line.586"></a>
+<span class="sourceLineNo">587</span> }<a name="line.587"></a>
+<span class="sourceLineNo">588</span> }<a name="line.588"></a>
+<span class="sourceLineNo">589</span><a name="line.589"></a>
+<span class="sourceLineNo">590</span> /**<a name="line.590"></a>
+<span class="sourceLineNo">591</span> * Async rpc channel that goes via hbase rpc.<a name="line.591"></a>
+<span class="sourceLineNo">592</span> */<a name="line.592"></a>
+<span class="sourceLineNo">593</span> public static class RpcChannelImplementation extends AbstractRpcChannel implements<a name="line.593"></a>
+<span class="sourceLineNo">594</span> RpcChannel {<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span> protected RpcChannelImplementation(AbstractRpcClient<?> rpcClient, InetSocketAddress addr,<a name="line.596"></a>
+<span class="sourceLineNo">597</span> User ticket, int rpcTimeout) throws UnknownHostException {<a name="line.597"></a>
+<span class="sourceLineNo">598</span> super(rpcClient, addr, ticket, rpcTimeout);<a name="line.598"></a>
+<span class="sourceLineNo">599</span> }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span> @Override<a name="line.601"></a>
+<span class="sourceLineNo">602</span> public void callMethod(Descriptors.MethodDescriptor md, RpcController controller,<a name="line.602"></a>
+<span class="sourceLineNo">603</span> Message param, Message returnType, RpcCallback<Message> done) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span> // This method does not throw any exceptions, so the caller must provide a<a name="line.604"></a>
+<span class="sourceLineNo">605</span> // HBaseRpcController which is used to pass the exceptions.<a name="line.605"></a>
+<span class="sourceLineNo">606</span> this.rpcClient.callMethod(md,<a name="line.606"></a>
+<span class="sourceLineNo">607</span> configureRpcController(Preconditions.checkNotNull(controller,<a name="line.607"></a>
+<span class="sourceLineNo">608</span> "RpcController can not be null for async rpc call")),<a name="line.608"></a>
+<span class="sourceLineNo">609</span> param, returnType, ticket, addr, done);<a name="line.609"></a>
+<span class="sourceLineNo">610</span> }<a name="line.610"></a>
+<span class="sourceLineNo">611</span> }<a name="line.611"></a>
+<span class="sourceLineNo">612</span>}<a name="line.612"></a>
diff --git a/downloads.html b/downloads.html
index 97c022d..d17bcec 100644
--- a/downloads.html
+++ b/downloads.html
@@ -394,7 +394,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index fb32210..b2c3b2e 100644
--- a/export_control.html
+++ b/export_control.html
@@ -180,7 +180,7 @@ for more details.</p>
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index 64b024c..4bc265c 100644
--- a/index.html
+++ b/index.html
@@ -258,7 +258,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-tracking.html b/issue-tracking.html
index e59dfc0..751d872 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -152,7 +152,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/mail-lists.html b/mail-lists.html
index f38d969..d2cb031 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -205,7 +205,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index f663fd2..45e65b6 100644
--- a/metrics.html
+++ b/metrics.html
@@ -308,7 +308,7 @@ export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index ba883a6..fb7ee30 100644
--- a/old_news.html
+++ b/old_news.html
@@ -299,7 +299,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index b05a1ae..8a1eb03 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -304,7 +304,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index 5846f47..94601ac 100644
--- a/plugins.html
+++ b/plugins.html
@@ -231,7 +231,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 8e61c31..a3f9964 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -618,7 +618,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index 57f9722..7a1ea23 100644
--- a/project-info.html
+++ b/project-info.html
@@ -193,7 +193,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index 01f52af..4a59f35 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -169,7 +169,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-summary.html b/project-summary.html
index 506e61f..80b7e61 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -195,7 +195,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index a498db4..973a822 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -157,7 +157,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index 18fdc36..a5a3c4c 100644
--- a/replication.html
+++ b/replication.html
@@ -152,7 +152,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index f346744..7fd296c 100644
--- a/resources.html
+++ b/resources.html
@@ -180,7 +180,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/source-repository.html b/source-repository.html
index d98c0a2..d054870 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -163,7 +163,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index dc1ba17..153e789 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -182,7 +182,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index 585f8db..385ef7e 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -369,7 +369,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team-list.html b/team-list.html
index af970e5..8033aa3 100644
--- a/team-list.html
+++ b/team-list.html
@@ -666,7 +666,7 @@
<div class="row">
<p>Copyright ©2007–2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-07</li>
+All rights reserved. <li id="publishDate" class="pull-right">Last Published: 2019-09-08</li>
</p>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index d2dd1fe..fe3fee7 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -1134,6 +1134,8 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-java.util.List-">restartHBaseCluster(int, List<Integer>)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">restartHBaseCluster(StartMiniClusterOption)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#ROWS">ROWS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
<dd>
<div class="block">All the row values for the data loaded by <a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>HBaseTestingUtility.loadTable(Table, byte[])</code></a></div>
diff --git a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index ecf584c..9f04fbe 100644
--- a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":10,"i9":9,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"i17":10,"i18":10,"i19":9,"i20":42,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":41,"i27":41,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":10,"i44":9,"i45":9,"i46":9,"i47":9,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10, [...]
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":10,"i9":9,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"i17":10,"i18":10,"i19":9,"i20":42,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":41,"i27":41,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":10,"i44":9,"i45":9,"i46":9,"i47":9,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10, [...]
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -1349,37 +1349,41 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>> ports)</code> </td>
</tr>
<tr id="i152" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">restartHBaseCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)</code> </td>
+</tr>
+<tr id="i153" class="rowColor">
<td class="colFirst"><code>static <T> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><T> lst,
int i)</code> </td>
</tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster cluster)</code> </td>
</tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster cluster,
boolean requireDown)</code>
<div class="block">Set the MiniDFSCluster</div>
</td>
</tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> fsURI)</code> </td>
</tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a></span>(org.apache.hadoop.hbase.HBaseCluster hbaseCluster)</code> </td>
</tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a> stream,
int max)</code>
<div class="block">Set maxRecoveryErrorCount in DFSClient.</div>
</td>
</tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a></span>(org.apache.hadoop.hbase.client.Admin admin,
org.apache.hadoop.hbase.TableName table,
@@ -1387,50 +1391,50 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<div class="block">Set the number of Region replicas.</div>
</td>
</tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
<td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a></span>()</code>
<div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.</div>
</td>
</tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.minikdc.MiniKdc</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> keytabFile)</code>
<div class="block">Sets up <code>MiniKdc</code> for testing security.</div>
</td>
</tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a></span>()</code>
<div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
</td>
</tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a></span>()</code>
<div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-"><code>startMiniDFSCluster(int)</code></a>
or does nothing.</div>
</td>
</tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a></span>()</code>
<div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
</td>
</tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a></span>()</code>
<div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
</td>
</tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a></span>()</code>
<div class="block">Start up a minicluster of hbase, dfs and zookeeper all using default options.</div>
</td>
</tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a></span>(boolean createWALDir)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
@@ -1439,13 +1443,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a></span>(int numSlaves)</code>
<div class="block">Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.</div>
</td>
</tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a></span>(int numSlaves,
boolean createRootDir)</code>
@@ -1455,7 +1459,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a></span>(int numSlaves,
boolean createRootDir,
@@ -1466,7 +1470,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a></span>(int numMasters,
int numSlaves)</code>
@@ -1476,7 +1480,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a></span>(int numMasters,
int numSlaves,
@@ -1487,7 +1491,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i172" class="altColor">
+<tr id="i173" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a></span>(int numMasters,
int numRegionServers,
@@ -1498,7 +1502,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i173" class="rowColor">
+<tr id="i174" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int numMasters,
int numRegionServers,
@@ -1512,7 +1516,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i174" class="altColor">
+<tr id="i175" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a></span>(int numMasters,
int numRegionServers,
@@ -1528,7 +1532,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i175" class="rowColor">
+<tr id="i176" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a></span>(int numMasters,
int numSlaves,
@@ -1539,7 +1543,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i176" class="altColor">
+<tr id="i177" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a></span>(int numMasters,
int numSlaves,
@@ -1551,7 +1555,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i177" class="rowColor">
+<tr id="i178" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int numMasters,
int numSlaves,
@@ -1564,48 +1568,48 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i178" class="altColor">
+<tr id="i179" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)</code>
<div class="block">Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.</div>
</td>
</tr>
-<tr id="i179" class="rowColor">
+<tr id="i180" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a></span>(int servers)</code>
<div class="block">Start a minidfscluster.</div>
</td>
</tr>
-<tr id="i180" class="altColor">
+<tr id="i181" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a></span>(int servers,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] hosts)</code>
<div class="block">Start a minidfscluster.</div>
</td>
</tr>
-<tr id="i181" class="rowColor">
+<tr id="i182" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a></span>(int servers,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] racks,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] hosts)</code> </td>
</tr>
-<tr id="i182" class="altColor">
+<tr id="i183" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] hosts)</code>
<div class="block">Start a minidfscluster.</div>
</td>
</tr>
-<tr id="i183" class="rowColor">
+<tr id="i184" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a></span>(int namenodePort)</code> </td>
</tr>
-<tr id="i184" class="altColor">
+<tr id="i185" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a></span>()</code>
<div class="block">Starts up mini hbase cluster using default options.</div>
</td>
</tr>
-<tr id="i185" class="rowColor">
+<tr id="i186" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a></span>(int numMasters,
int numRegionServers)</code>
@@ -1615,7 +1619,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i186" class="altColor">
+<tr id="i187" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a></span>(int numMasters,
int numRegionServers,
@@ -1626,7 +1630,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i187" class="rowColor">
+<tr id="i188" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a></span>(int numMasters,
int numRegionServers,
@@ -1641,66 +1645,66 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
</div>
</td>
</tr>
-<tr id="i188" class="altColor">
+<tr id="i189" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)</code>
<div class="block">Starts up mini hbase cluster.</div>
</td>
</tr>
-<tr id="i189" class="rowColor">
+<tr id="i190" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.mapred.MiniMRCluster</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a></span>()</code>
<div class="block">Starts a <code>MiniMRCluster</code> with a default number of
<code>TaskTracker</code>'s.</div>
</td>
</tr>
-<tr id="i190" class="altColor">
+<tr id="i191" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a></span>(org.apache.hadoop.hbase.TableName tableName)</code>
<div class="block">Truncate a table using the admin command.</div>
</td>
</tr>
-<tr id="i191" class="rowColor">
+<tr id="i192" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a></span>(org.apache.hadoop.hbase.TableName tableName,
boolean preserveRegions)</code>
<div class="block">Truncate a table using the admin command.</div>
</td>
</tr>
-<tr id="i192" class="altColor">
+<tr id="i193" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a></span>(byte[] regionName)</code>
<div class="block">Unassign the named region.</div>
</td>
</tr>
-<tr id="i193" class="rowColor">
+<tr id="i194" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> regionName)</code>
<div class="block">Unassign the named region.</div>
</td>
</tr>
-<tr id="i194" class="altColor">
+<tr id="i195" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(byte[] row,
org.apache.hadoop.hbase.client.RegionLocator table)</code>
<div class="block">Closes the region containing the given row.</div>
</td>
</tr>
-<tr id="i195" class="rowColor">
+<tr id="i196" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> row,
org.apache.hadoop.hbase.client.RegionLocator table)</code>
<div class="block">Closes the region containing the given row.</div>
</td>
</tr>
-<tr id="i196" class="altColor">
+<tr id="i197" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.HRegion region,
byte[] f,
int startRow,
int endRow)</code> </td>
</tr>
-<tr id="i197" class="rowColor">
+<tr id="i198" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.HRegion region,
byte[] f,
@@ -1708,14 +1712,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
boolean present)</code> </td>
</tr>
-<tr id="i198" class="altColor">
+<tr id="i199" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.Region region,
byte[] f,
int startRow,
int endRow)</code> </td>
</tr>
-<tr id="i199" class="rowColor">
+<tr id="i200" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.Region region,
byte[] f,
@@ -1723,7 +1727,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
boolean present)</code> </td>
</tr>
-<tr id="i200" class="altColor">
+<tr id="i201" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.client.Table table,
byte[] f,
@@ -1731,78 +1735,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
int replicaId)</code> </td>
</tr>
-<tr id="i201" class="rowColor">
+<tr id="i202" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a></span>(org.apache.hadoop.hbase.client.TableDescriptor ltd,
org.apache.hadoop.hbase.client.TableDescriptor rtd)</code> </td>
</tr>
-<tr id="i202" class="altColor">
+<tr id="i203" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> host,
int port)</code> </td>
</tr>
-<tr id="i203" class="rowColor">
+<tr id="i204" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a></span>(long timeoutMillis,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>... labels)</code>
<div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
</td>
</tr>
-<tr id="i204" class="altColor">
+<tr id="i205" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a></span>(byte[] table,
long timeoutMillis)</code>
<div class="block">Wait until all regions in a table have been assigned</div>
</td>
</tr>
-<tr id="i205" class="rowColor">
+<tr id="i206" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a></span>(org.apache.hadoop.hbase.TableName table)</code>
<div class="block">Wait until all regions in a table have been assigned.</div>
</td>
</tr>
-<tr id="i206" class="altColor">
+<tr id="i207" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a></span>(org.apache.hadoop.hbase.TableName table,
long timeoutMillis)</code> </td>
</tr>
-<tr id="i207" class="rowColor">
+<tr id="i208" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a></span>(byte[] table)</code>
<div class="block">Waits for a table to be 'disabled'.</div>
</td>
</tr>
-<tr id="i208" class="altColor">
+<tr id="i209" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a></span>(byte[] table,
long timeoutMillis)</code>
<div class="block">Waits for a table to be 'disabled'.</div>
</td>
</tr>
-<tr id="i209" class="rowColor">
+<tr id="i210" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a></span>(org.apache.hadoop.hbase.TableName table,
long millisTimeout)</code> </td>
</tr>
-<tr id="i210" class="altColor">
+<tr id="i211" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a></span>(byte[] table,
long timeoutMillis)</code>
<div class="block">Waits for a table to be 'enabled'.</div>
</td>
</tr>
-<tr id="i211" class="rowColor">
+<tr id="i212" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a></span>(org.apache.hadoop.hbase.TableName table)</code>
<div class="block">Waits for a table to be 'enabled'.</div>
</td>
</tr>
-<tr id="i212" class="altColor">
+<tr id="i213" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a></span>(org.apache.hadoop.hbase.TableName table,
long timeoutMillis)</code> </td>
</tr>
-<tr id="i213" class="rowColor">
+<tr id="i214" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a></span>(org.apache.hadoop.hbase.TableName tableName)</code>
<div class="block">Wait until all regions for a table in hbase:meta have a non-empty
@@ -1812,7 +1816,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
server.</div>
</td>
</tr>
-<tr id="i214" class="altColor">
+<tr id="i215" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a></span>(org.apache.hadoop.hbase.TableName tableName,
long timeout)</code>
@@ -1820,19 +1824,19 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
info:server, or until timeout.</div>
</td>
</tr>
-<tr id="i215" class="rowColor">
+<tr id="i216" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a></span>()</code>
<div class="block">Waith until all system table's regions get assigned</div>
</td>
</tr>
-<tr id="i216" class="altColor">
+<tr id="i217" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a></span>()</code>
<div class="block">Wait until no regions in transition.</div>
</td>
</tr>
-<tr id="i217" class="rowColor">
+<tr id="i218" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></span>(long timeout)</code>
<div class="block">Wait until no regions in transition.</div>
@@ -1953,7 +1957,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>fam1</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1919">fam1</a></pre>
+<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1928">fam1</a></pre>
</li>
</ul>
<a name="fam2">
@@ -1962,7 +1966,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>fam2</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1920">fam2</a></pre>
+<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1929">fam2</a></pre>
</li>
</ul>
<a name="fam3">
@@ -1971,7 +1975,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>fam3</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1921">fam3</a></pre>
+<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1930">fam3</a></pre>
</li>
</ul>
<a name="COLUMNS">
@@ -1980,7 +1984,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>COLUMNS</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1922">COLUMNS</a></pre>
+<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1931">COLUMNS</a></pre>
</li>
</ul>
<a name="FIRST_CHAR">
@@ -1989,7 +1993,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>FIRST_CHAR</h4>
-<pre>public static final char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1925">FIRST_CHAR</a></pre>
+<pre>public static final char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1934">FIRST_CHAR</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.FIRST_CHAR">Constant Field Values</a></dd>
@@ -2002,7 +2006,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>LAST_CHAR</h4>
-<pre>public static final char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1926">LAST_CHAR</a></pre>
+<pre>public static final char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1935">LAST_CHAR</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.LAST_CHAR">Constant Field Values</a></dd>
@@ -2015,7 +2019,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>START_KEY_BYTES</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1927">START_KEY_BYTES</a></pre>
+<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1936">START_KEY_BYTES</a></pre>
</li>
</ul>
<a name="START_KEY">
@@ -2024,7 +2028,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>START_KEY</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1928">START_KEY</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1937">START_KEY</a></pre>
</li>
</ul>
<a name="ROWS">
@@ -2033,7 +2037,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>ROWS</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2502">ROWS</a></pre>
+<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2511">ROWS</a></pre>
<div class="block">All the row values for the data loaded by <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>loadTable(Table, byte[])</code></a></div>
</li>
</ul>
@@ -2043,7 +2047,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockList">
<li class="blockList">
<h4>KEYS</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2517">KEYS</a></pre>
+<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2526">KEYS</a></pre>
</li>
</ul>
<a name="KEYS_FOR_HBA_CREATE_TABLE">
@@ -2052,7 +2056,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
<ul class="blockListLast">
<li class="blockList">
<h4>KEYS_FOR_HBA_CREATE_TABLE</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2529">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2538">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
</li>
</ul>
</li>
@@ -3101,13 +3105,29 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
</dl>
</li>
</ul>
+<a name="restartHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>restartHBaseCluster</h4>
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1247">restartHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)
+ throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
<a name="getMiniHBaseCluster--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMiniHBaseCluster</h4>
-<pre>public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1269">getMiniHBaseCluster</a>()</pre>
+<pre>public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1278">getMiniHBaseCluster</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Current mini hbase cluster. Only has something in it after a call
@@ -3123,7 +3143,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>shutdownMiniCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1282">shutdownMiniCluster</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1291">shutdownMiniCluster</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
<dl>
@@ -3141,7 +3161,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>shutdownMiniHBaseCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1297">shutdownMiniHBaseCluster</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1306">shutdownMiniHBaseCluster</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
<dl>
@@ -3156,7 +3176,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>killMiniHBaseCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1315">killMiniHBaseCluster</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1324">killMiniHBaseCluster</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.</div>
<dl>
@@ -3171,7 +3191,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>getDefaultRootDirPath</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1343">getDefaultRootDirPath</a>(boolean create)
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1352">getDefaultRootDirPath</a>(boolean create)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Returns the path to the default root dir the minicluster uses. If <code>create</code>
is true, a new root directory path is fetched irrespective of whether it has been fetched
@@ -3191,7 +3211,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>getDefaultRootDirPath</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1358">getDefaultRootDirPath</a>()
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1367">getDefaultRootDirPath</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Same as {<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-"><code>getDefaultRootDirPath(boolean create)</code></a>
except that <code>create</code> flag is false.
@@ -3210,7 +3230,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createRootDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1374">createRootDir</a>(boolean create)
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1383">createRootDir</a>(boolean create)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Creates an hbase rootdir in user home directory. Also creates hbase
version file. Normally you won't make use of this method. Root hbasedir
@@ -3235,7 +3255,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createRootDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1389">createRootDir</a>()
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1398">createRootDir</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Same as <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-"><code>createRootDir(boolean create)</code></a>
except that <code>create</code> flag is false.</div>
@@ -3253,7 +3273,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createWALRootDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1402">createWALRootDir</a>()
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1411">createWALRootDir</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Creates a hbase walDir in the user's home directory.
Normally you won't make use of this method. Root hbaseWALDir
@@ -3273,7 +3293,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>flush</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1424">flush</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1433">flush</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Flushes all caches in the mini hbase cluster</div>
<dl>
@@ -3288,7 +3308,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>flush</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1432">flush</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1441">flush</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Flushes all caches in the mini hbase cluster</div>
<dl>
@@ -3303,7 +3323,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>compact</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1440">compact</a>(boolean major)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1449">compact</a>(boolean major)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Compact all regions in the mini hbase cluster</div>
<dl>
@@ -3318,7 +3338,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>compact</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1448">compact</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1457">compact</a>(org.apache.hadoop.hbase.TableName tableName,
boolean major)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Compact all of a table's reagion in the mini hbase cluster</div>
@@ -3334,7 +3354,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1459">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1468">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> family)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table.</div>
@@ -3355,7 +3375,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1471">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1480">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] families)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table.</div>
@@ -3376,7 +3396,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1487">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1496">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table.</div>
@@ -3397,7 +3417,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createMultiRegionTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1500">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1509">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family,
int numRegions)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3420,7 +3440,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1517">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1526">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table.</div>
@@ -3441,7 +3461,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createMultiRegionTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1529">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1538">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table with multiple regions.</div>
@@ -3462,7 +3482,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1541">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1550">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
byte[][] splitKeys)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3485,7 +3505,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1555">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1564">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
byte[][] splitKeys,
int replicaCount)
@@ -3510,7 +3530,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1561">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1570">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int numVersions,
byte[] startKey,
@@ -3529,7 +3549,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1581">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1590">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
byte[][] families,
org.apache.hadoop.conf.Configuration c)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3552,7 +3572,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1595">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1604">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
byte[][] families,
byte[][] splitKeys,
org.apache.hadoop.conf.Configuration c)
@@ -3577,7 +3597,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1615">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1624">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
byte[][] families,
byte[][] splitKeys,
org.apache.hadoop.hbase.regionserver.BloomType type,
@@ -3606,7 +3626,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1646">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1655">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor htd,
byte[][] splitRows)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table.</div>
@@ -3627,7 +3647,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1676">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1685">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
byte[][] splitKeys,
int replicaCount,
@@ -3654,7 +3674,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1691">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1700">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family,
int numVersions)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3677,7 +3697,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1704">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1713">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int numVersions)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3700,7 +3720,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1718">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1727">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int numVersions,
byte[][] splitKeys)
@@ -3725,7 +3745,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createMultiRegionTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1747">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1756">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int numVersions)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3748,7 +3768,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1761">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1770">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int numVersions,
int blockSize)
@@ -3773,7 +3793,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1780">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1789">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int numVersions,
int blockSize,
@@ -3791,7 +3811,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1810">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1819">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int[] numVersions)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3814,7 +3834,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1839">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1848">createTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family,
byte[][] splitRows)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3837,7 +3857,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>createMultiRegionTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1861">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1870">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a table with multiple regions.</div>
@@ -3859,7 +3879,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<li class="blockList">
<h4>modifyTableSync</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1873">modifyTableSync</a>(org.apache.hadoop.hbase.client.Admin admin,
+public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1882">modifyTableSync</a>(org.apache.hadoop.hbase.client.Admin admin,
org.apache.hadoop.hbase.client.TableDescriptor desc)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -3882,7 +3902,7 @@ public static void <a href="../../../../src-html/org/apache/hadoop/hba
<ul class="blockList">
<li class="blockList">
<h4>setReplicas</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1881">setReplicas</a>(org.apache.hadoop.hbase.client.Admin admin,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1890">setReplicas</a>(org.apache.hadoop.hbase.client.Admin admin,
org.apache.hadoop.hbase.TableName table,
int replicaCount)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -3901,7 +3921,7 @@ public static void <a href="../../../../src-html/org/apache/hadoop/hba
<ul class="blockList">
<li class="blockList">
<h4>deleteTable</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1894">deleteTable</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1903">deleteTable</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Drop an existing table</div>
<dl>
@@ -3918,7 +3938,7 @@ public static void <a href="../../../../src-html/org/apache/hadoop/hba
<ul class="blockList">
<li class="blockList">
<h4>deleteTableIfAny</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1907">deleteTableIfAny</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1916">deleteTableIfAny</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Drop an existing table</div>
<dl>
@@ -3936,7 +3956,7 @@ public static void <a href="../../../../src-html/org/apache/hadoop/hba
<li class="blockList">
<h4>createTableDescriptor</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1937">createTableDescriptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
+public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1946">createTableDescriptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name,
int minVersions,
int versions,
int ttl,
@@ -3957,7 +3977,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<li class="blockList">
<h4>createTableDescriptor</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1953">createTableDescriptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
+public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1962">createTableDescriptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use
<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-"><code>createTableDescriptor(TableName, int, int, int, KeepDeletedCells)</code></a> instead.</span></div>
<div class="block">Create a table of name <code>name</code>.</div>
@@ -3978,7 +3998,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createTableDescriptor</h4>
-<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1958">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName name,
+<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1967">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName name,
int minVersions,
int versions,
int ttl,
@@ -3991,7 +4011,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createTableDescriptor</h4>
-<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1981">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName name)</pre>
+<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1990">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName name)</pre>
<div class="block">Create a table of name <code>name</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -4007,7 +4027,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createTableDescriptor</h4>
-<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1986">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1995">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family)</pre>
</li>
</ul>
@@ -4017,7 +4037,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createTableDescriptor</h4>
-<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1991">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2000">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName tableName,
byte[][] families,
int maxVersions)</pre>
</li>
@@ -4028,7 +4048,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createLocalHRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2013">createLocalHRegion</a>(org.apache.hadoop.hbase.client.TableDescriptor desc,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2022">createLocalHRegion</a>(org.apache.hadoop.hbase.client.TableDescriptor desc,
byte[] startKey,
byte[] endKey)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4051,7 +4071,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createLocalHRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2024">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo info,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2033">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo info,
org.apache.hadoop.hbase.client.TableDescriptor desc)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create an HRegion that writes to the local tmp dirs. Creates the WAL for you. Be sure to call
@@ -4068,7 +4088,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createLocalHRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2036">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo info,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2045">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo info,
org.apache.hadoop.hbase.client.TableDescriptor desc,
org.apache.hadoop.hbase.wal.WAL wal)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4092,7 +4112,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<li class="blockList">
<h4>createLocalHRegion</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2059">createLocalHRegion</a>(byte[] tableName,
+public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2068">createLocalHRegion</a>(byte[] tableName,
byte[] startKey,
byte[] stopKey,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> callingMethod,
@@ -4131,7 +4151,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createLocalHRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2077">createLocalHRegion</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2086">createLocalHRegion</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] startKey,
byte[] stopKey,
boolean isReadOnly,
@@ -4160,7 +4180,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createLocalHRegionWithInMemoryFlags</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2083">createLocalHRegionWithInMemoryFlags</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2092">createLocalHRegionWithInMemoryFlags</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] startKey,
byte[] stopKey,
boolean isReadOnly,
@@ -4181,7 +4201,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>deleteTableData</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2119">deleteTableData</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2128">deleteTableData</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Provide an existing table name to truncate.
Scans the table and issues a delete for each row read.</div>
@@ -4201,7 +4221,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>truncateTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2139">truncateTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2148">truncateTable</a>(org.apache.hadoop.hbase.TableName tableName,
boolean preserveRegions)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Truncate a table using the admin command.
@@ -4223,7 +4243,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>truncateTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2158">truncateTable</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2167">truncateTable</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Truncate a table using the admin command.
Effectively disables, deletes, and recreates the table.
@@ -4246,7 +4266,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadTable</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2169">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2178">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
byte[] f)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
@@ -4267,7 +4287,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadTable</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2180">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2189">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
byte[] f,
boolean writeToWAL)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4289,7 +4309,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadTable</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2191">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2200">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
byte[][] f)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
@@ -4310,7 +4330,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadTable</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2203">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2212">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
byte[][] f,
byte[] value)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4333,7 +4353,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadTable</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2215">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2224">loadTable</a>(org.apache.hadoop.hbase.client.Table t,
byte[][] f,
byte[] value,
boolean writeToWAL)
@@ -4357,7 +4377,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadRegion</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2283">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion r,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2292">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion r,
byte[] f)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -4372,7 +4392,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadRegion</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2287">loadRegion</a>(org.apache.hadoop.hbase.regionserver.Region r,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2296">loadRegion</a>(org.apache.hadoop.hbase.regionserver.Region r,
byte[] f)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -4387,7 +4407,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadRegion</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2299">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion r,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2308">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion r,
byte[] f,
boolean flush)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4410,7 +4430,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2336">loadNumericRows</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2345">loadNumericRows</a>(org.apache.hadoop.hbase.client.Table t,
byte[] f,
int startRow,
int endRow)
@@ -4427,7 +4447,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>loadRandomRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2346">loadRandomRows</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2355">loadRandomRows</a>(org.apache.hadoop.hbase.client.Table t,
byte[] f,
int rowSize,
int totalRows)
@@ -4444,7 +4464,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>verifyNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2358">verifyNumericRows</a>(org.apache.hadoop.hbase.client.Table table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2367">verifyNumericRows</a>(org.apache.hadoop.hbase.client.Table table,
byte[] f,
int startRow,
int endRow,
@@ -4462,7 +4482,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>verifyNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2377">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region region,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2386">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region region,
byte[] f,
int startRow,
int endRow)
@@ -4479,7 +4499,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>verifyNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2382">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion region,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2391">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion region,
byte[] f,
int startRow,
int endRow)
@@ -4496,7 +4516,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>verifyNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2387">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region region,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2396">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region region,
byte[] f,
int startRow,
int endRow,
@@ -4514,7 +4534,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>verifyNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2392">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion region,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2401">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion region,
byte[] f,
int startRow,
int endRow,
@@ -4532,7 +4552,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>deleteNumericRows</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2412">deleteNumericRows</a>(org.apache.hadoop.hbase.client.Table t,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2421">deleteNumericRows</a>(org.apache.hadoop.hbase.client.Table t,
byte[] f,
int startRow,
int endRow)
@@ -4549,7 +4569,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2427">countRows</a>(org.apache.hadoop.hbase.client.Table table)
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2436">countRows</a>(org.apache.hadoop.hbase.client.Table table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Return the number of rows in the given table.</div>
<dl>
@@ -4568,7 +4588,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2431">countRows</a>(org.apache.hadoop.hbase.client.Table table,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2440">countRows</a>(org.apache.hadoop.hbase.client.Table table,
org.apache.hadoop.hbase.client.Scan scan)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -4583,7 +4603,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2441">countRows</a>(org.apache.hadoop.hbase.client.Table table,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2450">countRows</a>(org.apache.hadoop.hbase.client.Table table,
byte[]... families)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -4598,7 +4618,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2452">countRows</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2461">countRows</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Return the number of rows in the given table.</div>
<dl>
@@ -4613,7 +4633,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2461">countRows</a>(org.apache.hadoop.hbase.regionserver.Region region)
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2470">countRows</a>(org.apache.hadoop.hbase.regionserver.Region region)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -4627,7 +4647,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2465">countRows</a>(org.apache.hadoop.hbase.regionserver.Region region,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2474">countRows</a>(org.apache.hadoop.hbase.regionserver.Region region,
org.apache.hadoop.hbase.client.Scan scan)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -4642,7 +4662,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>countRows</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2474">countRows</a>(org.apache.hadoop.hbase.regionserver.InternalScanner scanner)
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2483">countRows</a>(org.apache.hadoop.hbase.regionserver.InternalScanner scanner)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -4656,7 +4676,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>checksumRows</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2489">checksumRows</a>(org.apache.hadoop.hbase.client.Table table)
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2498">checksumRows</a>(org.apache.hadoop.hbase.client.Table table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block">Return an md5 digest of the entire contents of a table.</div>
<dl>
@@ -4671,7 +4691,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createMultiRegionsInMeta</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.client.RegionInfo> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2551">createMultiRegionsInMeta</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.client.RegionInfo> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2560">createMultiRegionsInMeta</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor htd,
byte[][] startKeys)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4696,7 +4716,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createWal</h4>
-<pre>public static org.apache.hadoop.hbase.wal.WAL <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2577">createWal</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static org.apache.hadoop.hbase.wal.WAL <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2586">createWal</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.hbase.client.RegionInfo hri)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4713,7 +4733,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createRegionAndWAL</h4>
-<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2591">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
+<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2600">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor htd)
@@ -4732,7 +4752,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createRegionAndWAL</h4>
-<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2600">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
+<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2609">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor htd,
@@ -4752,7 +4772,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createRegionAndWAL</h4>
-<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2612">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
+<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2621">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor htd,
@@ -4772,7 +4792,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createRegionAndWAL</h4>
-<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2625">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
+<pre>public static org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2634">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo info,
org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor htd,
@@ -4792,7 +4812,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getMetaTableRows</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2638">getMetaTableRows</a>()
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2647">getMetaTableRows</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Returns all rows from the hbase:meta table.</div>
<dl>
@@ -4807,7 +4827,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getMetaTableRows</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2658">getMetaTableRows</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2667">getMetaTableRows</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Returns all rows from the hbase:meta table for a given user table</div>
<dl>
@@ -4822,7 +4842,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getOtherRegionServer</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegionServer <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2700">getOtherRegionServer</a>(org.apache.hadoop.hbase.regionserver.HRegionServer rs)</pre>
+<pre>public org.apache.hadoop.hbase.regionserver.HRegionServer <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2709">getOtherRegionServer</a>(org.apache.hadoop.hbase.regionserver.HRegionServer rs)</pre>
</li>
</ul>
<a name="getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">
@@ -4831,7 +4851,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getRSForFirstRegionInTable</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegionServer <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2718">getRSForFirstRegionInTable</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public org.apache.hadoop.hbase.regionserver.HRegionServer <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2727">getRSForFirstRegionInTable</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">Tool to get the reference to the region server object that holds the
@@ -4853,7 +4873,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>startMiniMapReduceCluster</h4>
-<pre>public org.apache.hadoop.mapred.MiniMRCluster <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2756">startMiniMapReduceCluster</a>()
+<pre>public org.apache.hadoop.mapred.MiniMRCluster <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2765">startMiniMapReduceCluster</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Starts a <code>MiniMRCluster</code> with a default number of
<code>TaskTracker</code>'s.</div>
@@ -4869,7 +4889,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>shutdownMiniMapReduceCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2867">shutdownMiniMapReduceCluster</a>()</pre>
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2876">shutdownMiniMapReduceCluster</a>()</pre>
<div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
</li>
</ul>
@@ -4879,7 +4899,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createMockRegionServerService</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2881">createMockRegionServerService</a>()
+<pre>public org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2890">createMockRegionServerService</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a stubbed out RegionServerService, mainly for getting FS.</div>
<dl>
@@ -4894,7 +4914,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createMockRegionServerService</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2889">createMockRegionServerService</a>(org.apache.hadoop.hbase.ipc.RpcServerInterface rpc)
+<pre>public org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2898">createMockRegionServerService</a>(org.apache.hadoop.hbase.ipc.RpcServerInterface rpc)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a stubbed out RegionServerService, mainly for getting FS.
This version is used by TestTokenAuthentication</div>
@@ -4910,7 +4930,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>createMockRegionServerService</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2901">createMockRegionServerService</a>(org.apache.hadoop.hbase.ServerName name)
+<pre>public org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2910">createMockRegionServerService</a>(org.apache.hadoop.hbase.ServerName name)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Create a stubbed out RegionServerService, mainly for getting FS.
This version is used by TestOpenRegionHandler</div>
@@ -4926,7 +4946,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>enableDebug</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2912">enableDebug</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> clazz)</pre>
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2921">enableDebug</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> clazz)</pre>
<div class="block">Switches the logger for the given class to DEBUG level.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -4940,7 +4960,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>expireMasterSession</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2927">expireMasterSession</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2936">expireMasterSession</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block">Expire the Master's session</div>
<dl>
@@ -4955,7 +4975,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>expireRegionServerSession</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2936">expireRegionServerSession</a>(int index)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2945">expireRegionServerSession</a>(int index)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block">Expire a region server's session</div>
<dl>
@@ -4972,7 +4992,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>expireSession</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2962">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher nodeZK)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2971">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher nodeZK)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -4986,7 +5006,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>expireSession</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2977">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher nodeZK,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2986">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher nodeZK,
boolean checkStatus)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block">Expire a ZooKeeper session as recommended in ZooKeeper documentation
@@ -5010,7 +5030,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getHBaseCluster</h4>
-<pre>public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3028">getHBaseCluster</a>()</pre>
+<pre>public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3037">getHBaseCluster</a>()</pre>
<div class="block">Get the Mini HBase cluster.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -5026,7 +5046,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getHBaseClusterInterface</h4>
-<pre>public org.apache.hadoop.hbase.HBaseCluster <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3040">getHBaseClusterInterface</a>()</pre>
+<pre>public org.apache.hadoop.hbase.HBaseCluster <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3049">getHBaseClusterInterface</a>()</pre>
<div class="block">Returns the HBaseCluster instance.
<p>Returned object can be any of the subclasses of HBaseCluster, and the
tests referring this should not assume that the cluster is a mini cluster or a
@@ -5041,7 +5061,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getConnection</h4>
-<pre>public org.apache.hadoop.hbase.client.Connection <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3056">getConnection</a>()
+<pre>public org.apache.hadoop.hbase.client.Connection <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3065">getConnection</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Get a Connection to the cluster. Not thread-safe (This class needs a lot of work to make it
thread-safe).</div>
@@ -5059,7 +5079,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getAsyncConnection</h4>
-<pre>public org.apache.hadoop.hbase.client.AsyncClusterConnection <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3063">getAsyncConnection</a>()
+<pre>public org.apache.hadoop.hbase.client.AsyncClusterConnection <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3072">getAsyncConnection</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5073,7 +5093,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>closeConnection</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3070">closeConnection</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3079">closeConnection</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5087,7 +5107,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getAdmin</h4>
-<pre>public org.apache.hadoop.hbase.client.Admin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3081">getAdmin</a>()
+<pre>public org.apache.hadoop.hbase.client.Admin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3090">getAdmin</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Returns an Admin instance which is shared between HBaseTestingUtility instance users.
Closing it has no effect, it will be closed automatically when the cluster shutdowns</div>
@@ -5103,7 +5123,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getHbck</h4>
-<pre>public org.apache.hadoop.hbase.client.Hbck <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3093">getHbck</a>()
+<pre>public org.apache.hadoop.hbase.client.Hbck <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3102">getHbck</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Returns an <code>Hbck</code> instance. Needs be closed when done.</div>
<dl>
@@ -5118,7 +5138,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>unassignRegion</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3102">unassignRegion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> regionName)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3111">unassignRegion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> regionName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Unassign the named region.</div>
<dl>
@@ -5135,7 +5155,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>unassignRegion</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3111">unassignRegion</a>(byte[] regionName)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3120">unassignRegion</a>(byte[] regionName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Unassign the named region.</div>
<dl>
@@ -5152,7 +5172,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>unassignRegionByRow</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3121">unassignRegionByRow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> row,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3130">unassignRegionByRow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> row,
org.apache.hadoop.hbase.client.RegionLocator table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Closes the region containing the given row.</div>
@@ -5171,7 +5191,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>unassignRegionByRow</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3132">unassignRegionByRow</a>(byte[] row,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3141">unassignRegionByRow</a>(byte[] row,
org.apache.hadoop.hbase.client.RegionLocator table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Closes the region containing the given row.</div>
@@ -5190,7 +5210,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getSplittableRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3144">getSplittableRegion</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3153">getSplittableRegion</a>(org.apache.hadoop.hbase.TableName tableName,
int maxAttempts)</pre>
</li>
</ul>
@@ -5200,7 +5220,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getDFSCluster</h4>
-<pre>public org.apache.hadoop.hdfs.MiniDFSCluster <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3177">getDFSCluster</a>()</pre>
+<pre>public org.apache.hadoop.hdfs.MiniDFSCluster <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3186">getDFSCluster</a>()</pre>
</li>
</ul>
<a name="setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">
@@ -5209,7 +5229,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>setDFSCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3181">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster cluster)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3190">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster cluster)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -5225,7 +5245,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>setDFSCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3193">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster cluster,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3202">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster cluster,
boolean requireDown)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5247,7 +5267,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>getTestFileSystem</h4>
-<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3202">getTestFileSystem</a>()
+<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3211">getTestFileSystem</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5261,7 +5281,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableAvailable</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3213">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName table)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3222">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Wait until all regions in a table have been assigned. Waits default timeout before giving up
@@ -5281,7 +5301,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableAvailable</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3218">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3227">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName table,
long timeoutMillis)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5298,7 +5318,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableAvailable</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3228">waitTableAvailable</a>(byte[] table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3237">waitTableAvailable</a>(byte[] table,
long timeoutMillis)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5319,7 +5339,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>explainTableAvailability</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3233">explainTableAvailability</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3242">explainTableAvailability</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5333,7 +5353,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<ul class="blockList">
<li class="blockList">
<h4>explainTableState</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3257">explainTableState</a>(org.apache.hadoop.hbase.TableName table,
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3266">explainTableState</a>(org.apache.hadoop.hbase.TableName table,
org.apache.hadoop.hbase.client.TableState.State state)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -5349,7 +5369,7 @@ public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../
<li class="blockList">
<h4>findLastTableState</h4>
<pre>@Nullable
-public org.apache.hadoop.hbase.client.TableState <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3271">findLastTableState</a>(org.apache.hadoop.hbase.TableName table)
+public org.apache.hadoop.hbase.client.TableState <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3280">findLastTableState</a>(org.apache.hadoop.hbase.TableName table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5363,7 +5383,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableEnabled</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3299">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName table)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3308">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Waits for a table to be 'enabled'. Enabled means that table is set as 'enabled' and the
@@ -5384,7 +5404,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableEnabled</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3313">waitTableEnabled</a>(byte[] table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3322">waitTableEnabled</a>(byte[] table,
long timeoutMillis)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5408,7 +5428,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableEnabled</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3318">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3327">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName table,
long timeoutMillis)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -5423,7 +5443,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableDisabled</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3330">waitTableDisabled</a>(byte[] table)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3339">waitTableDisabled</a>(byte[] table)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Waits for a table to be 'disabled'. Disabled means that table is set as 'disabled'
@@ -5443,7 +5463,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableDisabled</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3335">waitTableDisabled</a>(org.apache.hadoop.hbase.TableName table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3344">waitTableDisabled</a>(org.apache.hadoop.hbase.TableName table,
long millisTimeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5460,7 +5480,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitTableDisabled</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3347">waitTableDisabled</a>(byte[] table,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3356">waitTableDisabled</a>(byte[] table,
long timeoutMillis)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5481,7 +5501,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>ensureSomeRegionServersAvailable</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3359">ensureSomeRegionServersAvailable</a>(int num)
+<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3368">ensureSomeRegionServersAvailable</a>(int num)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Make sure that at least the specified number of region servers
are running</div>
@@ -5501,7 +5521,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>ensureSomeNonStoppedRegionServersAvailable</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3380">ensureSomeNonStoppedRegionServersAvailable</a>(int num)
+<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3389">ensureSomeNonStoppedRegionServersAvailable</a>(int num)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Make sure that at least the specified number of region servers
are running. We don't count the ones that are currently stopping or are
@@ -5522,7 +5542,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getDifferentUser</h4>
-<pre>public static org.apache.hadoop.hbase.security.User <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3412">getDifferentUser</a>(org.apache.hadoop.conf.Configuration c,
+<pre>public static org.apache.hadoop.hbase.security.User <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3421">getDifferentUser</a>(org.apache.hadoop.conf.Configuration c,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> differentiatingSuffix)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">This method clones the passed <code>c</code> configuration setting a new
@@ -5545,7 +5565,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getAllOnlineRegions</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3428">getAllOnlineRegions</a>(<a href="../../../../org/apache/hadoop/hbase/M [...]
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3437">getAllOnlineRegions</a>(<a href="../../../../org/apache/hadoop/hbase/M [...]
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5559,7 +5579,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>setMaxRecoveryErrorCount</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3472">setMaxRecoveryErrorCount</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a> stream,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3481">setMaxRecoveryErrorCount</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a> stream,
int max)</pre>
<div class="block">Set maxRecoveryErrorCount in DFSClient. In 0.20 pre-append its hard-coded to 5 and
makes tests linger. Here is the exception you'll see:
@@ -5587,7 +5607,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>assignRegion</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3498">assignRegion</a>(org.apache.hadoop.hbase.client.RegionInfo regionInfo)
+<pre>public boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3507">assignRegion</a>(org.apache.hadoop.hbase.client.RegionInfo regionInfo)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">Uses directly the assignment manager to assign the region. and waits until the specified region
@@ -5607,7 +5627,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>moveRegionAndWait</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3513">moveRegionAndWait</a>(org.apache.hadoop.hbase.client.RegionInfo destRegion,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3522">moveRegionAndWait</a>(org.apache.hadoop.hbase.client.RegionInfo destRegion,
org.apache.hadoop.hbase.ServerName destServer)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5628,7 +5648,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitUntilAllRegionsAssigned</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3538">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3547">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Wait until all regions for a table in hbase:meta have a non-empty
info:server, up to a configuable timeout value (default is 60 seconds)
@@ -5649,7 +5669,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitUntilAllSystemRegionsAssigned</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3547">waitUntilAllSystemRegionsAssigned</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3556">waitUntilAllSystemRegionsAssigned</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Waith until all system table's regions get assigned</div>
<dl>
@@ -5664,7 +5684,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitUntilAllRegionsAssigned</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3560">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3569">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName tableName,
long timeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Wait until all regions for a table in hbase:meta have a non-empty
@@ -5686,7 +5706,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getFromStoreFile</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.Cell> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3643">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore store,
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.Cell> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3652">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore store,
org.apache.hadoop.hbase.client.Get get)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Do a small get/scan against one store. This is required because store
@@ -5703,7 +5723,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getRegionSplitStartKeys</h4>
-<pre>public byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3673">getRegionSplitStartKeys</a>(byte[] startKey,
+<pre>public byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3682">getRegionSplitStartKeys</a>(byte[] startKey,
byte[] endKey,
int numRegions)</pre>
<div class="block">Create region split keys between startkey and endKey</div>
@@ -5723,7 +5743,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getFromStoreFile</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.Cell> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3686">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore store,
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.Cell> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3695">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore store,
byte[] row,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a><byte[]> columns)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5741,7 +5761,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>assertKVListsEqual</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3697">assertKVListsEqual</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> additionalMsg,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3706">assertKVListsEqual</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> additionalMsg,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><? extends org.apache.hadoop.hbase.Cell> expected,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><? extends org.apache.hadoop.hbase.Cell> actual)</pre>
</li>
@@ -5752,7 +5772,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>safeGetAsStr</h4>
-<pre>public static <T> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3724">safeGetAsStr</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><T> lst,
+<pre>public static <T> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3733">safeGetAsStr</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><T> lst,
int i)</pre>
</li>
</ul>
@@ -5762,7 +5782,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getClusterKey</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3732">getClusterKey</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3741">getClusterKey</a>()</pre>
</li>
</ul>
<a name="createRandomTable-org.apache.hadoop.hbase.TableName-java.util.Collection-int-int-int-int-int-">
@@ -5771,7 +5791,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createRandomTable</h4>
-<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3740">createRandomTable</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public org.apache.hadoop.hbase.client.Table <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3749">createRandomTable</a>(org.apache.hadoop.hbase.TableName tableName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> families,
int maxVersions,
int numColsPerRow,
@@ -5794,7 +5814,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>randomFreePort</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3828">randomFreePort</a>()</pre>
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3837">randomFreePort</a>()</pre>
</li>
</ul>
<a name="randomMultiCastAddress--">
@@ -5803,7 +5823,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>randomMultiCastAddress</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3898">randomMultiCastAddress</a>()</pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3907">randomMultiCastAddress</a>()</pre>
</li>
</ul>
<a name="waitForHostPort-java.lang.String-int-">
@@ -5812,7 +5832,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitForHostPort</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3902">waitForHostPort</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> host,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3911">waitForHostPort</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> host,
int port)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -5827,7 +5847,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3933">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3942">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.TableName tableName,
byte[] columnFamily,
org.apache.hadoop.hbase.io.compress.Compression.Algorithm compression,
@@ -5849,7 +5869,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3945">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3954">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.TableName tableName,
byte[] columnFamily,
org.apache.hadoop.hbase.io.compress.Compression.Algorithm compression,
@@ -5874,7 +5894,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3964">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3973">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.TableName tableName,
byte[][] columnFamilies,
org.apache.hadoop.hbase.io.compress.Compression.Algorithm compression,
@@ -5899,7 +5919,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3987">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3996">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor desc,
org.apache.hadoop.hbase.client.ColumnFamilyDescriptor hcd)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5919,7 +5939,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3997">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4006">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor desc,
org.apache.hadoop.hbase.client.ColumnFamilyDescriptor hcd,
int numRegionsPerServer)
@@ -5940,7 +5960,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4008">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4017">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor desc,
org.apache.hadoop.hbase.client.ColumnFamilyDescriptor[] hcds,
int numRegionsPerServer)
@@ -5961,7 +5981,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createPreSplitLoadTestTable</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4020">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4029">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hbase.client.TableDescriptor td,
org.apache.hadoop.hbase.client.ColumnFamilyDescriptor[] cds,
org.apache.hadoop.hbase.util.RegionSplitter.SplitAlgorithm splitter,
@@ -5983,7 +6003,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getMetaRSPort</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4067">getMetaRSPort</a>(org.apache.hadoop.hbase.client.Connection connection)
+<pre>public static int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4076">getMetaRSPort</a>(org.apache.hadoop.hbase.client.Connection connection)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -5997,7 +6017,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>assertRegionOnServer</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4079">assertRegionOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo hri,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4088">assertRegionOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo hri,
org.apache.hadoop.hbase.ServerName server,
long timeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -6019,7 +6039,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>assertRegionOnlyOnServer</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4098">assertRegionOnlyOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo hri,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4107">assertRegionOnlyOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo hri,
org.apache.hadoop.hbase.ServerName server,
long timeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -6039,7 +6059,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createTestRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4128">createTestRegion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> tableName,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4137">createTestRegion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> tableName,
org.apache.hadoop.hbase.client.ColumnFamilyDescriptor cd)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -6054,7 +6074,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>createTestRegion</h4>
-<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4135">createTestRegion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> tableName,
+<pre>public org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4144">createTestRegion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> tableName,
org.apache.hadoop.hbase.client.ColumnFamilyDescriptor cd,
org.apache.hadoop.hbase.io.hfile.BlockCache blockCache)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -6070,7 +6090,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>setFileSystemURI</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4143">setFileSystemURI</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> fsURI)</pre>
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4152">setFileSystemURI</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> fsURI)</pre>
</li>
</ul>
<a name="predicateNoRegionsInTransition--">
@@ -6079,7 +6099,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>predicateNoRegionsInTransition</h4>
-<pre>public org.apache.hadoop.hbase.Waiter.ExplainingPredicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4150">predicateNoRegionsInTransition</a>()</pre>
+<pre>public org.apache.hadoop.hbase.Waiter.ExplainingPredicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4159">predicateNoRegionsInTransition</a>()</pre>
<div class="block">Returns a <code>Waiter.Predicate</code> for checking that there are no regions in transition in master</div>
</li>
</ul>
@@ -6089,7 +6109,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>predicateTableEnabled</h4>
-<pre>public org.apache.hadoop.hbase.Waiter.Predicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4173">predicateTableEnabled</a>(org.apache.hadoop.hbase.TableName tableName)</pre>
+<pre>public org.apache.hadoop.hbase.Waiter.Predicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4182">predicateTableEnabled</a>(org.apache.hadoop.hbase.TableName tableName)</pre>
<div class="block">Returns a <code>Waiter.Predicate</code> for checking that table is enabled</div>
</li>
</ul>
@@ -6099,7 +6119,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>predicateTableDisabled</h4>
-<pre>public org.apache.hadoop.hbase.Waiter.Predicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4190">predicateTableDisabled</a>(org.apache.hadoop.hbase.TableName tableName)</pre>
+<pre>public org.apache.hadoop.hbase.Waiter.Predicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4199">predicateTableDisabled</a>(org.apache.hadoop.hbase.TableName tableName)</pre>
<div class="block">Returns a <code>Waiter.Predicate</code> for checking that table is enabled</div>
</li>
</ul>
@@ -6109,7 +6129,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>predicateTableAvailable</h4>
-<pre>public org.apache.hadoop.hbase.Waiter.Predicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4207">predicateTableAvailable</a>(org.apache.hadoop.hbase.TableName tableName)</pre>
+<pre>public org.apache.hadoop.hbase.Waiter.Predicate<<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4216">predicateTableAvailable</a>(org.apache.hadoop.hbase.TableName tableName)</pre>
<div class="block">Returns a <code>Waiter.Predicate</code> for checking that table is enabled</div>
</li>
</ul>
@@ -6119,7 +6139,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitUntilNoRegionsInTransition</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4244">waitUntilNoRegionsInTransition</a>(long timeout)
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4253">waitUntilNoRegionsInTransition</a>(long timeout)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Wait until no regions in transition.</div>
<dl>
@@ -6136,7 +6156,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitUntilNoRegionsInTransition</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4252">waitUntilNoRegionsInTransition</a>()
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4261">waitUntilNoRegionsInTransition</a>()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Wait until no regions in transition. (time limit 15min)</div>
<dl>
@@ -6151,7 +6171,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>waitLabelAvailable</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4261">waitLabelAvailable</a>(long timeoutMillis,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4270">waitLabelAvailable</a>(long timeoutMillis,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>... labels)</pre>
<div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
<dl>
@@ -6167,7 +6187,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>generateColumnDescriptors</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.HColumnDescriptor> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4292">generateColumnDescriptors</a>()</pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.HColumnDescriptor> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4301">generateColumnDescriptors</a>()</pre>
<div class="block">Create a set of column descriptors with the combination of compression,
encoding, bloom codecs available.</div>
<dl>
@@ -6182,7 +6202,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>generateColumnDescriptors</h4>
-<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.HColumnDescriptor> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4302">generateColumnDescriptors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> prefix)</pre>
+<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.hbase.HColumnDescriptor> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4311">generateColumnDescriptors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> prefix)</pre>
<div class="block">Create a set of column descriptors with the combination of compression,
encoding, bloom codecs available.</div>
<dl>
@@ -6199,7 +6219,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getSupportedCompressionAlgorithms</h4>
-<pre>public static org.apache.hadoop.hbase.io.compress.Compression.Algorithm[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4325">getSupportedCompressionAlgorithms</a>()</pre>
+<pre>public static org.apache.hadoop.hbase.io.compress.Compression.Algorithm[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4334">getSupportedCompressionAlgorithms</a>()</pre>
<div class="block">Get supported compression algorithms.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -6213,7 +6233,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getClosestRowBefore</h4>
-<pre>public org.apache.hadoop.hbase.client.Result <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4340">getClosestRowBefore</a>(org.apache.hadoop.hbase.regionserver.Region r,
+<pre>public org.apache.hadoop.hbase.client.Result <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4349">getClosestRowBefore</a>(org.apache.hadoop.hbase.regionserver.Region r,
byte[] row,
byte[] family)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -6229,7 +6249,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>setupMiniKdc</h4>
-<pre>public org.apache.hadoop.minikdc.MiniKdc <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4369">setupMiniKdc</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> keytabFile)
+<pre>public org.apache.hadoop.minikdc.MiniKdc <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4378">setupMiniKdc</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> keytabFile)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<div class="block">Sets up <code>MiniKdc</code> for testing security.
Uses <code>HBaseKerberosUtils</code> to set the given keytab file as
@@ -6246,7 +6266,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getNumHFiles</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4399">getNumHFiles</a>(org.apache.hadoop.hbase.TableName tableName,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4408">getNumHFiles</a>(org.apache.hadoop.hbase.TableName tableName,
byte[] family)</pre>
</li>
</ul>
@@ -6256,7 +6276,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockList">
<li class="blockList">
<h4>getNumHFilesForRS</h4>
-<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4408">getNumHFilesForRS</a>(org.apache.hadoop.hbase.regionserver.HRegionServer rs,
+<pre>public int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4417">getNumHFilesForRS</a>(org.apache.hadoop.hbase.regionserver.HRegionServer rs,
org.apache.hadoop.hbase.TableName tableName,
byte[] family)</pre>
</li>
@@ -6267,7 +6287,7 @@ public org.apache.hadoop.hbase.client.TableState <a href="../../../../
<ul class="blockListLast">
<li class="blockList">
<h4>verifyTableDescriptorIgnoreTableName</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4417">verifyTableDescriptorIgnoreTableName</a>(org.apache.hadoop.hbase.client.TableDescriptor ltd,
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4426">verifyTableDescriptorIgnoreTableName</a>(org.apache.hadoop.hbase.client.TableDescriptor ltd,
org.apache.hadoop.hbase.client.TableDescriptor rtd)</pre>
</li>
</ul>
diff --git a/testapidocs/org/apache/hadoop/hbase/class-use/StartMiniClusterOption.html b/testapidocs/org/apache/hadoop/hbase/class-use/StartMiniClusterOption.html
index 8dc1cb7..f1ec43f 100644
--- a/testapidocs/org/apache/hadoop/hbase/class-use/StartMiniClusterOption.html
+++ b/testapidocs/org/apache/hadoop/hbase/class-use/StartMiniClusterOption.html
@@ -103,12 +103,16 @@
</tr>
<tbody>
<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseTestingUtility.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">restartHBaseCluster</a></span>(<a href="../../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)</code> </td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><span class="typeNameLabel">HBaseTestingUtility.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a></span>(<a href="../../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)</code>
<div class="block">Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
<td class="colLast"><span class="typeNameLabel">HBaseTestingUtility.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a></span>(<a href="../../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)</code>
<div class="block">Starts up mini hbase cluster.</div>
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 33f1003..196fd45 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -1247,1868 +1247,1868 @@
<span class="sourceLineNo">1239</span><a name="line.1239"></a>
<span class="sourceLineNo">1240</span> public void restartHBaseCluster(int servers, List<Integer> ports)<a name="line.1240"></a>
<span class="sourceLineNo">1241</span> throws IOException, InterruptedException {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span> if (hbaseAdmin != null) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span> hbaseAdmin.close();<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span> hbaseAdmin = null;<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span> }<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span> if (this.asyncConnection != null) {<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span> this.asyncConnection.close();<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span> this.asyncConnection = null;<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span> }<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span> this.hbaseCluster = new MiniHBaseCluster(this.conf, 1, servers, ports, null, null);<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span> // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span> Connection conn = ConnectionFactory.createConnection(this.conf);<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span> Table t = conn.getTable(TableName.META_TABLE_NAME);<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span> ResultScanner s = t.getScanner(new Scan());<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span> while (s.next() != null) {<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span> // do nothing<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span> }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span> LOG.info("HBase has been restarted");<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span> s.close();<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span> t.close();<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span> conn.close();<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span> }<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span><a name="line.1263"></a>
-<span class="sourceLineNo">1264</span> /**<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span> * @return Current mini hbase cluster. Only has something in it after a call<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span> * to {@link #startMiniCluster()}.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span> * @see #startMiniCluster()<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span> */<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span> public MiniHBaseCluster getMiniHBaseCluster() {<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span> if (this.hbaseCluster == null || this.hbaseCluster instanceof MiniHBaseCluster) {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span> return (MiniHBaseCluster)this.hbaseCluster;<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span> }<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span> throw new RuntimeException(hbaseCluster + " not an instance of " +<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span> MiniHBaseCluster.class.getName());<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span> }<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span><a name="line.1276"></a>
-<span class="sourceLineNo">1277</span> /**<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span> * Stops mini hbase, zk, and hdfs clusters.<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span> * @throws IOException<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span> * @see #startMiniCluster(int)<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span> */<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span> public void shutdownMiniCluster() throws Exception {<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span> LOG.info("Shutting down minicluster");<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span> shutdownMiniHBaseCluster();<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span> shutdownMiniDFSCluster();<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span> shutdownMiniZKCluster();<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span><a name="line.1287"></a>
-<span class="sourceLineNo">1288</span> cleanupTestDir();<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span> miniClusterRunning = false;<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span> LOG.info("Minicluster is down");<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span> }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span> /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span> * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span> * @throws java.io.IOException in case command is unsuccessful<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span> */<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span> public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span> cleanup();<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span> if (this.hbaseCluster != null) {<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span> this.hbaseCluster.shutdown();<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span> // Wait till hbase is down before going on to shutdown zk.<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span> this.hbaseCluster.waitUntilShutDown();<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span> this.hbaseCluster = null;<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span> }<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span> if (zooKeeperWatcher != null) {<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span> zooKeeperWatcher.close();<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span> zooKeeperWatcher = null;<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span> }<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span> }<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span><a name="line.1310"></a>
-<span class="sourceLineNo">1311</span> /**<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span> * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span> * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span> */<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span> public void killMiniHBaseCluster() throws IOException {<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span> cleanup();<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span> if (this.hbaseCluster != null) {<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span> getMiniHBaseCluster().killAll();<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span> this.hbaseCluster = null;<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span> }<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span> if (zooKeeperWatcher != null) {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span> zooKeeperWatcher.close();<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span> zooKeeperWatcher = null;<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span> }<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span> }<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span><a name="line.1326"></a>
-<span class="sourceLineNo">1327</span> // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span> private void cleanup() throws IOException {<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span> closeConnection();<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span> // unset the configuration for MIN and MAX RS to start<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span> conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span> conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span> }<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span><a name="line.1334"></a>
-<span class="sourceLineNo">1335</span> /**<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span> * Returns the path to the default root dir the minicluster uses. If <code>create</code><a name="line.1336"></a>
-<span class="sourceLineNo">1337</span> * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span> * before or not. If false, previous path is used.<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span> * Note: this does not cause the root dir to be created.<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span> * @return Fully qualified path for the default hbase root dir<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span> * @throws IOException<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span> */<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span> public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span> if (!create) {<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span> return getDataTestDirOnTestFS();<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span> } else {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span> return getNewDataTestDirOnTestFS();<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span> }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> }<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span><a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> /**<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> * except that <code>create</code> flag is false.<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span> * Note: this does not cause the root dir to be created.<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> * @return Fully qualified path for the default hbase root dir<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * @throws IOException<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> */<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> public Path getDefaultRootDirPath() throws IOException {<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> return getDefaultRootDirPath(false);<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span><a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> /**<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> * Creates an hbase rootdir in user home directory. Also creates hbase<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> * version file. Normally you won't make use of this method. Root hbasedir<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> * is created for you as part of mini cluster startup. You'd only use this<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span> * method if you were doing manual operation.<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> * @param create This flag decides whether to get a new<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * root or data directory path or not, if it has been fetched already.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * If directory already exists, it will be overwritten<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> * @return Fully qualified path to hbase root dir<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> * @throws IOException<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> */<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> public Path createRootDir(boolean create) throws IOException {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> FileSystem fs = FileSystem.get(this.conf);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> fs.mkdirs(hbaseRootdir);<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span> FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> return hbaseRootdir;<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * except that <code>create</code> flag is false.<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> * @return Fully qualified path to hbase root dir<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> * @throws IOException<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> */<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> public Path createRootDir() throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> return createRootDir(false);<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> }<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span><a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> /**<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> * Creates a hbase walDir in the user's home directory.<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> * is created for you as part of mini cluster startup. You'd only use this<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> * method if you were doing manual operation.<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> *<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> * @return Fully qualified path to hbase root dir<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> * @throws IOException<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> */<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> public Path createWALRootDir() throws IOException {<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> FileSystem fs = FileSystem.get(this.conf);<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> Path walDir = getNewDataTestDirOnTestFS();<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span> FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> fs.mkdirs(walDir);<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> return walDir;<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> }<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span><a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> private void setHBaseFsTmpDir() throws IOException {<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> if (hbaseFsTmpDirInString == null) {<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> this.conf.set("hbase.fs.tmp.dir", getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> } else {<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> }<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> }<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span><a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> /**<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> * Flushes all caches in the mini hbase cluster<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> * @throws IOException<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> */<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> public void flush() throws IOException {<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> getMiniHBaseCluster().flushcache();<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> /**<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> * Flushes all caches in the mini hbase cluster<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> public void flush(TableName tableName) throws IOException {<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> getMiniHBaseCluster().flushcache(tableName);<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span><a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> /**<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> * Compact all regions in the mini hbase cluster<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span> * @throws IOException<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> */<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> public void compact(boolean major) throws IOException {<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> getMiniHBaseCluster().compact(major);<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> }<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span><a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> /**<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * Compact all of a table's reagion in the mini hbase cluster<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @throws IOException<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> */<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> getMiniHBaseCluster().compact(tableName, major);<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> }<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span><a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> /**<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> * Create a table.<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> * @param tableName<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> * @param family<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> * @return A Table instance for the created table.<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> * @throws IOException<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> public Table createTable(TableName tableName, String family)<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> throws IOException{<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> return createTable(tableName, new String[]{family});<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span> /**<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> * Create a table.<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * @param tableName<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * @param families<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * @return A Table instance for the created table.<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * @throws IOException<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> */<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> public Table createTable(TableName tableName, String[] families)<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> throws IOException {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> List<byte[]> fams = new ArrayList<>(families.length);<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> for (String family : families) {<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> fams.add(Bytes.toBytes(family));<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> }<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> }<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span><a name="line.1479"></a>
-<span class="sourceLineNo">1480</span> /**<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> * Create a table.<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * @param tableName<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * @param family<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @return A Table instance for the created table.<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @throws IOException<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> */<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> public Table createTable(TableName tableName, byte[] family)<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> throws IOException{<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> return createTable(tableName, new byte[][]{family});<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> /**<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span> * Create a table with multiple regions.<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> * @param tableName<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * @param family<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * @param numRegions<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @return A Table instance for the created table.<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @throws IOException<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> */<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> throws IOException {<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> if (numRegions < 3) throw new IOException("Must create at least 3 regions");<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span><a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> }<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span><a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> /**<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> * Create a table.<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> * @param tableName<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> * @param families<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> * @return A Table instance for the created table.<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> * @throws IOException<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> */<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> public Table createTable(TableName tableName, byte[][] families)<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> throws IOException {<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> return createTable(tableName, families, (byte[][]) null);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> }<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span><a name="line.1521"></a>
-<span class="sourceLineNo">1522</span> /**<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> * Create a table with multiple regions.<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * @param tableName<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * @param families<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @return A Table instance for the created table.<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @throws IOException<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> */<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> }<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span><a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> /**<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * Create a table.<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> * @param tableName<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> * @param families<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> * @param splitKeys<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> * @return A Table instance for the created table.<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> * @throws IOException<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> */<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span> throws IOException {<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> }<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span><a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> /**<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> * Create a table.<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> * @param tableName the table name<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> * @param families the families<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> * @param splitKeys the splitkeys<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> * @param replicaCount the region replica count<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> * @return A Table instance for the created table.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> * @throws IOException throws IOException<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> */<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span> public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> int replicaCount) throws IOException {<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> new Configuration(getConfiguration()));<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> }<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span><a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> throws IOException{<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span><a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span> // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span> // should wait until they are assigned<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span> return getConnection().getTable(tableName);<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span> }<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span><a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> /**<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> * Create a table.<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> * @param htd<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> * @param families<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> * @param c Configuration to use<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> * @return A Table instance for the created table.<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> * @throws IOException<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> */<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> throws IOException {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> return createTable(htd, families, null, c);<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> }<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span><a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> /**<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> * Create a table.<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span> * @param htd table descriptor<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> * @param families array of column families<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> * @param splitKeys array of split keys<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> * @param c Configuration to use<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> * @return A Table instance for the created table.<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> * @throws IOException if getAdmin or createTable fails<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> */<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> Configuration c) throws IOException {<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> // on is interfering.<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Create a table.<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * @param htd table descriptor<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * @param families array of column families<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param splitKeys array of split keys<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param type Bloom type<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param blockSize block size<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * @param c Configuration to use<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @return A Table instance for the created table.<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @throws IOException if getAdmin or createTable fails<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> */<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span><a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> for (byte[] family : families) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> ColumnFamilyDescriptorBuilder cfdb = ColumnFamilyDescriptorBuilder.newBuilder(family)<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> .setBloomFilterType(type)<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> .setBlocksize(blockSize);<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> cfdb.setNewVersionBehavior(true);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span> builder.setColumnFamily(cfdb.build());<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> }<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> TableDescriptor td = builder.build();<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> if (splitKeys != null) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> getAdmin().createTable(td, splitKeys);<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> } else {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> getAdmin().createTable(td);<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // we should wait until they are assigned<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> return getConnection().getTable(td.getTableName());<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> }<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span><a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> /**<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> * Create a table.<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span> * @param htd table descriptor<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> * @param splitRows array of split keys<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> * @return A Table instance for the created table.<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span> * @throws IOException<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> */<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> throws IOException {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> for (ColumnFamilyDescriptor family : htd.getColumnFamilies()) {<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span> builder.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family)<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> .setNewVersionBehavior(true).build());<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> }<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> if (splitRows != null) {<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span> getAdmin().createTable(builder.build(), splitRows);<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> } else {<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> getAdmin().createTable(builder.build());<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> }<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> // we should wait until they are assigned<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> return getConnection().getTable(htd.getTableName());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> }<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span><a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> /**<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span> * Create a table.<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> * @param tableName the table name<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * @param families the families<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param splitKeys the split keys<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> * @param replicaCount the replica count<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> * @param c Configuration to use<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> * @return A Table instance for the created table.<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> * @throws IOException<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> */<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span> int replicaCount, final Configuration c) throws IOException {<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> htd.setRegionReplication(replicaCount);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> return createTable(htd, families, splitKeys, c);<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> }<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span><a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> /**<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> * Create a table.<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> * @param tableName<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> * @param family<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> * @param numVersions<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> * @return A Table instance for the created table.<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> * @throws IOException<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> */<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span> public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> throws IOException {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span> /**<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> * Create a table.<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * @param tableName<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> * @param families<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> * @param numVersions<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> * @return A Table instance for the created table.<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> * @throws IOException<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> */<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> throws IOException {<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> }<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> /**<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> * Create a table.<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> * @param tableName<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> * @param families<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> * @param numVersions<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> * @param splitKeys<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> * @return A Table instance for the created table.<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> * @throws IOException<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> */<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> byte[][] splitKeys) throws IOException {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> for (byte[] family : families) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> hcd.setNewVersionBehavior(true);<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> desc.addFamily(hcd);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> if (splitKeys != null) {<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> getAdmin().createTable(desc, splitKeys);<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> } else {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> getAdmin().createTable(desc);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // assigned<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getConnection().getTable(tableName);<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> * Create a table with multiple regions.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> * @param tableName<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> * @param families<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> * @param numVersions<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> * @return A Table instance for the created table.<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> * @throws IOException<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> */<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> throws IOException {<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> }<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span><a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> /**<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> * Create a table.<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span> * @param tableName<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> * @param families<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * @param numVersions<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * @param blockSize<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * @return A Table instance for the created table.<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * @throws IOException<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> */<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> int numVersions, int blockSize) throws IOException {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> for (byte[] family : families) {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> .setMaxVersions(numVersions)<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> .setBlocksize(blockSize);<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> hcd.setNewVersionBehavior(true);<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> }<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> desc.addFamily(hcd);<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span> }<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> getAdmin().createTable(desc);<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> // assigned<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> return getConnection().getTable(tableName);<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> }<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span><a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> for (byte[] family : families) {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> .setMaxVersions(numVersions)<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> .setBlocksize(blockSize);<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> hcd.setNewVersionBehavior(true);<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> desc.addFamily(hcd);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> }<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> if(cpName != null) {<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> desc.addCoprocessor(cpName);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span> getAdmin().createTable(desc);<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> // assigned<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> return getConnection().getTable(tableName);<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> }<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span><a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> /**<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> * Create a table.<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> * @param tableName<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> * @param families<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> * @param numVersions<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> * @return A Table instance for the created table.<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> * @throws IOException<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span> */<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> int[] numVersions)<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> throws IOException {<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> int i = 0;<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> for (byte[] family : families) {<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> .setMaxVersions(numVersions[i]);<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> hcd.setNewVersionBehavior(true);<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> }<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> desc.addFamily(hcd);<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> i++;<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> }<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> getAdmin().createTable(desc);<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> // assigned<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> return getConnection().getTable(tableName);<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> }<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span><a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> /**<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> * Create a table.<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> * @param tableName<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> * @param family<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> * @param splitRows<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span> * @return A Table instance for the created table.<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> * @throws IOException<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> */<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> throws IOException {<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> hcd.setNewVersionBehavior(true);<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> desc.addFamily(hcd);<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> getAdmin().createTable(desc, splitRows);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // assigned<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> return getConnection().getTable(tableName);<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> }<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span><a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> /**<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> * Create a table with multiple regions.<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> * @param tableName<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> * @param family<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span> * @return A Table instance for the created table.<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> * @throws IOException<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> */<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> public Table createMultiRegionTable(TableName tableName, byte[] family) throws IOException {<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> return createTable(tableName, family, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> }<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span><a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> /**<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> * Modify a table, synchronous.<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> * @deprecated since 3.0.0 and will be removed in 4.0.0. Just use<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> * {@link Admin#modifyTable(TableDescriptor)} directly as it is synchronous now.<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> * @see Admin#modifyTable(TableDescriptor)<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-22002">HBASE-22002</a><a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> */<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> @Deprecated<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> public static void modifyTableSync(Admin admin, TableDescriptor desc)<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> throws IOException, InterruptedException {<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> admin.modifyTable(desc);<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span> }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> * Set the number of Region replicas.<a name="line.1879"></a>
+<span class="sourceLineNo">1242</span> StartMiniClusterOption option =<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span> StartMiniClusterOption.builder().numRegionServers(servers).rsPorts(ports).build();<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span> restartHBaseCluster(option);<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span> }<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span><a name="line.1246"></a>
+<span class="sourceLineNo">1247</span> public void restartHBaseCluster(StartMiniClusterOption option)<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span> throws IOException, InterruptedException {<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span> if (hbaseAdmin != null) {<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span> hbaseAdmin.close();<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span> hbaseAdmin = null;<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span> }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span> if (this.asyncConnection != null) {<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span> this.asyncConnection.close();<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span> this.asyncConnection = null;<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span> }<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span> this.hbaseCluster =<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span> new MiniHBaseCluster(this.conf, option.getNumMasters(), option.getNumRegionServers(),<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span> option.getRsPorts(), option.getMasterClass(), option.getRsClass());<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span> // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span> Connection conn = ConnectionFactory.createConnection(this.conf);<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span> Table t = conn.getTable(TableName.META_TABLE_NAME);<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span> ResultScanner s = t.getScanner(new Scan());<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span> while (s.next() != null) {<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span> // do nothing<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span> }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span> LOG.info("HBase has been restarted");<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span> s.close();<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span> t.close();<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span> conn.close();<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span> }<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span><a name="line.1272"></a>
+<span class="sourceLineNo">1273</span> /**<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span> * @return Current mini hbase cluster. Only has something in it after a call<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span> * to {@link #startMiniCluster()}.<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span> * @see #startMiniCluster()<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span> */<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span> public MiniHBaseCluster getMiniHBaseCluster() {<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span> if (this.hbaseCluster == null || this.hbaseCluster instanceof MiniHBaseCluster) {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span> return (MiniHBaseCluster)this.hbaseCluster;<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span> }<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span> throw new RuntimeException(hbaseCluster + " not an instance of " +<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span> MiniHBaseCluster.class.getName());<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span> }<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span><a name="line.1285"></a>
+<span class="sourceLineNo">1286</span> /**<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span> * Stops mini hbase, zk, and hdfs clusters.<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span> * @throws IOException<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span> * @see #startMiniCluster(int)<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span> */<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span> public void shutdownMiniCluster() throws Exception {<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span> LOG.info("Shutting down minicluster");<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span> shutdownMiniHBaseCluster();<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span> shutdownMiniDFSCluster();<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span> shutdownMiniZKCluster();<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span><a name="line.1296"></a>
+<span class="sourceLineNo">1297</span> cleanupTestDir();<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span> miniClusterRunning = false;<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span> LOG.info("Minicluster is down");<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span> }<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span><a name="line.1301"></a>
+<span class="sourceLineNo">1302</span> /**<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span> * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span> * @throws java.io.IOException in case command is unsuccessful<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span> */<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span> public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span> cleanup();<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span> if (this.hbaseCluster != null) {<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span> this.hbaseCluster.shutdown();<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span> // Wait till hbase is down before going on to shutdown zk.<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span> this.hbaseCluster.waitUntilShutDown();<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span> this.hbaseCluster = null;<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span> }<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span> if (zooKeeperWatcher != null) {<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span> zooKeeperWatcher.close();<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span> zooKeeperWatcher = null;<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span> }<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span> }<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span><a name="line.1319"></a>
+<span class="sourceLineNo">1320</span> /**<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span> * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span> * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span> */<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span> public void killMiniHBaseCluster() throws IOException {<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span> cleanup();<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span> if (this.hbaseCluster != null) {<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span> getMiniHBaseCluster().killAll();<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span> this.hbaseCluster = null;<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span> }<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span> if (zooKeeperWatcher != null) {<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span> zooKeeperWatcher.close();<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span> zooKeeperWatcher = null;<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span> }<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span> }<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span><a name="line.1335"></a>
+<span class="sourceLineNo">1336</span> // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span> private void cleanup() throws IOException {<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span> closeConnection();<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span> // unset the configuration for MIN and MAX RS to start<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span> conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span> conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span> }<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span><a name="line.1343"></a>
+<span class="sourceLineNo">1344</span> /**<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span> * Returns the path to the default root dir the minicluster uses. If <code>create</code><a name="line.1345"></a>
+<span class="sourceLineNo">1346</span> * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span> * before or not. If false, previous path is used.<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span> * Note: this does not cause the root dir to be created.<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span> * @return Fully qualified path for the default hbase root dir<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> * @throws IOException<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> */<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> if (!create) {<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> return getDataTestDirOnTestFS();<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> } else {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> return getNewDataTestDirOnTestFS();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> }<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> }<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span><a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> /**<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span> * except that <code>create</code> flag is false.<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> * Note: this does not cause the root dir to be created.<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * @return Fully qualified path for the default hbase root dir<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @throws IOException<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> */<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> public Path getDefaultRootDirPath() throws IOException {<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> return getDefaultRootDirPath(false);<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> }<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span><a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> /**<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> * Creates an hbase rootdir in user home directory. Also creates hbase<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> * version file. Normally you won't make use of this method. Root hbasedir<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span> * is created for you as part of mini cluster startup. You'd only use this<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> * method if you were doing manual operation.<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * @param create This flag decides whether to get a new<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * root or data directory path or not, if it has been fetched already.<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> * If directory already exists, it will be overwritten<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> * @return Fully qualified path to hbase root dir<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> * @throws IOException<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> */<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> public Path createRootDir(boolean create) throws IOException {<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> FileSystem fs = FileSystem.get(this.conf);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span> fs.mkdirs(hbaseRootdir);<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> return hbaseRootdir;<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> }<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span><a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> /**<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> * except that <code>create</code> flag is false.<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> * @return Fully qualified path to hbase root dir<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> * @throws IOException<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> */<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> public Path createRootDir() throws IOException {<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> return createRootDir(false);<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> }<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span><a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> /**<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> * Creates a hbase walDir in the user's home directory.<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> * is created for you as part of mini cluster startup. You'd only use this<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> * method if you were doing manual operation.<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> *<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> * @return Fully qualified path to hbase root dir<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> * @throws IOException<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> */<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> public Path createWALRootDir() throws IOException {<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> FileSystem fs = FileSystem.get(this.conf);<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span> Path walDir = getNewDataTestDirOnTestFS();<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> fs.mkdirs(walDir);<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> return walDir;<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> }<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span><a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> private void setHBaseFsTmpDir() throws IOException {<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> if (hbaseFsTmpDirInString == null) {<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> this.conf.set("hbase.fs.tmp.dir", getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> } else {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> }<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span><a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> /**<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> * Flushes all caches in the mini hbase cluster<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> public void flush() throws IOException {<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> getMiniHBaseCluster().flushcache();<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span> }<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span><a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> /**<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> * Flushes all caches in the mini hbase cluster<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> * @throws IOException<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> */<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> public void flush(TableName tableName) throws IOException {<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> getMiniHBaseCluster().flushcache(tableName);<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> }<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span> * Compact all regions in the mini hbase cluster<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> * @throws IOException<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> */<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> public void compact(boolean major) throws IOException {<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> getMiniHBaseCluster().compact(major);<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> }<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span><a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> /**<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * Compact all of a table's reagion in the mini hbase cluster<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @throws IOException<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> */<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> getMiniHBaseCluster().compact(tableName, major);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> }<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span><a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> /**<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> * Create a table.<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> * @param tableName<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> * @param family<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> * @return A Table instance for the created table.<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> * @throws IOException<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> */<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> public Table createTable(TableName tableName, String family)<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> throws IOException{<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> return createTable(tableName, new String[]{family});<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Create a table.<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * @param tableName<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * @param families<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * @return A Table instance for the created table.<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * @throws IOException<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> */<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> public Table createTable(TableName tableName, String[] families)<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> throws IOException {<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> List<byte[]> fams = new ArrayList<>(families.length);<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> for (String family : families) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> fams.add(Bytes.toBytes(family));<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> }<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Create a table.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * @param tableName<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param family<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @return A Table instance for the created table.<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public Table createTable(TableName tableName, byte[] family)<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> throws IOException{<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> return createTable(tableName, new byte[][]{family});<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> }<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span><a name="line.1500"></a>
+<span class="sourceLineNo">1501</span> /**<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> * Create a table with multiple regions.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * @param tableName<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * @param family<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param numRegions<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @return A Table instance for the created table.<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @throws IOException<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> */<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> throws IOException {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> if (numRegions < 3) throw new IOException("Must create at least 3 regions");<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span><a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> /**<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> * Create a table.<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> * @param tableName<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> * @param families<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> * @return A Table instance for the created table.<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> * @throws IOException<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> */<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> public Table createTable(TableName tableName, byte[][] families)<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> throws IOException {<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> return createTable(tableName, families, (byte[][]) null);<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Create a table with multiple regions.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * @param tableName<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param families<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @return A Table instance for the created table.<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @throws IOException<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> */<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> }<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span><a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> /**<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> * Create a table.<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> * @param tableName<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> * @param families<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> * @param splitKeys<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> * @return A Table instance for the created table.<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> * @throws IOException<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> */<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span> public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> throws IOException {<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> }<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span><a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> /**<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> * Create a table.<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> * @param tableName the table name<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> * @param families the families<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> * @param splitKeys the splitkeys<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> * @param replicaCount the region replica count<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> * @return A Table instance for the created table.<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> * @throws IOException throws IOException<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span> */<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> int replicaCount) throws IOException {<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span> new Configuration(getConfiguration()));<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span> }<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span><a name="line.1569"></a>
+<span class="sourceLineNo">1570</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span> int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span> throws IOException{<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span><a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> // should wait until they are assigned<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> return getConnection().getTable(tableName);<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> }<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span><a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> /**<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> * Create a table.<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> * @param htd<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> * @param families<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> * @param c Configuration to use<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> * @return A Table instance for the created table.<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> * @throws IOException<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> */<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> throws IOException {<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> return createTable(htd, families, null, c);<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span><a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> /**<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span> * Create a table.<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> * @param htd table descriptor<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> * @param families array of column families<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> * @param splitKeys array of split keys<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> * @param c Configuration to use<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> * @return A Table instance for the created table.<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> * @throws IOException if getAdmin or createTable fails<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> */<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> Configuration c) throws IOException {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> // on is interfering.<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span> }<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span><a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> /**<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * Create a table.<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * @param htd table descriptor<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param families array of column families<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param splitKeys array of split keys<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param type Bloom type<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * @param blockSize block size<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> * @param c Configuration to use<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span> * @return A Table instance for the created table.<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span> * @throws IOException if getAdmin or createTable fails<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span> */<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span><a name="line.1623"></a>
+<span class="sourceLineNo">1624</span> public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span> BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span> TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span> for (byte[] family : families) {<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span> ColumnFamilyDescriptorBuilder cfdb = ColumnFamilyDescriptorBuilder.newBuilder(family)<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span> .setBloomFilterType(type)<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span> .setBlocksize(blockSize);<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span> cfdb.setNewVersionBehavior(true);<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span> builder.setColumnFamily(cfdb.build());<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span> }<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span> TableDescriptor td = builder.build();<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span> if (splitKeys != null) {<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span> getAdmin().createTable(td, splitKeys);<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span> } else {<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span> getAdmin().createTable(td);<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span> }<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span> // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span> // we should wait until they are assigned<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span> waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span> return getConnection().getTable(td.getTableName());<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span> }<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span><a name="line.1647"></a>
+<span class="sourceLineNo">1648</span> /**<a name="line.1648"></a>
+<span class="sourceLineNo">1649</span> * Create a table.<a name="line.1649"></a>
+<span class="sourceLineNo">1650</span> * @param htd table descriptor<a name="line.1650"></a>
+<span class="sourceLineNo">1651</span> * @param splitRows array of split keys<a name="line.1651"></a>
+<span class="sourceLineNo">1652</span> * @return A Table instance for the created table.<a name="line.1652"></a>
+<span class="sourceLineNo">1653</span> * @throws IOException<a name="line.1653"></a>
+<span class="sourceLineNo">1654</span> */<a name="line.1654"></a>
+<span class="sourceLineNo">1655</span> public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1655"></a>
+<span class="sourceLineNo">1656</span> throws IOException {<a name="line.1656"></a>
+<span class="sourceLineNo">1657</span> TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1657"></a>
+<span class="sourceLineNo">1658</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1658"></a>
+<span class="sourceLineNo">1659</span> for (ColumnFamilyDescriptor family : htd.getColumnFamilies()) {<a name="line.1659"></a>
+<span class="sourceLineNo">1660</span> builder.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family)<a name="line.1660"></a>
+<span class="sourceLineNo">1661</span> .setNewVersionBehavior(true).build());<a name="line.1661"></a>
+<span class="sourceLineNo">1662</span> }<a name="line.1662"></a>
+<span class="sourceLineNo">1663</span> }<a name="line.1663"></a>
+<span class="sourceLineNo">1664</span> if (splitRows != null) {<a name="line.1664"></a>
+<span class="sourceLineNo">1665</span> getAdmin().createTable(builder.build(), splitRows);<a name="line.1665"></a>
+<span class="sourceLineNo">1666</span> } else {<a name="line.1666"></a>
+<span class="sourceLineNo">1667</span> getAdmin().createTable(builder.build());<a name="line.1667"></a>
+<span class="sourceLineNo">1668</span> }<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span> // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span> // we should wait until they are assigned<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span> waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1671"></a>
+<span class="sourceLineNo">1672</span> return getConnection().getTable(htd.getTableName());<a name="line.1672"></a>
+<span class="sourceLineNo">1673</span> }<a name="line.1673"></a>
+<span class="sourceLineNo">1674</span><a name="line.1674"></a>
+<span class="sourceLineNo">1675</span> /**<a name="line.1675"></a>
+<span class="sourceLineNo">1676</span> * Create a table.<a name="line.1676"></a>
+<span class="sourceLineNo">1677</span> * @param tableName the table name<a name="line.1677"></a>
+<span class="sourceLineNo">1678</span> * @param families the families<a name="line.1678"></a>
+<span class="sourceLineNo">1679</span> * @param splitKeys the split keys<a name="line.1679"></a>
+<span class="sourceLineNo">1680</span> * @param replicaCount the replica count<a name="line.1680"></a>
+<span class="sourceLineNo">1681</span> * @param c Configuration to use<a name="line.1681"></a>
+<span class="sourceLineNo">1682</span> * @return A Table instance for the created table.<a name="line.1682"></a>
+<span class="sourceLineNo">1683</span> * @throws IOException<a name="line.1683"></a>
+<span class="sourceLineNo">1684</span> */<a name="line.1684"></a>
+<span class="sourceLineNo">1685</span> public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1685"></a>
+<span class="sourceLineNo">1686</span> int replicaCount, final Configuration c) throws IOException {<a name="line.1686"></a>
+<span class="sourceLineNo">1687</span> HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1687"></a>
+<span class="sourceLineNo">1688</span> htd.setRegionReplication(replicaCount);<a name="line.1688"></a>
+<span class="sourceLineNo">1689</span> return createTable(htd, families, splitKeys, c);<a name="line.1689"></a>
+<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
+<span class="sourceLineNo">1691</span><a name="line.1691"></a>
+<span class="sourceLineNo">1692</span> /**<a name="line.1692"></a>
+<span class="sourceLineNo">1693</span> * Create a table.<a name="line.1693"></a>
+<span class="sourceLineNo">1694</span> * @param tableName<a name="line.1694"></a>
+<span class="sourceLineNo">1695</span> * @param family<a name="line.1695"></a>
+<span class="sourceLineNo">1696</span> * @param numVersions<a name="line.1696"></a>
+<span class="sourceLineNo">1697</span> * @return A Table instance for the created table.<a name="line.1697"></a>
+<span class="sourceLineNo">1698</span> * @throws IOException<a name="line.1698"></a>
+<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
+<span class="sourceLineNo">1700</span> public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1700"></a>
+<span class="sourceLineNo">1701</span> throws IOException {<a name="line.1701"></a>
+<span class="sourceLineNo">1702</span> return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1702"></a>
+<span class="sourceLineNo">1703</span> }<a name="line.1703"></a>
+<span class="sourceLineNo">1704</span><a name="line.1704"></a>
+<span class="sourceLineNo">1705</span> /**<a name="line.1705"></a>
+<span class="sourceLineNo">1706</span> * Create a table.<a name="line.1706"></a>
+<span class="sourceLineNo">1707</span> * @param tableName<a name="line.1707"></a>
+<span class="sourceLineNo">1708</span> * @param families<a name="line.1708"></a>
+<span class="sourceLineNo">1709</span> * @param numVersions<a name="line.1709"></a>
+<span class="sourceLineNo">1710</span> * @return A Table instance for the created table.<a name="line.1710"></a>
+<span class="sourceLineNo">1711</span> * @throws IOException<a name="line.1711"></a>
+<span class="sourceLineNo">1712</span> */<a name="line.1712"></a>
+<span class="sourceLineNo">1713</span> public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1713"></a>
+<span class="sourceLineNo">1714</span> throws IOException {<a name="line.1714"></a>
+<span class="sourceLineNo">1715</span> return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1715"></a>
+<span class="sourceLineNo">1716</span> }<a name="line.1716"></a>
+<span class="sourceLineNo">1717</span><a name="line.1717"></a>
+<span class="sourceLineNo">1718</span> /**<a name="line.1718"></a>
+<span class="sourceLineNo">1719</span> * Create a table.<a name="line.1719"></a>
+<span class="sourceLineNo">1720</span> * @param tableName<a name="line.1720"></a>
+<span class="sourceLineNo">1721</span> * @param families<a name="line.1721"></a>
+<span class="sourceLineNo">1722</span> * @param numVersions<a name="line.1722"></a>
+<span class="sourceLineNo">1723</span> * @param splitKeys<a name="line.1723"></a>
+<span class="sourceLineNo">1724</span> * @return A Table instance for the created table.<a name="line.1724"></a>
+<span class="sourceLineNo">1725</span> * @throws IOException<a name="line.1725"></a>
+<span class="sourceLineNo">1726</span> */<a name="line.1726"></a>
+<span class="sourceLineNo">1727</span> public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1727"></a>
+<span class="sourceLineNo">1728</span> byte[][] splitKeys) throws IOException {<a name="line.1728"></a>
+<span class="sourceLineNo">1729</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1729"></a>
+<span class="sourceLineNo">1730</span> for (byte[] family : families) {<a name="line.1730"></a>
+<span class="sourceLineNo">1731</span> HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1731"></a>
+<span class="sourceLineNo">1732</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1732"></a>
+<span class="sourceLineNo">1733</span> hcd.setNewVersionBehavior(true);<a name="line.1733"></a>
+<span class="sourceLineNo">1734</span> }<a name="line.1734"></a>
+<span class="sourceLineNo">1735</span> desc.addFamily(hcd);<a name="line.1735"></a>
+<span class="sourceLineNo">1736</span> }<a name="line.1736"></a>
+<span class="sourceLineNo">1737</span> if (splitKeys != null) {<a name="line.1737"></a>
+<span class="sourceLineNo">1738</span> getAdmin().createTable(desc, splitKeys);<a name="line.1738"></a>
+<span class="sourceLineNo">1739</span> } else {<a name="line.1739"></a>
+<span class="sourceLineNo">1740</span> getAdmin().createTable(desc);<a name="line.1740"></a>
+<span class="sourceLineNo">1741</span> }<a name="line.1741"></a>
+<span class="sourceLineNo">1742</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1742"></a>
+<span class="sourceLineNo">1743</span> // assigned<a name="line.1743"></a>
+<span class="sourceLineNo">1744</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1744"></a>
+<span class="sourceLineNo">1745</span> return getConnection().getTable(tableName);<a name="line.1745"></a>
+<span class="sourceLineNo">1746</span> }<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span><a name="line.1747"></a>
+<span class="sourceLineNo">1748</span> /**<a name="line.1748"></a>
+<span class="sourceLineNo">1749</span> * Create a table with multiple regions.<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span> * @param tableName<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span> * @param families<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span> * @param numVersions<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span> * @return A Table instance for the created table.<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span> * @throws IOException<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span> */<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span> public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1756"></a>
+<span class="sourceLineNo">1757</span> throws IOException {<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span> return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span> }<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span><a name="line.1760"></a>
+<span class="sourceLineNo">1761</span> /**<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span> * Create a table.<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span> * @param tableName<a name="line.1763"></a>
+<span class="sourceLineNo">1764</span> * @param families<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span> * @param numVersions<a name="line.1765"></a>
+<span class="sourceLineNo">1766</span> * @param blockSize<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span> * @return A Table instance for the created table.<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span> * @throws IOException<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span> */<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span> int numVersions, int blockSize) throws IOException {<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1772"></a>
+<span class="sourceLineNo">1773</span> for (byte[] family : families) {<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1774"></a>
+<span class="sourceLineNo">1775</span> .setMaxVersions(numVersions)<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span> .setBlocksize(blockSize);<a name="line.1776"></a>
+<span class="sourceLineNo">1777</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1777"></a>
+<span class="sourceLineNo">1778</span> hcd.setNewVersionBehavior(true);<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span> }<a name="line.1779"></a>
+<span class="sourceLineNo">1780</span> desc.addFamily(hcd);<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span> }<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span> getAdmin().createTable(desc);<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1783"></a>
+<span class="sourceLineNo">1784</span> // assigned<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span> return getConnection().getTable(tableName);<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span> }<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span><a name="line.1788"></a>
+<span class="sourceLineNo">1789</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1789"></a>
+<span class="sourceLineNo">1790</span> int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span> for (byte[] family : families) {<a name="line.1792"></a>
+<span class="sourceLineNo">1793</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1793"></a>
+<span class="sourceLineNo">1794</span> .setMaxVersions(numVersions)<a name="line.1794"></a>
+<span class="sourceLineNo">1795</span> .setBlocksize(blockSize);<a name="line.1795"></a>
+<span class="sourceLineNo">1796</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span> hcd.setNewVersionBehavior(true);<a name="line.1797"></a>
+<span class="sourceLineNo">1798</span> }<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span> desc.addFamily(hcd);<a name="line.1799"></a>
+<span class="sourceLineNo">1800</span> }<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span> if(cpName != null) {<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span> desc.addCoprocessor(cpName);<a name="line.1802"></a>
+<span class="sourceLineNo">1803</span> }<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span> getAdmin().createTable(desc);<a name="line.1804"></a>
+<span class="sourceLineNo">1805</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1805"></a>
+<span class="sourceLineNo">1806</span> // assigned<a name="line.1806"></a>
+<span class="sourceLineNo">1807</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1807"></a>
+<span class="sourceLineNo">1808</span> return getConnection().getTable(tableName);<a name="line.1808"></a>
+<span class="sourceLineNo">1809</span> }<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span><a name="line.1810"></a>
+<span class="sourceLineNo">1811</span> /**<a name="line.1811"></a>
+<span class="sourceLineNo">1812</span> * Create a table.<a name="line.1812"></a>
+<span class="sourceLineNo">1813</span> * @param tableName<a name="line.1813"></a>
+<span class="sourceLineNo">1814</span> * @param families<a name="line.1814"></a>
+<span class="sourceLineNo">1815</span> * @param numVersions<a name="line.1815"></a>
+<span class="sourceLineNo">1816</span> * @return A Table instance for the created table.<a name="line.1816"></a>
+<span class="sourceLineNo">1817</span> * @throws IOException<a name="line.1817"></a>
+<span class="sourceLineNo">1818</span> */<a name="line.1818"></a>
+<span class="sourceLineNo">1819</span> public Table createTable(TableName tableName, byte[][] families,<a name="line.1819"></a>
+<span class="sourceLineNo">1820</span> int[] numVersions)<a name="line.1820"></a>
+<span class="sourceLineNo">1821</span> throws IOException {<a name="line.1821"></a>
+<span class="sourceLineNo">1822</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1822"></a>
+<span class="sourceLineNo">1823</span> int i = 0;<a name="line.1823"></a>
+<span class="sourceLineNo">1824</span> for (byte[] family : families) {<a name="line.1824"></a>
+<span class="sourceLineNo">1825</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1825"></a>
+<span class="sourceLineNo">1826</span> .setMaxVersions(numVersions[i]);<a name="line.1826"></a>
+<span class="sourceLineNo">1827</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1827"></a>
+<span class="sourceLineNo">1828</span> hcd.setNewVersionBehavior(true);<a name="line.1828"></a>
+<span class="sourceLineNo">1829</span> }<a name="line.1829"></a>
+<span class="sourceLineNo">1830</span> desc.addFamily(hcd);<a name="line.1830"></a>
+<span class="sourceLineNo">1831</span> i++;<a name="line.1831"></a>
+<span class="sourceLineNo">1832</span> }<a name="line.1832"></a>
+<span class="sourceLineNo">1833</span> getAdmin().createTable(desc);<a name="line.1833"></a>
+<span class="sourceLineNo">1834</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1834"></a>
+<span class="sourceLineNo">1835</span> // assigned<a name="line.1835"></a>
+<span class="sourceLineNo">1836</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1836"></a>
+<span class="sourceLineNo">1837</span> return getConnection().getTable(tableName);<a name="line.1837"></a>
+<span class="sourceLineNo">1838</span> }<a name="line.1838"></a>
+<span class="sourceLineNo">1839</span><a name="line.1839"></a>
+<span class="sourceLineNo">1840</span> /**<a name="line.1840"></a>
+<span class="sourceLineNo">1841</span> * Create a table.<a name="line.1841"></a>
+<span class="sourceLineNo">1842</span> * @param tableName<a name="line.1842"></a>
+<span class="sourceLineNo">1843</span> * @param family<a name="line.1843"></a>
+<span class="sourceLineNo">1844</span> * @param splitRows<a name="line.1844"></a>
+<span class="sourceLineNo">1845</span> * @return A Table instance for the created table.<a name="line.1845"></a>
+<span class="sourceLineNo">1846</span> * @throws IOException<a name="line.1846"></a>
+<span class="sourceLineNo">1847</span> */<a name="line.1847"></a>
+<span class="sourceLineNo">1848</span> public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1848"></a>
+<span class="sourceLineNo">1849</span> throws IOException {<a name="line.1849"></a>
+<span class="sourceLineNo">1850</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1850"></a>
+<span class="sourceLineNo">1851</span> HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1851"></a>
+<span class="sourceLineNo">1852</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1852"></a>
+<span class="sourceLineNo">1853</span> hcd.setNewVersionBehavior(true);<a name="line.1853"></a>
+<span class="sourceLineNo">1854</span> }<a name="line.1854"></a>
+<span class="sourceLineNo">1855</span> desc.addFamily(hcd);<a name="line.1855"></a>
+<span class="sourceLineNo">1856</span> getAdmin().createTable(desc, splitRows);<a name="line.1856"></a>
+<span class="sourceLineNo">1857</span> // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1857"></a>
+<span class="sourceLineNo">1858</span> // assigned<a name="line.1858"></a>
+<span class="sourceLineNo">1859</span> waitUntilAllRegionsAssigned(tableName);<a name="line.1859"></a>
+<span class="sourceLineNo">1860</span> return getConnection().getTable(tableName);<a name="line.1860"></a>
+<span class="sourceLineNo">1861</span> }<a name="line.1861"></a>
+<span class="sourceLineNo">1862</span><a name="line.1862"></a>
+<span class="sourceLineNo">1863</span> /**<a name="line.1863"></a>
+<span class="sourceLineNo">1864</span> * Create a table with multiple regions.<a name="line.1864"></a>
+<span class="sourceLineNo">1865</span> * @param tableName<a name="line.1865"></a>
+<span class="sourceLineNo">1866</span> * @param family<a name="line.1866"></a>
+<span class="sourceLineNo">1867</span> * @return A Table instance for the created table.<a name="line.1867"></a>
+<span class="sourceLineNo">1868</span> * @throws IOException<a name="line.1868"></a>
+<span class="sourceLineNo">1869</span> */<a name="line.1869"></a>
+<span class="sourceLineNo">1870</span> public Table createMultiRegionTable(TableName tableName, byte[] family) throws IOException {<a name="line.1870"></a>
+<span class="sourceLineNo">1871</span> return createTable(tableName, family, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1871"></a>
+<span class="sourceLineNo">1872</span> }<a name="line.1872"></a>
+<span class="sourceLineNo">1873</span><a name="line.1873"></a>
+<span class="sourceLineNo">1874</span> /**<a name="line.1874"></a>
+<span class="sourceLineNo">1875</span> * Modify a table, synchronous.<a name="line.1875"></a>
+<span class="sourceLineNo">1876</span> * @deprecated since 3.0.0 and will be removed in 4.0.0. Just use<a name="line.1876"></a>
+<span class="sourceLineNo">1877</span> * {@link Admin#modifyTable(TableDescriptor)} directly as it is synchronous now.<a name="line.1877"></a>
+<span class="sourceLineNo">1878</span> * @see Admin#modifyTable(TableDescriptor)<a name="line.1878"></a>
+<span class="sourceLineNo">1879</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-22002">HBASE-22002</a><a name="line.1879"></a>
<span class="sourceLineNo">1880</span> */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> public static void setReplicas(Admin admin, TableName table, int replicaCount)<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> throws IOException, InterruptedException {<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> admin.disableTable(table);<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> HTableDescriptor desc = new HTableDescriptor(admin.getDescriptor(table));<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> desc.setRegionReplication(replicaCount);<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> admin.modifyTable(desc);<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> admin.enableTable(table);<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> /**<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> * Drop an existing table<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> * @param tableName existing table<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> */<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> public void deleteTable(TableName tableName) throws IOException {<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> try {<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> getAdmin().disableTable(tableName);<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> } catch (TableNotEnabledException e) {<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> LOG.debug("Table: " + tableName + " already disabled, so just deleting it.");<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> }<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> getAdmin().deleteTable(tableName);<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> }<a name="line.1901"></a>
-<span class="sourceLineNo">1902</span><a name="line.1902"></a>
-<span class="sourceLineNo">1903</span> /**<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span> * Drop an existing table<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span> * @param tableName existing table<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span> */<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span> public void deleteTableIfAny(TableName tableName) throws IOException {<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span> try {<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span> deleteTable(tableName);<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span> } catch (TableNotFoundException e) {<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span> // ignore<a name="line.1911"></a>
-<span class="sourceLineNo">1912</span> }<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span> }<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span><a name="line.1914"></a>
-<span class="sourceLineNo">1915</span> // ==========================================================================<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span> // Canned table and table descriptor creation<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span> // TODO replace HBaseTestCase<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span><a name="line.1918"></a>
-<span class="sourceLineNo">1919</span> public final static byte [] fam1 = Bytes.toBytes("colfamily11");<a name="line.1919"></a>
-<span class="sourceLineNo">1920</span> public final static byte [] fam2 = Bytes.toBytes("colfamily21");<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span> public final static byte [] fam3 = Bytes.toBytes("colfamily31");<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span> public static final byte[][] COLUMNS = {fam1, fam2, fam3};<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span> private static final int MAXVERSIONS = 3;<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span> public static final char FIRST_CHAR = 'a';<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span> public static final char LAST_CHAR = 'z';<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span> public static final byte [] START_KEY_BYTES = {FIRST_CHAR, FIRST_CHAR, FIRST_CHAR};<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span> public static final String START_KEY = new String(START_KEY_BYTES, HConstants.UTF8_CHARSET);<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span><a name="line.1929"></a>
-<span class="sourceLineNo">1930</span> /**<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span> * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.1931"></a>
-<span class="sourceLineNo">1932</span> * {@link #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)} instead.<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span> * @see #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-13893">HBASE-13893</a><a name="line.1934"></a>
-<span class="sourceLineNo">1935</span> */<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span> @Deprecated<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span> public HTableDescriptor createTableDescriptor(final String name,<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span> final int minVersions, final int versions, final int ttl, KeepDeletedCells keepDeleted) {<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span> return this.createTableDescriptor(TableName.valueOf(name), minVersions, versions, ttl,<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span> keepDeleted);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span> }<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span><a name="line.1942"></a>
-<span class="sourceLineNo">1943</span> /**<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span> * Create a table of name <code>name</code>.<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span> * @param name Name to give table.<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span> * @return Column descriptor.<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span> * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span> * {@link #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)} instead.<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span> * @see #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-13893">HBASE-13893</a><a name="line.1950"></a>
-<span class="sourceLineNo">1951</span> */<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span> @Deprecated<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span> public HTableDescriptor createTableDescriptor(final String name) {<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span> return createTableDescriptor(TableName.valueOf(name), HColumnDescriptor.DEFAULT_MIN_VERSIONS,<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span> MAXVERSIONS, HConstants.FOREVER, HColumnDescriptor.DEFAULT_KEEP_DELETED);<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span> }<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span><a name="line.1957"></a>
-<span class="sourceLineNo">1958</span> public HTableDescriptor createTableDescriptor(final TableName name,<a name="line.1958"></a>
-<span class="sourceLineNo">1959</span> final int minVersions, final int versions, final int ttl, KeepDeletedCells keepDeleted) {<a name="line.1959"></a>
-<span class="sourceLineNo">1960</span> HTableDescriptor htd = new HTableDescriptor(name);<a name="line.1960"></a>
-<span class="sourceLineNo">1961</span> for (byte[] cfName : new byte[][]{ fam1, fam2, fam3 }) {<a name="line.1961"></a>
-<span class="sourceLineNo">1962</span> HColumnDescriptor hcd = new HColumnDescriptor(cfName)<a name="line.1962"></a>
-<span class="sourceLineNo">1963</span> .setMinVersions(minVersions)<a name="line.1963"></a>
-<span class="sourceLineNo">1964</span> .setMaxVersions(versions)<a name="line.1964"></a>
-<span class="sourceLineNo">1965</span> .setKeepDeletedCells(keepDeleted)<a name="line.1965"></a>
-<span class="sourceLineNo">1966</span> .setBlockCacheEnabled(false)<a name="line.1966"></a>
-<span class="sourceLineNo">1967</span> .setTimeToLive(ttl);<a name="line.1967"></a>
-<span class="sourceLineNo">1968</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1968"></a>
-<span class="sourceLineNo">1969</span> hcd.setNewVersionBehavior(true);<a name="line.1969"></a>
-<span class="sourceLineNo">1970</span> }<a name="line.1970"></a>
-<span class="sourceLineNo">1971</span> htd.addFamily(hcd);<a name="line.1971"></a>
-<span class="sourceLineNo">1972</span> }<a name="line.1972"></a>
-<span class="sourceLineNo">1973</span> return htd;<a name="line.1973"></a>
-<span class="sourceLineNo">1974</span> }<a name="line.1974"></a>
-<span class="sourceLineNo">1975</span><a name="line.1975"></a>
-<span class="sourceLineNo">1976</span> /**<a name="line.1976"></a>
-<span class="sourceLineNo">1977</span> * Create a table of name <code>name</code>.<a name="line.1977"></a>
-<span class="sourceLineNo">1978</span> * @param name Name to give table.<a name="line.1978"></a>
-<span class="sourceLineNo">1979</span> * @return Column descriptor.<a name="line.1979"></a>
-<span class="sourceLineNo">1980</span> */<a name="line.1980"></a>
-<span class="sourceLineNo">1981</span> public HTableDescriptor createTableDescriptor(final TableName name) {<a name="line.1981"></a>
-<span class="sourceLineNo">1982</span> return createTableDescriptor(name, HColumnDescriptor.DEFAULT_MIN_VERSIONS,<a name="line.1982"></a>
-<span class="sourceLineNo">1983</span> MAXVERSIONS, HConstants.FOREVER, HColumnDescriptor.DEFAULT_KEEP_DELETED);<a name="line.1983"></a>
-<span class="sourceLineNo">1984</span> }<a name="line.1984"></a>
-<span class="sourceLineNo">1985</span><a name="line.1985"></a>
-<span class="sourceLineNo">1986</span> public HTableDescriptor createTableDescriptor(final TableName tableName,<a name="line.1986"></a>
-<span class="sourceLineNo">1987</span> byte[] family) {<a name="line.1987"></a>
-<span class="sourceLineNo">1988</span> return createTableDescriptor(tableName, new byte[][] {family}, 1);<a name="line.1988"></a>
-<span class="sourceLineNo">1989</span> }<a name="line.1989"></a>
-<span class="sourceLineNo">1990</span><a name="line.1990"></a>
-<span class="sourceLineNo">1991</span> public HTableDescriptor createTableDescriptor(final TableName tableName,<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span> byte[][] families, int maxVersions) {<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span> for (byte[] family : families) {<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1995"></a>
-<span class="sourceLineNo">1996</span> .setMaxVersions(maxVersions);<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1997"></a>
-<span class="sourceLineNo">1998</span> hcd.setNewVersionBehavior(true);<a name="line.1998"></a>
-<span class="sourceLineNo">1999</span> }<a name="line.1999"></a>
-<span class="sourceLineNo">2000</span> desc.addFamily(hcd);<a name="line.2000"></a>
-<span class="sourceLineNo">2001</span> }<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span> return desc;<a name="line.2002"></a>
-<span class="sourceLineNo">2003</span> }<a name="line.2003"></a>
-<span class="sourceLineNo">2004</span><a name="line.2004"></a>
-<span class="sourceLineNo">2005</span> /**<a name="line.2005"></a>
-<span class="sourceLineNo">2006</span> * Create an HRegion that writes to the local tmp dirs<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span> * @param desc a table descriptor indicating which table the region belongs to<a name="line.2007"></a>
-<span class="sourceLineNo">2008</span> * @param startKey the start boundary of the region<a name="line.2008"></a>
-<span class="sourceLineNo">2009</span> * @param endKey the end boundary of the region<a name="line.2009"></a>
-<span class="sourceLineNo">2010</span> * @return a region that writes to local dir for testing<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span> * @throws IOException<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span> */<a name="line.2012"></a>
-<span class="sourceLineNo">2013</span> public HRegion createLocalHRegion(TableDescriptor desc, byte [] startKey,<a name="line.2013"></a>
-<span class="sourceLineNo">2014</span> byte [] endKey)<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span> throws IOException {<a name="line.2015"></a>
-<span class="sourceLineNo">2016</span> HRegionInfo hri = new HRegionInfo(desc.getTableName(), startKey, endKey);<a name="line.2016"></a>
-<span class="sourceLineNo">2017</span> return createLocalHRegion(hri, desc);<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span> }<a name="line.2018"></a>
-<span class="sourceLineNo">2019</span><a name="line.2019"></a>
-<span class="sourceLineNo">2020</span> /**<a name="line.2020"></a>
-<span class="sourceLineNo">2021</span> * Create an HRegion that writes to the local tmp dirs. Creates the WAL for you. Be sure to call<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when you're finished with it.<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span> */<a name="line.2023"></a>
-<span class="sourceLineNo">2024</span> public HRegion createLocalHRegion(RegionInfo info, TableDescriptor desc) throws IOException {<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span> return createRegionAndWAL(info, getDataTestDir(), getConfiguration(), desc);<a name="line.2025"></a>
-<span class="sourceLineNo">2026</span> }<a name="line.2026"></a>
-<span class="sourceLineNo">2027</span><a name="line.2027"></a>
-<span class="sourceLineNo">2028</span> /**<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span> * Create an HRegion that writes to the local tmp dirs with specified wal<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span> * @param info regioninfo<a name="line.2030"></a>
-<span class="sourceLineNo">2031</span> * @param desc table descriptor<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span> * @param wal wal for this region.<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span> * @return created hregion<a name="line.2033"></a>
-<span class="sourceLineNo">2034</span> * @throws IOException<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span> */<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span> public HRegion createLocalHRegion(RegionInfo info, TableDescriptor desc, WAL wal)<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span> throws IOException {<a name="line.2037"></a>
-<span class="sourceLineNo">2038</span> return HRegion.createHRegion(info, getDataTestDir(), getConfiguration(), desc, wal);<a name="line.2038"></a>
-<span class="sourceLineNo">2039</span> }<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span><a name="line.2040"></a>
-<span class="sourceLineNo">2041</span> /**<a name="line.2041"></a>
-<span class="sourceLineNo">2042</span> * @param tableName the name of the table<a name="line.2042"></a>
-<span class="sourceLineNo">2043</span> * @param startKey the start key of the region<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span> * @param stopKey the stop key of the region<a name="line.2044"></a>
-<span class="sourceLineNo">2045</span> * @param callingMethod the name of the calling method probably a test method<a name="line.2045"></a>
-<span class="sourceLineNo">2046</span> * @param conf the configuration to use<a name="line.2046"></a>
-<span class="sourceLineNo">2047</span> * @param isReadOnly {@code true} if the table is read only, {@code false} otherwise<a name="line.2047"></a>
-<span class="sourceLineNo">2048</span> * @param families the column families to use<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span> * @throws IOException if an IO problem is encountered<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span> * @return A region on which you must call {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)}<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span> * when done.<a name="line.2051"></a>
-<span class="sourceLineNo">2052</span> * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span> * {@link #createLocalHRegion(TableName, byte[], byte[], boolean, Durability, WAL, byte[]...)}<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span> * instead.<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span> * @see #createLocalHRegion(TableName, byte[], byte[], boolean, Durability, WAL, byte[]...)<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-13893">HBASE-13893</a><a name="line.2056"></a>
-<span class="sourceLineNo">2057</span> */<a name="line.2057"></a>
-<span class="sourceLineNo">2058</span> @Deprecated<a name="line.2058"></a>
-<span class="sourceLineNo">2059</span> public HRegion createLocalHRegion(byte[] tableName, byte[] startKey, byte[] stopKey,<a name="line.2059"></a>
-<span class="sourceLineNo">2060</span> String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.2060"></a>
-<span class="sourceLineNo">2061</span> WAL wal, byte[]... families) throws IOException {<a name="line.2061"></a>
-<span class="sourceLineNo">2062</span> return this<a name="line.2062"></a>
-<span class="sourceLineNo">2063</span> .createLocalHRegion(TableName.valueOf(tableName), startKey, stopKey, isReadOnly, durability,<a name="line.2063"></a>
-<span class="sourceLineNo">2064</span> wal, families);<a name="line.2064"></a>
-<span class="sourceLineNo">2065</span> }<a name="line.2065"></a>
-<span class="sourceLineNo">2066</span><a name="line.2066"></a>
-<span class="sourceLineNo">2067</span> /**<a name="line.2067"></a>
-<span class="sourceLineNo">2068</span> * @param tableName<a name="line.2068"></a>
-<span class="sourceLineNo">2069</span> * @param startKey<a name="line.2069"></a>
-<span class="sourceLineNo">2070</span> * @param stopKey<a name="line.2070"></a>
-<span class="sourceLineNo">2071</span> * @param isReadOnly<a name="line.2071"></a>
-<span class="sourceLineNo">2072</span> * @param families<a name="line.2072"></a>
-<span class="sourceLineNo">2073</span> * @return A region on which you must call<a name="line.2073"></a>
-<span class="sourceLineNo">2074</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.2074"></a>
-<span class="sourceLineNo">2075</span> * @throws IOException<a name="line.2075"></a>
-<span class="sourceLineNo">2076</span> */<a name="line.2076"></a>
-<span class="sourceLineNo">2077</span> public HRegion createLocalHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.2077"></a>
-<span class="sourceLineNo">2078</span> boolean isReadOnly, Durability durability, WAL wal, byte[]... families) throws IOException {<a name="line.2078"></a>
-<span class="sourceLineNo">2079</span> return createLocalHRegionWithInMemoryFlags(tableName,startKey, stopKey, isReadOnly,<a name="line.2079"></a>
-<span class="sourceLineNo">2080</span> durability, wal, null, families);<a name="line.2080"></a>
-<span class="sourceLineNo">2081</span> }<a name="line.2081"></a>
-<span class="sourceLineNo">2082</span><a name="line.2082"></a>
-<span class="sourceLineNo">2083</span> public HRegion createLocalHRegionWithInMemoryFlags(TableName tableName, byte[] startKey,<a name="line.2083"></a>
-<span class="sourceLineNo">2084</span> byte[] stopKey,<a name="line.2084"></a>
-<span class="sourceLineNo">2085</span> boolean isReadOnly, Durability durability, WAL wal, boolean[] compactedMemStore,<a name="line.2085"></a>
-<span class="sourceLineNo">2086</span> byte[]... families)<a name="line.2086"></a>
-<span class="sourceLineNo">2087</span> throws IOException {<a name="line.2087"></a>
-<span class="sourceLineNo">2088</span> HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.2088"></a>
-<span class="sourceLineNo">2089</span> htd.setReadOnly(isReadOnly);<a name="line.2089"></a>
-<span class="sourceLineNo">2090</span> int i=0;<a name="line.2090"></a>
-<span class="sourceLineNo">2091</span> for (byte[] family : families) {<a name="line.2091"></a>
-<span class="sourceLineNo">2092</span> HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.2092"></a>
-<span class="sourceLineNo">2093</span> if(compactedMemStore != null && i < compactedMemStore.length) {<a name="line.2093"></a>
-<span class="sourceLineNo">2094</span> hcd.setInMemoryCompaction(MemoryCompactionPolicy.BASIC);<a name="line.2094"></a>
-<span class="sourceLineNo">2095</span> } else {<a name="line.2095"></a>
-<span class="sourceLineNo">2096</span> hcd.setInMemoryCompaction(MemoryCompactionPolicy.NONE);<a name="line.2096"></a>
-<span class="sourceLineNo">2097</span><a name="line.2097"></a>
-<span class="sourceLineNo">2098</span> }<a name="line.2098"></a>
-<span class="sourceLineNo">2099</span> i++;<a name="line.2099"></a>
-<span class="sourceLineNo">2100</span> // Set default to be three versions.<a name="line.2100"></a>
-<span class="sourceLineNo">2101</span> hcd.setMaxVersions(Integer.MAX_VALUE);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span> htd.addFamily(hcd);<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span> }<a name="line.2103"></a>
-<span class="sourceLineNo">2104</span> htd.setDurability(durability);<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span> HRegionInfo info = new HRegionInfo(htd.getTableName(), startKey, stopKey, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span> return createLocalHRegion(info, htd, wal);<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span> }<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span><a name="line.2108"></a>
-<span class="sourceLineNo">2109</span> //<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span> // ==========================================================================<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span><a name="line.2111"></a>
-<span class="sourceLineNo">2112</span> /**<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span> * Provide an existing table name to truncate.<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span> * Scans the table and issues a delete for each row read.<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span> * @param tableName existing table<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span> * @return HTable to that new table<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span> * @throws IOException<a name="line.2117"></a>
-<span class="sourceLineNo">2118</span> */<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span> public Table deleteTableData(TableName tableName) throws IOException {<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span> Table table = getConnection().getTable(tableName);<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span> Scan scan = new Scan();<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span> ResultScanner resScan = table.getScanner(scan);<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span> for(Result res : resScan) {<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span> Delete del = new Delete(res.getRow());<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span> table.delete(del);<a name="line.2125"></a>
-<span class="sourceLineNo">2126</span> }<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span> resScan = table.getScanner(scan);<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span> resScan.close();<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span> return table;<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span> }<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span><a name="line.2131"></a>
-<span class="sourceLineNo">2132</span> /**<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span> * Truncate a table using the admin command.<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span> * Effectively disables, deletes, and recreates the table.<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span> * @param tableName table which must exist.<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span> * @param preserveRegions keep the existing split points<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span> * @return HTable for the new table<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span> */<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span> public Table truncateTable(final TableName tableName, final boolean preserveRegions) throws<a name="line.2139"></a>
-<span class="sourceLineNo">2140</span> IOException {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span> Admin admin = getAdmin();<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span> if (!admin.isTableDisabled(tableName)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span> admin.disableTable(tableName);<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span> }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span> admin.truncateTable(tableName, preserveRegions);<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span> return getConnection().getTable(tableName);<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span> }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span> /**<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span> * Truncate a table using the admin command.<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span> * Effectively disables, deletes, and recreates the table.<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span> * For previous behavior of issuing row deletes, see<a name="line.2152"></a>
-<span class="sourceLineNo">2153</span> * deleteTableData.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span> * Expressly does not preserve regions of existing table.<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span> * @param tableName table which must exist.<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span> * @return HTable for the new table<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span> */<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span> public Table truncateTable(final TableName tableName) throws IOException {<a name="line.2158"></a>
-<span class="sourceLineNo">2159</span> return truncateTable(tableName, false);<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span> }<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span><a name="line.2161"></a>
-<span class="sourceLineNo">2162</span> /**<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span> * Load table with rows from 'aaa' to 'zzz'.<a name="line.2163"></a>
-<span class="sourceLineNo">2164</span> * @param t Table<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span> * @param f Family<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span> * @return Count of rows loaded.<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span> * @throws IOException<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span> */<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span> public int loadTable(final Table t, final byte[] f) throws IOException {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span> return loadTable(t, new byte[][] {f});<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span> }<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span><a name="line.2172"></a>
-<span class="sourceLineNo">2173</span> /**<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span> * Load table with rows from 'aaa' to 'zzz'.<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span> * @param t Table<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span> * @param f Family<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span> * @return Count of rows loaded.<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span> * @throws IOException<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span> */<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span> public int loadTable(final Table t, final byte[] f, boolean writeToWAL) throws IOException {<a name="line.2180"></a>
-<span class="sourceLineNo">2181</span> return loadTable(t, new byte[][] {f}, null, writeToWAL);<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span> }<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span><a name="line.2183"></a>
-<span class="sourceLineNo">2184</span> /**<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span> * Load table of multiple column families with rows from 'aaa' to 'zzz'.<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span> * @param t Table<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span> * @param f Array of Families to load<a name="line.2187"></a>
-<span class="sourceLineNo">2188</span> * @return Count of rows loaded.<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span> * @throws IOException<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span> */<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span> public int loadTable(final Table t, final byte[][] f) throws IOException {<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span> return loadTable(t, f, null);<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span> }<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span><a name="line.2194"></a>
-<span class="sourceLineNo">2195</span> /**<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span> * Load table of multiple column families with rows from 'aaa' to 'zzz'.<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span> * @param t Table<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span> * @param f Array of Families to load<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span> * @param value the values of the cells. If null is passed, the row key is used as value<a name="line.2199"></a>
-<span class="sourceLineNo">2200</span> * @return Count of rows loaded.<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span> * @throws IOException<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span> */<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span> public int loadTable(final Table t, final byte[][] f, byte[] value) throws IOException {<a name="line.2203"></a>
-<span class="sourceLineNo">2204</span> return loadTable(t, f, value, true);<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span> }<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span><a name="line.2206"></a>
-<span class="sourceLineNo">2207</span> /**<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span> * Load table of multiple column families with rows from 'aaa' to 'zzz'.<a name="line.2208"></a>
-<span class="sourceLineNo">2209</span> * @param t Table<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span> * @param f Array of Families to load<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span> * @param value the values of the cells. If null is passed, the row key is used as value<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span> * @return Count of rows loaded.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span> * @throws IOException<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span> */<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span> public int loadTable(final Table t, final byte[][] f, byte[] value,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span> boolean writeToWAL) throws IOException {<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span> List<Put> puts = new ArrayList<>();<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span> for (byte[] row : HBaseTestingUtility.ROWS) {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span> Put put = new Put(row);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span> put.setDurability(writeToWAL ? Durability.USE_DEFAULT : Durability.SKIP_WAL);<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span> for (int i = 0; i < f.length; i++) {<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span> byte[] value1 = value != null ? value : row;<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span> put.addColumn(f[i], f[i], value1);<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span> }<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span> puts.add(put);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span> }<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span> t.put(puts);<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span> return puts.size();<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span> }<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span><a name="line.2230"></a>
-<span class="sourceLineNo">2231</span> /** A tracker for tracking and validating table rows<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span> * generated with {@link HBaseTestingUtility#loadTable(Table, byte[])}<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span> */<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span> public static class SeenRowTracker {<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span> int dim = 'z' - 'a' + 1;<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span> int[][][] seenRows = new int[dim][dim][dim]; //count of how many times the row is seen<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span> byte[] startRow;<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span> byte[] stopRow;<a name="line.2238"></a>
+<span class="sourceLineNo">1881</span> @Deprecated<a name="line.1881"></a>
+<span class="sourceLineNo">1882</span> public static void modifyTableSync(Admin admin, TableDescriptor desc)<a name="line.1882"></a>
+<span class="sourceLineNo">1883</span> throws IOException, InterruptedException {<a name="line.1883"></a>
+<span class="sourceLineNo">1884</span> admin.modifyTable(desc);<a name="line.1884"></a>
+<span class="sourceLineNo">1885</span> }<a name="line.1885"></a>
+<span class="sourceLineNo">1886</span><a name="line.1886"></a>
+<span class="sourceLineNo">1887</span> /**<a name="line.1887"></a>
+<span class="sourceLineNo">1888</span> * Set the number of Region replicas.<a name="line.1888"></a>
+<span class="sourceLineNo">1889</span> */<a name="line.1889"></a>
+<span class="sourceLineNo">1890</span> public static void setReplicas(Admin admin, TableName table, int replicaCount)<a name="line.1890"></a>
+<span class="sourceLineNo">1891</span> throws IOException, InterruptedException {<a name="line.1891"></a>
+<span class="sourceLineNo">1892</span> admin.disableTable(table);<a name="line.1892"></a>
+<span class="sourceLineNo">1893</span> HTableDescriptor desc = new HTableDescriptor(admin.getDescriptor(table));<a name="line.1893"></a>
+<span class="sourceLineNo">1894</span> desc.setRegionReplication(replicaCount);<a name="line.1894"></a>
+<span class="sourceLineNo">1895</span> admin.modifyTable(desc);<a name="line.1895"></a>
+<span class="sourceLineNo">1896</span> admin.enableTable(table);<a name="line.1896"></a>
+<span class="sourceLineNo">1897</span> }<a name="line.1897"></a>
+<span class="sourceLineNo">1898</span><a name="line.1898"></a>
+<span class="sourceLineNo">1899</span> /**<a name="line.1899"></a>
+<span class="sourceLineNo">1900</span> * Drop an existing table<a name="line.1900"></a>
+<span class="sourceLineNo">1901</span> * @param tableName existing table<a name="line.1901"></a>
+<span class="sourceLineNo">1902</span> */<a name="line.1902"></a>
+<span class="sourceLineNo">1903</span> public void deleteTable(TableName tableName) throws IOException {<a name="line.1903"></a>
+<span class="sourceLineNo">1904</span> try {<a name="line.1904"></a>
+<span class="sourceLineNo">1905</span> getAdmin().disableTable(tableName);<a name="line.1905"></a>
+<span class="sourceLineNo">1906</span> } catch (TableNotEnabledException e) {<a name="line.1906"></a>
+<span class="sourceLineNo">1907</span> LOG.debug("Table: " + tableName + " already disabled, so just deleting it.");<a name="line.1907"></a>
+<span class="sourceLineNo">1908</span> }<a name="line.1908"></a>
+<span class="sourceLineNo">1909</span> getAdmin().deleteTable(tableName);<a name="line.1909"></a>
+<span class="sourceLineNo">1910</span> }<a name="line.1910"></a>
+<span class="sourceLineNo">1911</span><a name="line.1911"></a>
+<span class="sourceLineNo">1912</span> /**<a name="line.1912"></a>
+<span class="sourceLineNo">1913</span> * Drop an existing table<a name="line.1913"></a>
+<span class="sourceLineNo">1914</span> * @param tableName existing table<a name="line.1914"></a>
+<span class="sourceLineNo">1915</span> */<a name="line.1915"></a>
+<span class="sourceLineNo">1916</span> public void deleteTableIfAny(TableName tableName) throws IOException {<a name="line.1916"></a>
+<span class="sourceLineNo">1917</span> try {<a name="line.1917"></a>
+<span class="sourceLineNo">1918</span> deleteTable(tableName);<a name="line.1918"></a>
+<span class="sourceLineNo">1919</span> } catch (TableNotFoundException e) {<a name="line.1919"></a>
+<span class="sourceLineNo">1920</span> // ignore<a name="line.1920"></a>
+<span class="sourceLineNo">1921</span> }<a name="line.1921"></a>
+<span class="sourceLineNo">1922</span> }<a name="line.1922"></a>
+<span class="sourceLineNo">1923</span><a name="line.1923"></a>
+<span class="sourceLineNo">1924</span> // ==========================================================================<a name="line.1924"></a>
+<span class="sourceLineNo">1925</span> // Canned table and table descriptor creation<a name="line.1925"></a>
+<span class="sourceLineNo">1926</span> // TODO replace HBaseTestCase<a name="line.1926"></a>
+<span class="sourceLineNo">1927</span><a name="line.1927"></a>
+<span class="sourceLineNo">1928</span> public final static byte [] fam1 = Bytes.toBytes("colfamily11");<a name="line.1928"></a>
+<span class="sourceLineNo">1929</span> public final static byte [] fam2 = Bytes.toBytes("colfamily21");<a name="line.1929"></a>
+<span class="sourceLineNo">1930</span> public final static byte [] fam3 = Bytes.toBytes("colfamily31");<a name="line.1930"></a>
+<span class="sourceLineNo">1931</span> public static final byte[][] COLUMNS = {fam1, fam2, fam3};<a name="line.1931"></a>
+<span class="sourceLineNo">1932</span> private static final int MAXVERSIONS = 3;<a name="line.1932"></a>
+<span class="sourceLineNo">1933</span><a name="line.1933"></a>
+<span class="sourceLineNo">1934</span> public static final char FIRST_CHAR = 'a';<a name="line.1934"></a>
+<span class="sourceLineNo">1935</span> public static final char LAST_CHAR = 'z';<a name="line.1935"></a>
+<span class="sourceLineNo">1936</span> public static final byte [] START_KEY_BYTES = {FIRST_CHAR, FIRST_CHAR, FIRST_CHAR};<a name="line.1936"></a>
+<span class="sourceLineNo">1937</span> public static final String START_KEY = new String(START_KEY_BYTES, HConstants.UTF8_CHARSET);<a name="line.1937"></a>
+<span class="sourceLineNo">1938</span><a name="line.1938"></a>
+<span class="sourceLineNo">1939</span> /**<a name="line.1939"></a>
+<span class="sourceLineNo">1940</span> * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.1940"></a>
+<span class="sourceLineNo">1941</span> * {@link #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)} instead.<a name="line.1941"></a>
+<span class="sourceLineNo">1942</span> * @see #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)<a name="line.1942"></a>
+<span class="sourceLineNo">1943</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-13893">HBASE-13893</a><a name="line.1943"></a>
+<span class="sourceLineNo">1944</span> */<a name="line.1944"></a>
+<span class="sourceLineNo">1945</span> @Deprecated<a name="line.1945"></a>
+<span class="sourceLineNo">1946</span> public HTableDescriptor createTableDescriptor(final String name,<a name="line.1946"></a>
+<span class="sourceLineNo">1947</span> final int minVersions, final int versions, final int ttl, KeepDeletedCells keepDeleted) {<a name="line.1947"></a>
+<span class="sourceLineNo">1948</span> return this.createTableDescriptor(TableName.valueOf(name), minVersions, versions, ttl,<a name="line.1948"></a>
+<span class="sourceLineNo">1949</span> keepDeleted);<a name="line.1949"></a>
+<span class="sourceLineNo">1950</span> }<a name="line.1950"></a>
+<span class="sourceLineNo">1951</span><a name="line.1951"></a>
+<span class="sourceLineNo">1952</span> /**<a name="line.1952"></a>
+<span class="sourceLineNo">1953</span> * Create a table of name <code>name</code>.<a name="line.1953"></a>
+<span class="sourceLineNo">1954</span> * @param name Name to give table.<a name="line.1954"></a>
+<span class="sourceLineNo">1955</span> * @return Column descriptor.<a name="line.1955"></a>
+<span class="sourceLineNo">1956</span> * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.1956"></a>
+<span class="sourceLineNo">1957</span> * {@link #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)} instead.<a name="line.1957"></a>
+<span class="sourceLineNo">1958</span> * @see #createTableDescriptor(TableName, int, int, int, KeepDeletedCells)<a name="line.1958"></a>
+<span class="sourceLineNo">1959</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-13893">HBASE-13893</a><a name="line.1959"></a>
+<span class="sourceLineNo">1960</span> */<a name="line.1960"></a>
+<span class="sourceLineNo">1961</span> @Deprecated<a name="line.1961"></a>
+<span class="sourceLineNo">1962</span> public HTableDescriptor createTableDescriptor(final String name) {<a name="line.1962"></a>
+<span class="sourceLineNo">1963</span> return createTableDescriptor(TableName.valueOf(name), HColumnDescriptor.DEFAULT_MIN_VERSIONS,<a name="line.1963"></a>
+<span class="sourceLineNo">1964</span> MAXVERSIONS, HConstants.FOREVER, HColumnDescriptor.DEFAULT_KEEP_DELETED);<a name="line.1964"></a>
+<span class="sourceLineNo">1965</span> }<a name="line.1965"></a>
+<span class="sourceLineNo">1966</span><a name="line.1966"></a>
+<span class="sourceLineNo">1967</span> public HTableDescriptor createTableDescriptor(final TableName name,<a name="line.1967"></a>
+<span class="sourceLineNo">1968</span> final int minVersions, final int versions, final int ttl, KeepDeletedCells keepDeleted) {<a name="line.1968"></a>
+<span class="sourceLineNo">1969</span> HTableDescriptor htd = new HTableDescriptor(name);<a name="line.1969"></a>
+<span class="sourceLineNo">1970</span> for (byte[] cfName : new byte[][]{ fam1, fam2, fam3 }) {<a name="line.1970"></a>
+<span class="sourceLineNo">1971</span> HColumnDescriptor hcd = new HColumnDescriptor(cfName)<a name="line.1971"></a>
+<span class="sourceLineNo">1972</span> .setMinVersions(minVersions)<a name="line.1972"></a>
+<span class="sourceLineNo">1973</span> .setMaxVersions(versions)<a name="line.1973"></a>
+<span class="sourceLineNo">1974</span> .setKeepDeletedCells(keepDeleted)<a name="line.1974"></a>
+<span class="sourceLineNo">1975</span> .setBlockCacheEnabled(false)<a name="line.1975"></a>
+<span class="sourceLineNo">1976</span> .setTimeToLive(ttl);<a name="line.1976"></a>
+<span class="sourceLineNo">1977</span> if (isNewVersionBehaviorEnabled()) {<a name="line.1977"></a>
+<span class="sourceLineNo">1978</span> hcd.setNewVersionBehavior(true);<a name="line.1978"></a>
+<span class="sourceLineNo">1979</span> }<a name="line.1979"></a>
+<span class="sourceLineNo">1980</span> htd.addFamily(hcd);<a name="line.1980"></a>
+<span class="sourceLineNo">1981</span> }<a name="line.1981"></a>
+<span class="sourceLineNo">1982</span> return htd;<a name="line.1982"></a>
+<span class="sourceLineNo">1983</span> }<a name="line.1983"></a>
+<span class="sourceLineNo">1984</span><a name="line.1984"></a>
+<span class="sourceLineNo">1985</span> /**<a name="line.1985"></a>
+<span class="sourceLineNo">1986</span> * Create a table of name <code>name</code>.<a name="line.1986"></a>
+<span class="sourceLineNo">1987</span> * @param name Name to give table.<a name="line.1987"></a>
+<span class="sourceLineNo">1988</span> * @return Column descriptor.<a name="line.1988"></a>
+<span class="sourceLineNo">1989</span> */<a name="line.1989"></a>
+<span class="sourceLineNo">1990</span> public HTableDescriptor createTableDescriptor(final TableName name) {<a name="line.1990"></a>
+<span class="sourceLineNo">1991</span> return createTableDescriptor(name, HColumnDescriptor.DEFAULT_MIN_VERSIONS,<a name="line.1991"></a>
+<span class="sourceLineNo">1992</span> MAXVERSIONS, HConstants.FOREVER, HColumnDescriptor.DEFAULT_KEEP_DELETED);<a name="line.1992"></a>
+<span class="sourceLineNo">1993</span> }<a name="line.1993"></a>
+<span class="sourceLineNo">1994</span><a name="line.1994"></a>
+<span class="sourceLineNo">1995</span> public HTableDescriptor createTableDescriptor(final TableName tableName,<a name="line.1995"></a>
+<span class="sourceLineNo">1996</span> byte[] family) {<a name="line.1996"></a>
+<span class="sourceLineNo">1997</span> return createTableDescriptor(tableName, new byte[][] {family}, 1);<a name="line.1997"></a>
+<span class="sourceLineNo">1998</span> }<a name="line.1998"></a>
+<span class="sourceLineNo">1999</span><a name="line.1999"></a>
+<span class="sourceLineNo">2000</span> public HTableDescriptor createTableDescriptor(final TableName tableName,<a name="line.2000"></a>
+<span class="sourceLineNo">2001</span> byte[][] families, int maxVersions) {<a name="line.2001"></a>
+<span class="sourceLineNo">2002</span> HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.2002"></a>
+<span class="sourceLineNo">2003</span> for (byte[] family : families) {<a name="line.2003"></a>
+<span class="sourceLineNo">2004</span> HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.2004"></a>
+<span class="sourceLineNo">2005</span> .setMaxVersions(maxVersions);<a name="line.2005"></a>
+<span class="sourceLineNo">2006</span> if (isNewVersionBehaviorEnabled()) {<a name="line.2006"></a>
+<span class="sourceLineNo">2007</span> hcd.setNewVersionBehavior(true);<a name="line.2007"></a>
+<span class="sourceLineNo">2008</span> }<a name="line.2008"></a>
+<span class="sourceLineNo">2009</span> desc.addFamily(hcd);<a name="line.2009"></a>
+<span class="sourceLineNo">2010</span> }<a name="line.2010"></a>
+<span class="sourceLineNo">2011</span> return desc;<a name="line.2011"></a>
+<span class="sourceLineNo">2012</span> }<a name="line.2012"></a>
+<span class="sourceLineNo">2013</span><a name="line.2013"></a>
+<span class="sourceLineNo">2014</span> /**<a name="line.2014"></a>
+<span class="sourceLineNo">2015</span> * Create an HRegion that writes to the local tmp dirs<a name="line.2015"></a>
+<span class="sourceLineNo">2016</span> * @param desc a table descriptor indicating which table the region belongs to<a name="line.2016"></a>
+<span class="sourceLineNo">2017</span> * @param startKey the start boundary of the region<a name="line.2017"></a>
+<span class="sourceLineNo">2018</span> * @param endKey the end boundary of the region<a name="line.2018"></a>
+<span class="sourceLineNo">2019</span> * @return a region that writes to local dir for testing<a name="line.2019"></a>
+<span class="sourceLineNo">2020</span> * @throws IOException<a name="line.2020"></a>
+<span class="sourceLineNo">2021</span> */<a name="line.2021"></a>
+<span class="sourceLineNo">2022</span> public HRegion createLocalHRegion(TableDescriptor desc, byte [] startKey,<a name="line.2022"></a>
+<span class="sourceLineNo">2023</span> byte [] endKey)<a name="line.2023"></a>
+<span class="sourceLineNo">2024</span> throws IOException {<a name="line.2024"></a>
+<span class="sourceLineNo">2025</span> HRegionInfo hri = new HRegionInfo(desc.getTableName(), startKey, endKey);<a name="line.2025"></a>
+<span class="sourceLineNo">2026</span> return createLocalHRegion(hri, desc);<a name="line.2026"></a>
+<span class="sourceLineNo">2027</span> }<a name="line.2027"></a>
+<span class="sourceLineNo">2028</span><a name="line.2028"></a>
+<span class="sourceLineNo">2029</span> /**<a name="line.2029"></a>
+<span class="sourceLineNo">2030</span> * Create an HRegion that writes to the local tmp dirs. Creates the WAL for you. Be sure to call<a name="line.2030"></a>
+<span class="sourceLineNo">2031</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when you're finished with it.<a name="line.2031"></a>
+<span class="sourceLineNo">2032</span> */<a name="line.2032"></a>
+<span class="sourceLineNo">2033</span> public HRegion createLocalHRegion(RegionInfo info, TableDescriptor desc) throws IOException {<a name="line.2033"></a>
+<span class="sourceLineNo">2034</span> return createRegionAndWAL(info, getDataTestDir(), getConfiguration(), desc);<a name="line.2034"></a>
+<span class="sourceLineNo">2035</span> }<a name="line.2035"></a>
+<span class="sourceLineNo">2036</span><a name="line.2036"></a>
+<span class="sourceLineNo">2037</span> /**<a name="line.2037"></a>
+<span class="sourceLineNo">2038</span> * Create an HRegion that writes to the local tmp dirs with specified wal<a name="line.2038"></a>
+<span class="sourceLineNo">2039</span> * @param info regioninfo<a name="line.2039"></a>
+<span class="sourceLineNo">2040</span> * @param desc table descriptor<a name="line.2040"></a>
+<span class="sourceLineNo">2041</span> * @param wal wal for this region.<a name="line.2041"></a>
+<span class="sourceLineNo">2042</span> * @return created hregion<a name="line.2042"></a>
+<span class="sourceLineNo">2043</span> * @throws IOException<a name="line.2043"></a>
+<span class="sourceLineNo">2044</span> */<a name="line.2044"></a>
+<span class="sourceLineNo">2045</span> public HRegion createLocalHRegion(RegionInfo info, TableDescriptor desc, WAL wal)<a name="line.2045"></a>
+<span class="sourceLineNo">2046</span> throws IOException {<a name="line.2046"></a>
+<span class="sourceLineNo">2047</span> return HRegion.createHRegion(info, getDataTestDir(), getConfiguration(), desc, wal);<a name="line.2047"></a>
+<span class="sourceLineNo">2048</span> }<a name="line.2048"></a>
+<span class="sourceLineNo">2049</span><a name="line.2049"></a>
+<span class="sourceLineNo">2050</span> /**<a name="line.2050"></a>
+<span class="sourceLineNo">2051</span> * @param tableName the name of the table<a name="line.2051"></a>
+<span class="sourceLineNo">2052</span> * @param startKey the start key of the region<a name="line.2052"></a>
+<span class="sourceLineNo">2053</span> * @param stopKey the stop key of the region<a name="line.2053"></a>
+<span class="sourceLineNo">2054</span> * @param callingMethod the name of the calling method probably a test method<a name="line.2054"></a>
+<span class="sourceLineNo">2055</span> * @param conf the configuration to use<a name="line.2055"></a>
+<span class="sourceLineNo">2056</span> * @param isReadOnly {@code true} if the table is read only, {@code false} otherwise<a name="line.2056"></a>
+<span class="sourceLineNo">2057</span> * @param families the column families to use<a name="line.2057"></a>
+<span class="sourceLineNo">2058</span> * @throws IOException if an IO problem is encountered<a name="line.2058"></a>
+<span class="sourceLineNo">2059</span> * @return A region on which you must call {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)}<a name="line.2059"></a>
+<span class="sourceLineNo">2060</span> * when done.<a name="line.2060"></a>
+<span class="sourceLineNo">2061</span> * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.2061"></a>
+<span class="sourceLineNo">2062</span> * {@link #createLocalHRegion(TableName, byte[], byte[], boolean, Durability, WAL, byte[]...)}<a name="line.2062"></a>
+<span class="sourceLineNo">2063</span> * instead.<a name="line.2063"></a>
+<span class="sourceLineNo">2064</span> * @see #createLocalHRegion(TableName, byte[], byte[], boolean, Durability, WAL, byte[]...)<a name="line.2064"></a>
+<span class="sourceLineNo">2065</span> * @see <a href="https://issues.apache.org/jira/browse/HBASE-13893">HBASE-13893</a><a name="line.2065"></a>
+<span class="sourceLineNo">2066</span> */<a name="line.2066"></a>
+<span class="sourceLineNo">2067</span> @Deprecated<a name="line.2067"></a>
+<span class="sourceLineNo">2068</span> public HRegion createLocalHRegion(byte[] tableName, byte[] startKey, byte[] stopKey,<a name="line.2068"></a>
+<span class="sourceLineNo">2069</span> String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.2069"></a>
+<span class="sourceLineNo">2070</span> WAL wal, byte[]... families) throws IOException {<a name="line.2070"></a>
+<span class="sourceLineNo">2071</span> return this<a name="line.2071"></a>
+<span class="sourceLineNo">2072</span> .createLocalHRegion(TableName.valueOf(tableName), startKey, stopKey, isReadOnly, durability,<a name="line.2072"></a>
+<span class="sourceLineNo">2073</span> wal, families);<a name="line.2073"></a>
+<span class="sourceLineNo">2074</span> }<a name="line.2074"></a>
+<span class="sourceLineNo">2075</span><a name="line.2075"></a>
+<span class="sourceLineNo">2076</span> /**<a name="line.2076"></a>
+<span class="sourceLineNo">2077</span> * @param tableName<a name="line.2077"></a>
+<span class="sourceLineNo">2078</span> * @param startKey<a name="line.2078"></a>
+<span class="sourceLineNo">2079</span> * @param stopKey<a name="line.2079"></a>
+<span class="sourceLineNo">2080</span> * @param isReadOnly<a name="line.2080"></a>
+<span class="sourceLineNo">2081</span> * @param families<a name="line.2081"></a>
+<span class="sourceLineNo">2082</span> * @return A region on which you must call<a name="line.2082"></a>
+<span class="sourceLineNo">2083</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.2083"></a>
+<span class="sourceLineNo">2084</span> * @throws IOException<a name="line.2084"></a>
+<span class="sourceLineNo">2085</span> */<a name="line.2085"></a>
+<span class="sourceLineNo">2086</span> public HRegion createLocalHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.2086"></a>
+<span class="sourceLineNo">2087</span> boolean isReadOnly, Durability durability, WAL wal, byte[]... families) throws IOException {<a name="line.2087"></a>
+<span class="sourceLineNo">2088</span> return createLocalHRegionWithInMemoryFlags(tableName,startKey, stopKey, isReadOnly,<a name="line.2088"></a>
+<span class="sourceLineNo">2089</span> durability, wal, null, families);<a name="line.2089"></a>
+<span class="sourceLineNo">2090</span> }<a name="line.2090"></a>
+<span class="sourceLineNo">2091</span><a name="line.2091"></a>
+<span class="sourceLineNo">2092</span> public HRegion createLocalHRegionWithInMemoryFlags(TableName tableName, byte[] startKey,<a name="line.2092"></a>
+<span class="sourceLineNo">2093</span> byte[] stopKey,<a name="line.2093"></a>
+<span class="sourceLineNo">2094</span> boolean isReadOnly, Durability durability, WAL wal, boolean[] compactedMemStore,<a name="line.2094"></a>
+<span class="sourceLineNo">2095</span> byte[]... families)<a name="line.2095"></a>
+<span class="sourceLineNo">2096</span> throws IOException {<a name="line.2096"></a>
+<span class="sourceLineNo">2097</span> HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.2097"></a>
+<span class="sourceLineNo">2098</span> htd.setReadOnly(isReadOnly);<a name="line.2098"></a>
+<span class="sourceLineNo">2099</span> int i=0;<a name="line.2099"></a>
+<span class="sourceLineNo">2100</span> for (byte[] family : families) {<a name="line.2100"></a>
+<span class="sourceLineNo">2101</span> HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.2101"></a>
+<span class="sourceLineNo">2102</span> if(compactedMemStore != null && i < compactedMemStore.length) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span> hcd.setInMemoryCompaction(MemoryCompactionPolicy.BASIC);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span> } else {<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span> hcd.setInMemoryCompaction(MemoryCompactionPolicy.NONE);<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span> }<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span> i++;<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span> // Set default to be three versions.<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span> hcd.setMaxVersions(Integer.MAX_VALUE);<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span> htd.addFamily(hcd);<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span> }<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span> htd.setDurability(durability);<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span> HRegionInfo info = new HRegionInfo(htd.getTableName(), startKey, stopKey, false);<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span> return createLocalHRegion(info, htd, wal);<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span> }<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span><a name="line.2117"></a>
+<span class="sourceLineNo">2118</span> //<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span> // ==========================================================================<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span> /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span> * Provide an existing table name to truncate.<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span> * Scans the table and issues a delete for each row read.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span> * @param tableName existing table<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span> * @return HTable to that new table<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span> * @throws IOException<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span> */<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span> public Table deleteTableData(TableName tableName) throws IOException {<a name="line.2128"></a>
+<span class="sourceLineNo">2129</span> Table table = getConnection().getTable(tableName);<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span> Scan scan = new Scan();<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span> ResultScanner resScan = table.getScanner(scan);<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span> for(Result res : resScan) {<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span> Delete del = new Delete(res.getRow());<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span> table.delete(del);<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span> }<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span> resScan = table.getScanner(scan);<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span> resScan.close();<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span> return table;<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span> }<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span><a name="line.2140"></a>
+<span class="sourceLineNo">2141</span> /**<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span> * Truncate a table using the admin command.<a name="line.2142"></a>
+<span class="sourceLineNo">2143</span> * Effectively disables, deletes, and recreates the table.<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span> * @param tableName table which must exist.<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span> * @param preserveRegions keep the existing split points<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span> * @return HTable for the new table<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span> */<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span> public Table truncateTable(final TableName tableName, final boolean preserveRegions) throws<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span> IOException {<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span> Admin admin = getAdmin();<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span> if (!admin.isTableDisabled(tableName)) {<a name="line.2151"></a>
+<span class="sourceLineNo">2152</span> admin.disableTable(tableName);<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span> }<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span> admin.truncateTable(tableName, preserveRegions);<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span> return getConnection().getTable(tableName);<a name="line.2155"></a>
+<span class="sourceLineNo">2156</span> }<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span><a name="line.2157"></a>
+<span class="sourceLineNo">2158</span> /**<a name="line.2158"></a>
+<span class="sourceLineNo">2159</span> * Truncate a table using the admin command.<a name="line.2159"></a>
+<span class="sourceLineNo">2160</span> * Effectively disables, deletes, and recreates the table.<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span> * For previous behavior of issuing row deletes, see<a name="line.2161"></a>
+<span class="sourceLineNo">2162</span> * deleteTableData.<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span> * Expressly does not preserve regions of existing table.<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span> * @param tableName table which must exist.<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span> * @return HTable for the new table<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span> */<a name="line.2166"></a>
+<span class="sourceLineNo">2167</span> public Table truncateTable(final TableName tableName) throws IOException {<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span> return truncateTable(tableName, false);<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span> }<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span><a name="line.2170"></a>
+<span class="sourceLineNo">2171</span> /**<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span> * Load table with rows from 'aaa' to 'zzz'.<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span> * @param t Table<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span> * @param f Family<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span> * @return Count of rows loaded.<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span> * @throws IOException<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span> */<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span> public int loadTable(final Table t, final byte[] f) throws IOException {<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span> return loadTable(t, new byte[][] {f});<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span> }<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span><a name="line.2181"></a>
+<span class="sourceLineNo">2182</span> /**<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span> * Load table with rows from 'aaa' to 'zzz'.<a name="line.2183"></a>
+<span class="sourceLineNo">2184</span> * @param t Table<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span> * @param f Family<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span> * @return Count of rows loaded.<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span> * @throws IOException<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span> */<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span> public int loadTable(final Table t, final byte[] f, boolean writeToWAL) throws IOException {<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span> return loadTable(t, new byte[][] {f}, null, writeToWAL);<a name="line.2190"></a>
+<span class="sourceLineNo">2191</span> }<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span><a name="line.2192"></a>
+<span class="sourceLineNo">2193</span> /**<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span> * Load table of multiple column families with rows from 'aaa' to 'zzz'.<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span> * @param t Table<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span> * @param f Array of Families to load<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span> * @return Count of rows loaded.<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span> * @throws IOException<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span> */<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span> public int loadTable(final Table t, final byte[][] f) throws IOException {<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span> return loadTable(t, f, null);<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span> }<a name="line.2202"></a>
+<span class="sourceLineNo">2203</span><a name="line.2203"></a>
+<span class="sourceLineNo">2204</span> /**<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span> * Load table of multiple column families with rows from 'aaa' to 'zzz'.<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span> * @param t Table<a name="line.2206"></a>
+<span class="sourceLineNo">2207</span> * @param f Array of Families to load<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span> * @param value the values of the cells. If null is passed, the row key is used as value<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span> * @return Count of rows loaded.<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span> * @throws IOException<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span> */<a name="line.2211"></a>
+<span class="sourceLineNo">2212</span> public int loadTable(final Table t, final byte[][] f, byte[] value) throws IOException {<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span> return loadTable(t, f, value, true);<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span> }<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span><a name="line.2215"></a>
+<span class="sourceLineNo">2216</span> /**<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span> * Load table of multiple column families with rows from 'aaa' to 'zzz'.<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span> * @param t Table<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span> * @param f Array of Families to load<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span> * @param value the values of the cells. If null is passed, the row key is used as value<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span> * @return Count of rows loaded.<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span> * @throws IOException<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span> */<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span> public int loadTable(final Table t, final byte[][] f, byte[] value,<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span> boolean writeToWAL) throws IOException {<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span> List<Put> puts = new ArrayList<>();<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span> for (byte[] row : HBaseTestingUtility.ROWS) {<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span> Put put = new Put(row);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span> put.setDurability(writeToWAL ? Durability.USE_DEFAULT : Durability.SKIP_WAL);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span> for (int i = 0; i < f.length; i++) {<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span> byte[] value1 = value != null ? value : row;<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span> put.addColumn(f[i], f[i], value1);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span> }<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span> puts.add(put);<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span> }<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span> t.put(puts);<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span> return puts.size();<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span> }<a name="line.2238"></a>
<span class="sourceLineNo">2239</span><a name="line.2239"></a>
-<span class="sourceLineNo">2240</span> public SeenRowTracker(byte[] startRow, byte[] stopRow) {<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span> this.startRow = startRow;<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span> this.stopRow = stopRow;<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span> }<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span><a name="line.2244"></a>
-<span class="sourceLineNo">2245</span> void reset() {<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span> for (byte[] row : ROWS) {<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span> seenRows[i(row[0])][i(row[1])][i(row[2])] = 0;<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span> }<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span> }<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span><a name="line.2250"></a>
-<span class="sourceLineNo">2251</span> int i(byte b) {<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span> return b - 'a';<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span> }<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span><a name="line.2254"></a>
-<span class="sourceLineNo">2255</span> public void addRow(byte[] row) {<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span> seenRows[i(row[0])][i(row[1])][i(row[2])]++;<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span> }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span><a name="line.2258"></a>
-<span class="sourceLineNo">2259</span> /** Validate that all the rows between startRow and stopRow are seen exactly once, and<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span> * all other rows none<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span> */<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span> public void validate() {<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span> for (byte b1 = 'a'; b1 <= 'z'; b1++) {<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span> for (byte b2 = 'a'; b2 <= 'z'; b2++) {<a name="line.2264"></a>
-<span class="sourceLineNo">2265</span> for (byte b3 = 'a'; b3 <= 'z'; b3++) {<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span> int count = seenRows[i(b1)][i(b2)][i(b3)];<a name="line.2266"></a>
-<span class="sourceLineNo">2267</span> int expectedCount = 0;<a name="line.2267"></a>
-<span class="sourceLineNo">2268</span> if (Bytes.compareTo(new byte[] {b1,b2,b3}, startRow) >= 0<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span> && Bytes.compareTo(new byte[] {b1,b2,b3}, stopRow) < 0) {<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span> expectedCount = 1;<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span> }<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span> if (count != expectedCount) {<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span> String row = new String(new byte[] {b1,b2,b3}, StandardCharsets.UTF_8);<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span> throw new RuntimeException("Row:" + row + " has a seen count of " + count + " " +<a name="line.2274"></a>
-<span class="sourceLineNo">2275</span> "instead of " + expectedCount);<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span> }<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span> }<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span> }<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span> }<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span> }<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span> }<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span><a name="line.2282"></a>
-<span class="sourceLineNo">2283</span> public int loadRegion(final HRegion r, final byte[] f) throws IOException {<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span> return loadRegion(r, f, false);<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span> }<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span><a name="line.2286"></a>
-<span class="sourceLineNo">2287</span> public int loadRegion(final Region r, final byte[] f) throws IOException {<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span> return loadRegion((HRegion)r, f);<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span> }<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span><a name="line.2290"></a>
-<span class="sourceLineNo">2291</span> /**<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span> * Load region with rows from 'aaa' to 'zzz'.<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span> * @param r Region<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span> * @param f Family<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span> * @param flush flush the cache if true<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span> * @return Count of rows loaded.<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span> * @throws IOException<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span> */<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span> public int loadRegion(final HRegion r, final byte[] f, final boolean flush)<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span> throws IOException {<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span> byte[] k = new byte[3];<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span> int rowCount = 0;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span> for (byte b1 = 'a'; b1 <= 'z'; b1++) {<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span> for (byte b2 = 'a'; b2 <= 'z'; b2++) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span> for (byte b3 = 'a'; b3 <= 'z'; b3++) {<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span> k[0] = b1;<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span> k[1] = b2;<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span> k[2] = b3;<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span> Put put = new Put(k);<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span> put.setDurability(Durability.SKIP_WAL);<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span> put.addColumn(f, null, k);<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span> if (r.getWAL() == null) {<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span> put.setDurability(Durability.SKIP_WAL);<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span> }<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span> int preRowCount = rowCount;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span> int pause = 10;<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span> int maxPause = 1000;<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span> while (rowCount == preRowCount) {<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span> try {<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span> r.put(put);<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span> rowCount++;<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span> } catch (RegionTooBusyException e) {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span> pause = (pause * 2 >= maxPause) ? maxPause : pause * 2;<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span> Threads.sleep(pause);<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span> }<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span> }<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span> }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span> }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span> if (flush) {<a name="line.2329"></a>
-<span class="sourceLineNo">2330</span> r.flush(true);<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span> }<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span> }<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span> return rowCount;<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span> }<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span><a name="line.2335"></a>
-<span class="sourceLineNo">2336</span> public void loadNumericRows(final Table t, final byte[] f, int startRow, int endRow)<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span> throws IOException {<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span> for (int i = startRow; i < endRow; i++) {<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span> Put put = new Put(data);<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span> put.addColumn(f, null, data);<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span> t.put(put);<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span> }<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span> }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span> public void loadRandomRows(final Table t, final byte[] f, int rowSize, int totalRows)<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span> throws IOException {<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span> Random r = new Random();<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span> byte[] row = new byte[rowSize];<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span> for (int i = 0; i < totalRows; i++) {<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span> r.nextBytes(row);<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span> Put put = new Put(row);<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span> put.addColumn(f, new byte[]{0}, new byte[]{0});<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span> t.put(put);<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span> }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span> }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span> public void verifyNumericRows(Table table, final byte[] f, int startRow, int endRow,<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span> int replicaId)<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span> throws IOException {<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span> for (int i = startRow; i < endRow; i++) {<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span> String failMsg = "Failed verification of row :" + i;<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span> Get get = new Get(data);<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span> get.setReplicaId(replicaId);<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span> get.setConsistency(Consistency.TIMELINE);<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span> Result result = table.get(get);<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span> assertTrue(failMsg, result.containsColumn(f, null));<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span> assertEquals(failMsg, 1, result.getColumnCells(f, null).size());<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span> Cell cell = result.getColumnLatestCell(f, null);<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span> assertTrue(failMsg,<a name="line.2371"></a>
-<span class="sourceLineNo">2372</span> Bytes.equals(data, 0, data.length, cell.getValueArray(), cell.getValueOffset(),<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span> cell.getValueLength()));<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span> }<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span> }<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span><a name="line.2376"></a>
-<span class="sourceLineNo">2377</span> public void verifyNumericRows(Region region, final byte[] f, int startRow, int endRow)<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span> throws IOException {<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span> verifyNumericRows((HRegion)region, f, startRow, endRow);<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span> }<a name="line.2380"></a>
-<span class="sourceLineNo">2381</span><a name="line.2381"></a>
-<span class="sourceLineNo">2382</span> public void verifyNumericRows(HRegion region, final byte[] f, int startRow, int endRow)<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span> throws IOException {<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span> verifyNumericRows(region, f, startRow, endRow, true);<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span> }<a name="line.2385"></a>
-<span class="sourceLineNo">2386</span><a name="line.2386"></a>
-<span class="sourceLineNo">2387</span> public void verifyNumericRows(Region region, final byte[] f, int startRow, int endRow,<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span> final boolean present) throws IOException {<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span> verifyNumericRows((HRegion)region, f, startRow, endRow, present);<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span> }<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span><a name="line.2391"></a>
-<span class="sourceLineNo">2392</span> public void verifyNumericRows(HRegion region, final byte[] f, int startRow, int endRow,<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span> final boolean present) throws IOException {<a name="line.2393"></a>
-<span class="sourceLineNo">2394</span> for (int i = startRow; i < endRow; i++) {<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span> String failMsg = "Failed verification of row :" + i;<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span> Result result = region.get(new Get(data));<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span> boolean hasResult = result != null && !result.isEmpty();<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span> assertEquals(failMsg + result, present, hasResult);<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span> if (!present) continue;<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span><a name="line.2402"></a>
-<span class="sourceLineNo">2403</span> assertTrue(failMsg, result.containsColumn(f, null));<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span> assertEquals(failMsg, 1, result.getColumnCells(f, null).size());<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span> Cell cell = result.getColumnLatestCell(f, null);<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span> assertTrue(failMsg,<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span> Bytes.equals(data, 0, data.length, cell.getValueArray(), cell.getValueOffset(),<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span> cell.getValueLength()));<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span> }<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span> }<a name="line.2410"></a>
+<span class="sourceLineNo">2240</span> /** A tracker for tracking and validating table rows<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span> * generated with {@link HBaseTestingUtility#loadTable(Table, byte[])}<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span> */<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span> public static class SeenRowTracker {<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span> int dim = 'z' - 'a' + 1;<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span> int[][][] seenRows = new int[dim][dim][dim]; //count of how many times the row is seen<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span> byte[] startRow;<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span> byte[] stopRow;<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span><a name="line.2248"></a>
+<span class="sourceLineNo">2249</span> public SeenRowTracker(byte[] startRow, byte[] stopRow) {<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span> this.startRow = startRow;<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span> this.stopRow = stopRow;<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span> }<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span><a name="line.2253"></a>
+<span class="sourceLineNo">2254</span> void reset() {<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span> for (byte[] row : ROWS) {<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span> seenRows[i(row[0])][i(row[1])][i(row[2])] = 0;<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span> }<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span> }<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span><a name="line.2259"></a>
+<span class="sourceLineNo">2260</span> int i(byte b) {<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span> return b - 'a';<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span> }<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span><a name="line.2263"></a>
+<span class="sourceLineNo">2264</span> public void addRow(byte[] row) {<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span> seenRows[i(row[0])][i(row[1])][i(row[2])]++;<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span> }<a name="line.2266"></a>
+<span class="sourceLineNo">2267</span><a name="line.2267"></a>
+<span class="sourceLineNo">2268</span> /** Validate that all the rows between startRow and stopRow are seen exactly once, and<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span> * all other rows none<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span> */<a name="line.2270"></a>
+<span class="sourceLineNo">2271</span> public void validate() {<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span> for (byte b1 = 'a'; b1 <= 'z'; b1++) {<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span> for (byte b2 = 'a'; b2 <= 'z'; b2++) {<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span> for (byte b3 = 'a'; b3 <= 'z'; b3++) {<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span> int count = seenRows[i(b1)][i(b2)][i(b3)];<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span> int expectedCount = 0;<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span> if (Bytes.compareTo(new byte[] {b1,b2,b3}, startRow) >= 0<a name="line.2277"></a>
+<span class="sourceLineNo">2278</span> && Bytes.compareTo(new byte[] {b1,b2,b3}, stopRow) < 0) {<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span> expectedCount = 1;<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span> }<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span> if (count != expectedCount) {<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span> String row = new String(new byte[] {b1,b2,b3}, StandardCharsets.UTF_8);<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span> throw new RuntimeException("Row:" + row + " has a seen count of " + count + " " +<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span> "instead of " + expectedCount);<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span> }<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span> }<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span> }<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span> }<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span> }<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span> }<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span><a name="line.2291"></a>
+<span class="sourceLineNo">2292</span> public int loadRegion(final HRegion r, final byte[] f) throws IOException {<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span> return loadRegion(r, f, false);<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span> }<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span><a name="line.2295"></a>
+<span class="sourceLineNo">2296</span> public int loadRegion(final Region r, final byte[] f) throws IOException {<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span> return loadRegion((HRegion)r, f);<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span> }<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span><a name="line.2299"></a>
+<span class="sourceLineNo">2300</span> /**<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span> * Load region with rows from 'aaa' to 'zzz'.<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span> * @param r Region<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span> * @param f Family<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span> * @param flush flush the cache if true<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span> * @return Count of rows loaded.<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span> * @throws IOException<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span> */<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span> public int loadRegion(final HRegion r, final byte[] f, final boolean flush)<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span> throws IOException {<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span> byte[] k = new byte[3];<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span> int rowCount = 0;<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span> for (byte b1 = 'a'; b1 <= 'z'; b1++) {<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span> for (byte b2 = 'a'; b2 <= 'z'; b2++) {<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span> for (byte b3 = 'a'; b3 <= 'z'; b3++) {<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span> k[0] = b1;<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span> k[1] = b2;<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span> k[2] = b3;<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span> Put put = new Put(k);<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span> put.setDurability(Durability.SKIP_WAL);<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span> put.addColumn(f, null, k);<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span> if (r.getWAL() == null) {<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span> put.setDurability(Durability.SKIP_WAL);<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span> }<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span> int preRowCount = rowCount;<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span> int pause = 10;<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span> int maxPause = 1000;<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span> while (rowCount == preRowCount) {<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span> try {<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span> r.put(put);<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span> rowCount++;<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span> } catch (RegionTooBusyException e) {<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span> pause = (pause * 2 >= maxPause) ? maxPause : pause * 2;<a name="line.2332"></a>
+<span class="sourceLineNo">2333</span> Threads.sleep(pause);<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span> }<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span> }<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span> }<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span> }<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span> if (flush) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span> r.flush(true);<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span> }<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span> }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span> return rowCount;<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span> }<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span><a name="line.2344"></a>
+<span class="sourceLineNo">2345</span> public void loadNumericRows(final Table t, final byte[] f, int startRow, int endRow)<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span> throws IOException {<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span> for (int i = startRow; i < endRow; i++) {<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2348"></a>
+<span class="sourceLineNo">2349</span> Put put = new Put(data);<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span> put.addColumn(f, null, data);<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span> t.put(put);<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span> }<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span> }<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span><a name="line.2354"></a>
+<span class="sourceLineNo">2355</span> public void loadRandomRows(final Table t, final byte[] f, int rowSize, int totalRows)<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span> throws IOException {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span> Random r = new Random();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span> byte[] row = new byte[rowSize];<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span> for (int i = 0; i < totalRows; i++) {<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span> r.nextBytes(row);<a name="line.2360"></a>
+<span class="sourceLineNo">2361</span> Put put = new Put(row);<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span> put.addColumn(f, new byte[]{0}, new byte[]{0});<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span> t.put(put);<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span> }<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span> }<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span><a name="line.2366"></a>
+<span class="sourceLineNo">2367</span> public void verifyNumericRows(Table table, final byte[] f, int startRow, int endRow,<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span> int replicaId)<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span> throws IOException {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span> for (int i = startRow; i < endRow; i++) {<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span> String failMsg = "Failed verification of row :" + i;<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span> Get get = new Get(data);<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span> get.setReplicaId(replicaId);<a name="line.2374"></a>
+<span class="sourceLineNo">2375</span> get.setConsistency(Consistency.TIMELINE);<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span> Result result = table.get(get);<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span> assertTrue(failMsg, result.containsColumn(f, null));<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span> assertEquals(failMsg, 1, result.getColumnCells(f, null).size());<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span> Cell cell = result.getColumnLatestCell(f, null);<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span> assertTrue(failMsg,<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span> Bytes.equals(data, 0, data.length, cell.getValueArray(), cell.getValueOffset(),<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span> cell.getValueLength()));<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span> }<a name="line.2383"></a>
+<span class="sourceLineNo">2384</span> }<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span><a name="line.2385"></a>
+<span class="sourceLineNo">2386</span> public void verifyNumericRows(Region region, final byte[] f, int startRow, int endRow)<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span> throws IOException {<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span> verifyNumericRows((HRegion)region, f, startRow, endRow);<a name="line.2388"></a>
+<span class="sourceLineNo">2389</span> }<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span><a name="line.2390"></a>
+<span class="sourceLineNo">2391</span> public void verifyNumericRows(HRegion region, final byte[] f, int startRow, int endRow)<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span> throws IOException {<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span> verifyNumericRows(region, f, startRow, endRow, true);<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span> }<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span><a name="line.2395"></a>
+<span class="sourceLineNo">2396</span> public void verifyNumericRows(Region region, final byte[] f, int startRow, int endRow,<a name="line.2396"></a>
+<span class="sourceLineNo">2397</span> final boolean present) throws IOException {<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span> verifyNumericRows((HRegion)region, f, startRow, endRow, present);<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span> }<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span><a name="line.2400"></a>
+<span class="sourceLineNo">2401</span> public void verifyNumericRows(HRegion region, final byte[] f, int startRow, int endRow,<a name="line.2401"></a>
+<span class="sourceLineNo">2402</span> final boolean present) throws IOException {<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span> for (int i = startRow; i < endRow; i++) {<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span> String failMsg = "Failed verification of row :" + i;<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span> Result result = region.get(new Get(data));<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span><a name="line.2407"></a>
+<span class="sourceLineNo">2408</span> boolean hasResult = result != null && !result.isEmpty();<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span> assertEquals(failMsg + result, present, hasResult);<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span> if (!present) continue;<a name="line.2410"></a>
<span class="sourceLineNo">2411</span><a name="line.2411"></a>
-<span class="sourceLineNo">2412</span> public void deleteNumericRows(final Table t, final byte[] f, int startRow, int endRow)<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span> throws IOException {<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span> for (int i = startRow; i < endRow; i++) {<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span> Delete delete = new Delete(data);<a name="line.2416"></a>
-<span class="sourceLineNo">2417</span> delete.addFamily(f);<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span> t.delete(delete);<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span> }<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span> }<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span><a name="line.2421"></a>
-<span class="sourceLineNo">2422</span> /**<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span> * Return the number of rows in the given table.<a name="line.2423"></a>
-<span class="sourceLineNo">2424</span> * @param table to count rows<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span> * @return count of rows<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span> */<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span> public static int countRows(final Table table) throws IOException {<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span> return countRows(table, new Scan());<a name="line.2428"></a>
+<span class="sourceLineNo">2412</span> assertTrue(failMsg, result.containsColumn(f, null));<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span> assertEquals(failMsg, 1, result.getColumnCells(f, null).size());<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span> Cell cell = result.getColumnLatestCell(f, null);<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span> assertTrue(failMsg,<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span> Bytes.equals(data, 0, data.length, cell.getValueArray(), cell.getValueOffset(),<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span> cell.getValueLength()));<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span> }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span> }<a name="line.2419"></a>
+<span class="sourceLineNo">2420</span><a name="line.2420"></a>
+<span class="sourceLineNo">2421</span> public void deleteNumericRows(final Table t, final byte[] f, int startRow, int endRow)<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span> throws IOException {<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span> for (int i = startRow; i < endRow; i++) {<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span> byte[] data = Bytes.toBytes(String.valueOf(i));<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span> Delete delete = new Delete(data);<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span> delete.addFamily(f);<a name="line.2426"></a>
+<span class="sourceLineNo">2427</span> t.delete(delete);<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span> }<a name="line.2428"></a>
<span class="sourceLineNo">2429</span> }<a name="line.2429"></a>
<span class="sourceLineNo">2430</span><a name="line.2430"></a>
-<span class="sourceLineNo">2431</span> public static int countRows(final Table table, final Scan scan) throws IOException {<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span> try (ResultScanner results = table.getScanner(scan)) {<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span> int count = 0;<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span> while (results.next() != null) {<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span> count++;<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span> }<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span> return count;<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span> }<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span> }<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span><a name="line.2440"></a>
-<span class="sourceLineNo">2441</span> public int countRows(final Table table, final byte[]... families) throws IOException {<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span> Scan scan = new Scan();<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span> for (byte[] family: families) {<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span> scan.addFamily(family);<a name="line.2444"></a>
-<span class="sourceLineNo">2445</span> }<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span> return countRows(table, scan);<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span> }<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span><a name="line.2448"></a>
-<span class="sourceLineNo">2449</span> /**<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span> * Return the number of rows in the given table.<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span> */<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span> public int countRows(final TableName tableName) throws IOException {<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span> Table table = getConnection().getTable(tableName);<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span> try {<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span> return countRows(table);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span> } finally {<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span> table.close();<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span> }<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span> }<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span><a name="line.2460"></a>
-<span class="sourceLineNo">2461</span> public int countRows(final Region region) throws IOException {<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span> return countRows(region, new Scan());<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span> }<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span><a name="line.2464"></a>
-<span class="sourceLineNo">2465</span> public int countRows(final Region region, final Scan scan) throws IOException {<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span> InternalScanner scanner = region.getScanner(scan);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span> try {<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span> return countRows(scanner);<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span> } finally {<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span> scanner.close();<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span> }<a name="line.2471"></a>
+<span class="sourceLineNo">2431</span> /**<a name="line.2431"></a>
+<span class="sourceLineNo">2432</span> * Return the number of rows in the given table.<a name="line.2432"></a>
+<span class="sourceLineNo">2433</span> * @param table to count rows<a name="line.2433"></a>
+<span class="sourceLineNo">2434</span> * @return count of rows<a name="line.2434"></a>
+<span class="sourceLineNo">2435</span> */<a name="line.2435"></a>
+<span class="sourceLineNo">2436</span> public static int countRows(final Table table) throws IOException {<a name="line.2436"></a>
+<span class="sourceLineNo">2437</span> return countRows(table, new Scan());<a name="line.2437"></a>
+<span class="sourceLineNo">2438</span> }<a name="line.2438"></a>
+<span class="sourceLineNo">2439</span><a name="line.2439"></a>
+<span class="sourceLineNo">2440</span> public static int countRows(final Table table, final Scan scan) throws IOException {<a name="line.2440"></a>
+<span class="sourceLineNo">2441</span> try (ResultScanner results = table.getScanner(scan)) {<a name="line.2441"></a>
+<span class="sourceLineNo">2442</span> int count = 0;<a name="line.2442"></a>
+<span class="sourceLineNo">2443</span> while (results.next() != null) {<a name="line.2443"></a>
+<span class="sourceLineNo">2444</span> count++;<a name="line.2444"></a>
+<span class="sourceLineNo">2445</span> }<a name="line.2445"></a>
+<span class="sourceLineNo">2446</span> return count;<a name="line.2446"></a>
+<span class="sourceLineNo">2447</span> }<a name="line.2447"></a>
+<span class="sourceLineNo">2448</span> }<a name="line.2448"></a>
+<span class="sourceLineNo">2449</span><a name="line.2449"></a>
+<span class="sourceLineNo">2450</span> public int countRows(final Table table, final byte[]... families) throws IOException {<a name="line.2450"></a>
+<span class="sourceLineNo">2451</span> Scan scan = new Scan();<a name="line.2451"></a>
+<span class="sourceLineNo">2452</span> for (byte[] family: families) {<a name="line.2452"></a>
+<span class="sourceLineNo">2453</span> scan.addFamily(family);<a name="line.2453"></a>
+<span class="sourceLineNo">2454</span> }<a name="line.2454"></a>
+<span class="sourceLineNo">2455</span> return countRows(table, scan);<a name="line.2455"></a>
+<span class="sourceLineNo">2456</span> }<a name="line.2456"></a>
+<span class="sourceLineNo">2457</span><a name="line.2457"></a>
+<span class="sourceLineNo">2458</span> /**<a name="line.2458"></a>
+<span class="sourceLineNo">2459</span> * Return the number of rows in the given table.<a name="line.2459"></a>
+<span class="sourceLineNo">2460</span> */<a name="line.2460"></a>
+<span class="sourceLineNo">2461</span> public int countRows(final TableName tableName) throws IOException {<a name="line.2461"></a>
+<span class="sourceLineNo">2462</span> Table table = getConnection().getTable(tableName);<a name="line.2462"></a>
+<span class="sourceLineNo">2463</span> try {<a name="line.2463"></a>
+<span class="sourceLineNo">2464</span> return countRows(table);<a name="line.2464"></a>
+<span class="sourceLineNo">2465</span> } finally {<a name="line.2465"></a>
+<span class="sourceLineNo">2466</span> table.close();<a name="line.2466"></a>
+<span class="sourceLineNo">2467</span> }<a name="line.2467"></a>
+<span class="sourceLineNo">2468</span> }<a name="line.2468"></a>
+<span class="sourceLineNo">2469</span><a name="line.2469"></a>
+<span class="sourceLineNo">2470</span> public int countRows(final Region region) throws IOException {<a name="line.2470"></a>
+<span class="sourceLineNo">2471</span> return countRows(region, new Scan());<a name="line.2471"></a>
<span class="sourceLineNo">2472</span> }<a name="line.2472"></a>
<span class="sourceLineNo">2473</span><a name="line.2473"></a>
-<span class="sourceLineNo">2474</span> public int countRows(final InternalScanner scanner) throws IOException {<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span> int scannedCount = 0;<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span> List<Cell> results = new ArrayList<>();<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span> boolean hasMore = true;<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span> while (hasMore) {<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span> hasMore = scanner.next(results);<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span> scannedCount += results.size();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span> results.clear();<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span> }<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span> return scannedCount;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span> }<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span><a name="line.2485"></a>
-<span class="sourceLineNo">2486</span> /**<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span> * Return an md5 digest of the entire contents of a table.<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span> */<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span> public String checksumRows(final Table table) throws Exception {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span><a name="line.2490"></a>
-<span class="sourceLineNo">2491</span> Scan scan = new Scan();<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span> ResultScanner results = table.getScanner(scan);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span> MessageDigest digest = MessageDigest.getInstance("MD5");<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span> for (Result res : results) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span> digest.update(res.getRow());<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span> }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span> results.close();<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span> return digest.toString();<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span> }<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span><a name="line.2500"></a>
-<span class="sourceLineNo">2501</span> /** All the row values for the data loaded by {@link #loadTable(Table, byte[])} */<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span> public static final byte[][] ROWS = new byte[(int) Math.pow('z' - 'a' + 1, 3)][3]; // ~52KB<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span> static {<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span> int i = 0;<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span> for (byte b1 = 'a'; b1 <= 'z'; b1++) {<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span> for (byte b2 = 'a'; b2 <= 'z'; b2++) {<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span> for (byte b3 = 'a'; b3 <= 'z'; b3++) {<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span> ROWS[i][0] = b1;<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span> ROWS[i][1] = b2;<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span> ROWS[i][2] = b3;<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span> i++;<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span> }<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span> }<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span> }<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span> }<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span><a name="line.2516"></a>
-<span class="sourceLineNo">2517</span> public static final byte[][] KEYS = {<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span> HConstants.EMPTY_BYTE_ARRAY, Bytes.toBytes("bbb"),<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span> Bytes.toBytes("ccc"), Bytes.toBytes("ddd"), Bytes.toBytes("eee"),<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span> Bytes.toBytes("fff"), Bytes.toBytes("ggg"), Bytes.toBytes("hhh"),<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span> Bytes.toBytes("iii"), Bytes.toBytes("jjj"), Bytes.toBytes("kkk"),<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span> Bytes.toBytes("lll"), Bytes.toBytes("mmm"), Bytes.toBytes("nnn"),<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span> Bytes.toBytes("ooo"), Bytes.toBytes("ppp"), Bytes.toBytes("qqq"),<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span> Bytes.toBytes("rrr"), Bytes.toBytes("sss"), Bytes.toBytes("ttt"),<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span> Bytes.toBytes("uuu"), Bytes.toBytes("vvv"), Bytes.toBytes("www"),<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span> Bytes.toBytes("xxx"), Bytes.toBytes("yyy")<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span> };<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span><a name="line.2528"></a>
-<span class="sourceLineNo">2529</span> public static final byte[][] KEYS_FOR_HBA_CREATE_TABLE = {<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span> Bytes.toBytes("bbb"),<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span> Bytes.toBytes("ccc"), Bytes.toBytes("ddd"), Bytes.toBytes("eee"),<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span> Bytes.toBytes("fff"), Bytes.toBytes("ggg"), Bytes.toBytes("hhh"),<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span> Bytes.toBytes("iii"), Bytes.toBytes("jjj"), Bytes.toBytes("kkk"),<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span> Bytes.toBytes("lll"), Bytes.toBytes("mmm"), Bytes.toBytes("nnn"),<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span> Bytes.toBytes("ooo"), Bytes.toBytes("ppp"), Bytes.toBytes("qqq"),<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span> Bytes.toBytes("rrr"), Bytes.toBytes("sss"), Bytes.toBytes("ttt"),<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span> Bytes.toBytes("uuu"), Bytes.toBytes("vvv"), Bytes.toBytes("www"),<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span> Bytes.toBytes("xxx"), Bytes.toBytes("yyy"), Bytes.toBytes("zzz")<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span> };<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span><a name="line.2540"></a>
-<span class="sourceLineNo">2541</span> /**<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span> * Create rows in hbase:meta for regions of the specified table with the specified<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span> * start keys. The first startKey should be a 0 length byte array if you<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span> * want to form a proper range of regions.<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span> * @param conf<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span> * @param htd<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span> * @param startKeys<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span> * @return list of region info for regions added to meta<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span> * @throws IOException<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span> */<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span> public List<RegionInfo> createMultiRegionsInMeta(final Configuration conf,<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span> final TableDescriptor htd, byte [][] startKeys)<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span> throws IOException {<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span> Table meta = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span> Arrays.sort(startKeys, Bytes.BYTES_COMPARATOR);<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span> List<RegionInfo> newRegions = new ArrayList<>(startKeys.length);<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span> MetaTableAccessor<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span> .updateTableState(getConnection(), htd.getTableName(), TableState.State.ENABLED);<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span> // add custom ones<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span> for (int i = 0; i < startKeys.length; i++) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span> int j = (i + 1) % startKeys.length;<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span> RegionInfo hri = RegionInfoBuilder.newBuilder(htd.getTableName())<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span> .setStartKey(startKeys[i])<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span> .setEndKey(startKeys[j])<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span> .build();<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span> MetaTableAccessor.addRegionToMeta(getConnection(), hri);<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span> newRegions.add(hri);<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span> }<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span><a name="line.2569"></a>
-<span class="sourceLineNo">2570</span> meta.close();<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span> return newRegions;<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span> }<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span><a name="line.2573"></a>
-<span class="sourceLineNo">2574</span> /**<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span> * Create an unmanaged WAL. Be sure to close it when you're through.<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span> */<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span> public static WAL createWal(final Configuration conf, final Path rootDir, final RegionInfo hri)<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span> throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span> // The WAL subsystem will use the default rootDir rather than the passed in rootDir<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span> // unless I pass along via the conf.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span> Configuration confForWAL = new Configuration(conf);<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span> confForWAL.set(HConstants.HBASE_DIR, rootDir.toString());<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span> return new WALFactory(confForWAL, "hregion-" + RandomStringUtils.randomNumeric(8)).getWAL(hri);<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span> }<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span><a name="line.2586"></a>
-<span class="sourceLineNo">2587</span> /**<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span> * Create a region with it's own WAL. Be sure to call<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span> */<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span> final Configuration conf, final TableDescriptor htd) throws IOException {<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span> return createRegionAndWAL(info, rootDir, conf, htd, true);<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span> }<a name="line.2594"></a>
+<span class="sourceLineNo">2474</span> public int countRows(final Region region, final Scan scan) throws IOException {<a name="line.2474"></a>
+<span class="sourceLineNo">2475</span> InternalScanner scanner = region.getScanner(scan);<a name="line.2475"></a>
+<span class="sourceLineNo">2476</span> try {<a name="line.2476"></a>
+<span class="sourceLineNo">2477</span> return countRows(scanner);<a name="line.2477"></a>
+<span class="sourceLineNo">2478</span> } finally {<a name="line.2478"></a>
+<span class="sourceLineNo">2479</span> scanner.close();<a name="line.2479"></a>
+<span class="sourceLineNo">2480</span> }<a name="line.2480"></a>
+<span class="sourceLineNo">2481</span> }<a name="line.2481"></a>
+<span class="sourceLineNo">2482</span><a name="line.2482"></a>
+<span class="sourceLineNo">2483</span> public int countRows(final InternalScanner scanner) throws IOException {<a name="line.2483"></a>
+<span class="sourceLineNo">2484</span> int scannedCount = 0;<a name="line.2484"></a>
+<span class="sourceLineNo">2485</span> List<Cell> results = new ArrayList<>();<a name="line.2485"></a>
+<span class="sourceLineNo">2486</span> boolean hasMore = true;<a name="line.2486"></a>
+<span class="sourceLineNo">2487</span> while (hasMore) {<a name="line.2487"></a>
+<span class="sourceLineNo">2488</span> hasMore = scanner.next(results);<a name="line.2488"></a>
+<span class="sourceLineNo">2489</span> scannedCount += results.size();<a name="line.2489"></a>
+<span class="sourceLineNo">2490</span> results.clear();<a name="line.2490"></a>
+<span class="sourceLineNo">2491</span> }<a name="line.2491"></a>
+<span class="sourceLineNo">2492</span> return scannedCount;<a name="line.2492"></a>
+<span class="sourceLineNo">2493</span> }<a name="line.2493"></a>
+<span class="sourceLineNo">2494</span><a name="line.2494"></a>
+<span class="sourceLineNo">2495</span> /**<a name="line.2495"></a>
+<span class="sourceLineNo">2496</span> * Return an md5 digest of the entire contents of a table.<a name="line.2496"></a>
+<span class="sourceLineNo">2497</span> */<a name="line.2497"></a>
+<span class="sourceLineNo">2498</span> public String checksumRows(final Table table) throws Exception {<a name="line.2498"></a>
+<span class="sourceLineNo">2499</span><a name="line.2499"></a>
+<span class="sourceLineNo">2500</span> Scan scan = new Scan();<a name="line.2500"></a>
+<span class="sourceLineNo">2501</span> ResultScanner results = table.getScanner(scan);<a name="line.2501"></a>
+<span class="sourceLineNo">2502</span> MessageDigest digest = MessageDigest.getInstance("MD5");<a name="line.2502"></a>
+<span class="sourceLineNo">2503</span> for (Result res : results) {<a name="line.2503"></a>
+<span class="sourceLineNo">2504</span> digest.update(res.getRow());<a name="line.2504"></a>
+<span class="sourceLineNo">2505</span> }<a name="line.2505"></a>
+<span class="sourceLineNo">2506</span> results.close();<a name="line.2506"></a>
+<span class="sourceLineNo">2507</span> return digest.toString();<a name="line.2507"></a>
+<span class="sourceLineNo">2508</span> }<a name="line.2508"></a>
+<span class="sourceLineNo">2509</span><a name="line.2509"></a>
+<span class="sourceLineNo">2510</span> /** All the row values for the data loaded by {@link #loadTable(Table, byte[])} */<a name="line.2510"></a>
+<span class="sourceLineNo">2511</span> public static final byte[][] ROWS = new byte[(int) Math.pow('z' - 'a' + 1, 3)][3]; // ~52KB<a name="line.2511"></a>
+<span class="sourceLineNo">2512</span> static {<a name="line.2512"></a>
+<span class="sourceLineNo">2513</span> int i = 0;<a name="line.2513"></a>
+<span class="sourceLineNo">2514</span> for (byte b1 = 'a'; b1 <= 'z'; b1++) {<a name="line.2514"></a>
+<span class="sourceLineNo">2515</span> for (byte b2 = 'a'; b2 <= 'z'; b2++) {<a name="line.2515"></a>
+<span class="sourceLineNo">2516</span> for (byte b3 = 'a'; b3 <= 'z'; b3++) {<a name="line.2516"></a>
+<span class="sourceLineNo">2517</span> ROWS[i][0] = b1;<a name="line.2517"></a>
+<span class="sourceLineNo">2518</span> ROWS[i][1] = b2;<a name="line.2518"></a>
+<span class="sourceLineNo">2519</span> ROWS[i][2] = b3;<a name="line.2519"></a>
+<span class="sourceLineNo">2520</span> i++;<a name="line.2520"></a>
+<span class="sourceLineNo">2521</span> }<a name="line.2521"></a>
+<span class="sourceLineNo">2522</span> }<a name="line.2522"></a>
+<span class="sourceLineNo">2523</span> }<a name="line.2523"></a>
+<span class="sourceLineNo">2524</span> }<a name="line.2524"></a>
+<span class="sourceLineNo">2525</span><a name="line.2525"></a>
+<span class="sourceLineNo">2526</span> public static final byte[][] KEYS = {<a name="line.2526"></a>
+<span class="sourceLineNo">2527</span> HConstants.EMPTY_BYTE_ARRAY, Bytes.toBytes("bbb"),<a name="line.2527"></a>
+<span class="sourceLineNo">2528</span> Bytes.toBytes("ccc"), Bytes.toBytes("ddd"), Bytes.toBytes("eee"),<a name="line.2528"></a>
+<span class="sourceLineNo">2529</span> Bytes.toBytes("fff"), Bytes.toBytes("ggg"), Bytes.toBytes("hhh"),<a name="line.2529"></a>
+<span class="sourceLineNo">2530</span> Bytes.toBytes("iii"), Bytes.toBytes("jjj"), Bytes.toBytes("kkk"),<a name="line.2530"></a>
+<span class="sourceLineNo">2531</span> Bytes.toBytes("lll"), Bytes.toBytes("mmm"), Bytes.toBytes("nnn"),<a name="line.2531"></a>
+<span class="sourceLineNo">2532</span> Bytes.toBytes("ooo"), Bytes.toBytes("ppp"), Bytes.toBytes("qqq"),<a name="line.2532"></a>
+<span class="sourceLineNo">2533</span> Bytes.toBytes("rrr"), Bytes.toBytes("sss"), Bytes.toBytes("ttt"),<a name="line.2533"></a>
+<span class="sourceLineNo">2534</span> Bytes.toBytes("uuu"), Bytes.toBytes("vvv"), Bytes.toBytes("www"),<a name="line.2534"></a>
+<span class="sourceLineNo">2535</span> Bytes.toBytes("xxx"), Bytes.toBytes("yyy")<a name="line.2535"></a>
+<span class="sourceLineNo">2536</span> };<a name="line.2536"></a>
+<span class="sourceLineNo">2537</span><a name="line.2537"></a>
+<span class="sourceLineNo">2538</span> public static final byte[][] KEYS_FOR_HBA_CREATE_TABLE = {<a name="line.2538"></a>
+<span class="sourceLineNo">2539</span> Bytes.toBytes("bbb"),<a name="line.2539"></a>
+<span class="sourceLineNo">2540</span> Bytes.toBytes("ccc"), Bytes.toBytes("ddd"), Bytes.toBytes("eee"),<a name="line.2540"></a>
+<span class="sourceLineNo">2541</span> Bytes.toBytes("fff"), Bytes.toBytes("ggg"), Bytes.toBytes("hhh"),<a name="line.2541"></a>
+<span class="sourceLineNo">2542</span> Bytes.toBytes("iii"), Bytes.toBytes("jjj"), Bytes.toBytes("kkk"),<a name="line.2542"></a>
+<span class="sourceLineNo">2543</span> Bytes.toBytes("lll"), Bytes.toBytes("mmm"), Bytes.toBytes("nnn"),<a name="line.2543"></a>
+<span class="sourceLineNo">2544</span> Bytes.toBytes("ooo"), Bytes.toBytes("ppp"), Bytes.toBytes("qqq"),<a name="line.2544"></a>
+<span class="sourceLineNo">2545</span> Bytes.toBytes("rrr"), Bytes.toBytes("sss"), Bytes.toBytes("ttt"),<a name="line.2545"></a>
+<span class="sourceLineNo">2546</span> Bytes.toBytes("uuu"), Bytes.toBytes("vvv"), Bytes.toBytes("www"),<a name="line.2546"></a>
+<span class="sourceLineNo">2547</span> Bytes.toBytes("xxx"), Bytes.toBytes("yyy"), Bytes.toBytes("zzz")<a name="line.2547"></a>
+<span class="sourceLineNo">2548</span> };<a name="line.2548"></a>
+<span class="sourceLineNo">2549</span><a name="line.2549"></a>
+<span class="sourceLineNo">2550</span> /**<a name="line.2550"></a>
+<span class="sourceLineNo">2551</span> * Create rows in hbase:meta for regions of the specified table with the specified<a name="line.2551"></a>
+<span class="sourceLineNo">2552</span> * start keys. The first startKey should be a 0 length byte array if you<a name="line.2552"></a>
+<span class="sourceLineNo">2553</span> * want to form a proper range of regions.<a name="line.2553"></a>
+<span class="sourceLineNo">2554</span> * @param conf<a name="line.2554"></a>
+<span class="sourceLineNo">2555</span> * @param htd<a name="line.2555"></a>
+<span class="sourceLineNo">2556</span> * @param startKeys<a name="line.2556"></a>
+<span class="sourceLineNo">2557</span> * @return list of region info for regions added to meta<a name="line.2557"></a>
+<span class="sourceLineNo">2558</span> * @throws IOException<a name="line.2558"></a>
+<span class="sourceLineNo">2559</span> */<a name="line.2559"></a>
+<span class="sourceLineNo">2560</span> public List<RegionInfo> createMultiRegionsInMeta(final Configuration conf,<a name="line.2560"></a>
+<span class="sourceLineNo">2561</span> final TableDescriptor htd, byte [][] startKeys)<a name="line.2561"></a>
+<span class="sourceLineNo">2562</span> throws IOException {<a name="line.2562"></a>
+<span class="sourceLineNo">2563</span> Table meta = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.2563"></a>
+<span class="sourceLineNo">2564</span> Arrays.sort(startKeys, Bytes.BYTES_COMPARATOR);<a name="line.2564"></a>
+<span class="sourceLineNo">2565</span> List<RegionInfo> newRegions = new ArrayList<>(startKeys.length);<a name="line.2565"></a>
+<span class="sourceLineNo">2566</span> MetaTableAccessor<a name="line.2566"></a>
+<span class="sourceLineNo">2567</span> .updateTableState(getConnection(), htd.getTableName(), TableState.State.ENABLED);<a name="line.2567"></a>
+<span class="sourceLineNo">2568</span> // add custom ones<a name="line.2568"></a>
+<span class="sourceLineNo">2569</span> for (int i = 0; i < startKeys.length; i++) {<a name="line.2569"></a>
+<span class="sourceLineNo">2570</span> int j = (i + 1) % startKeys.length;<a name="line.2570"></a>
+<span class="sourceLineNo">2571</span> RegionInfo hri = RegionInfoBuilder.newBuilder(htd.getTableName())<a name="line.2571"></a>
+<span class="sourceLineNo">2572</span> .setStartKey(startKeys[i])<a name="line.2572"></a>
+<span class="sourceLineNo">2573</span> .setEndKey(startKeys[j])<a name="line.2573"></a>
+<span class="sourceLineNo">2574</span> .build();<a name="line.2574"></a>
+<span class="sourceLineNo">2575</span> MetaTableAccessor.addRegionToMeta(getConnection(), hri);<a name="line.2575"></a>
+<span class="sourceLineNo">2576</span> newRegions.add(hri);<a name="line.2576"></a>
+<span class="sourceLineNo">2577</span> }<a name="line.2577"></a>
+<span class="sourceLineNo">2578</span><a name="line.2578"></a>
+<span class="sourceLineNo">2579</span> meta.close();<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span> return newRegions;<a name="line.2580"></a>
+<span class="sourceLineNo">2581</span> }<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span><a name="line.2582"></a>
+<span class="sourceLineNo">2583</span> /**<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span> * Create an unmanaged WAL. Be sure to close it when you're through.<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span> */<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span> public static WAL createWal(final Configuration conf, final Path rootDir, final RegionInfo hri)<a name="line.2586"></a>
+<span class="sourceLineNo">2587</span> throws IOException {<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span> // The WAL subsystem will use the default rootDir rather than the passed in rootDir<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span> // unless I pass along via the conf.<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span> Configuration confForWAL = new Configuration(conf);<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span> confForWAL.set(HConstants.HBASE_DIR, rootDir.toString());<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span> return new WALFactory(confForWAL, "hregion-" + RandomStringUtils.randomNumeric(8)).getWAL(hri);<a name="line.2592"></a>
+<span class="sourceLineNo">2593</span> }<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span><a name="line.2594"></a>
<span class="sourceLineNo">2595</span><a name="line.2595"></a>
<span class="sourceLineNo">2596</span> /**<a name="line.2596"></a>
<span class="sourceLineNo">2597</span> * Create a region with it's own WAL. Be sure to call<a name="line.2597"></a>
<span class="sourceLineNo">2598</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2598"></a>
<span class="sourceLineNo">2599</span> */<a name="line.2599"></a>
<span class="sourceLineNo">2600</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span> final Configuration conf, final TableDescriptor htd, BlockCache blockCache)<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span> throws IOException {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span> HRegion region = createRegionAndWAL(info, rootDir, conf, htd, false);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span> region.setBlockCache(blockCache);<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span> region.initialize();<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span> return region;<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span> }<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span> /**<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span> * Create a region with it's own WAL. Be sure to call<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span> */<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span> final Configuration conf, final TableDescriptor htd, MobFileCache mobFileCache)<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span> throws IOException {<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span> HRegion region = createRegionAndWAL(info, rootDir, conf, htd, false);<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span> region.setMobFileCache(mobFileCache);<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span> region.initialize();<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span> return region;<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span> }<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span><a name="line.2620"></a>
-<span class="sourceLineNo">2621</span> /**<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span> * Create a region with it's own WAL. Be sure to call<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span> */<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span> final Configuration conf, final TableDescriptor htd, boolean initialize)<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span> throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span> ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span> WAL wal = createWal(conf, rootDir, info);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span> return HRegion.createHRegion(info, rootDir, conf, htd, wal, initialize);<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span> }<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span><a name="line.2632"></a>
-<span class="sourceLineNo">2633</span> /**<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span> * Returns all rows from the hbase:meta table.<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span> *<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span> * @throws IOException When reading the rows fails.<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span> */<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span> public List<byte[]> getMetaTableRows() throws IOException {<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span> // TODO: Redo using MetaTableAccessor class<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span> Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span> List<byte[]> rows = new ArrayList<>();<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span> ResultScanner s = t.getScanner(new Scan());<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span> for (Result result : s) {<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span> LOG.info("getMetaTableRows: row -> " +<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span> Bytes.toStringBinary(result.getRow()));<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span> rows.add(result.getRow());<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span> }<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span> s.close();<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span> t.close();<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span> return rows;<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span> }<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span><a name="line.2652"></a>
-<span class="sourceLineNo">2653</span> /**<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span> * Returns all rows from the hbase:meta table for a given user table<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span> *<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span> * @throws IOException When reading the rows fails.<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span> */<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span> public List<byte[]> getMetaTableRows(TableName tableName) throws IOException {<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span> // TODO: Redo using MetaTableAccessor.<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span> Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span> List<byte[]> rows = new ArrayList<>();<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span> ResultScanner s = t.getScanner(new Scan());<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span> for (Result result : s) {<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span> RegionInfo info = MetaTableAccessor.getRegionInfo(result);<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span> if (info == null) {<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span> LOG.error("No region info for row " + Bytes.toString(result.getRow()));<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span> // TODO figure out what to do for this new hosed case.<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span> continue;<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span> }<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span><a name="line.2670"></a>
-<span class="sourceLineNo">2671</span> if (info.getTable().equals(tableName)) {<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span> LOG.info("getMetaTableRows: row -> " +<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span> Bytes.toStringBinary(result.getRow()) + info);<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span> rows.add(result.getRow());<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span> }<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span> }<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span> s.close();<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span> t.close();<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span> return rows;<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span> }<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span><a name="line.2681"></a>
-<span class="sourceLineNo">2682</span> /**<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span> * Returns all regions of the specified table<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span> *<a name="line.2684"></a>
-<span class="sourceLineNo">2685</span> * @param tableName the table name<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span> * @return all regions of the specified table<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span> * @throws IOException when getting the regions fails.<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span> */<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span> private List<RegionInfo> getRegions(TableName tableName) throws IOException {<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span> try (Admin admin = getConnection().getAdmin()) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span> return admin.getRegions(tableName);<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span> }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span> }<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span><a name="line.2694"></a>
-<span class="sourceLineNo">2695</span> /*<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span> * Find any other region server which is different from the one identified by parameter<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span> * @param rs<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span> * @return another region server<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span> */<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span> public HRegionServer getOtherRegionServer(HRegionServer rs) {<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span> for (JVMClusterUtil.RegionServerThread rst :<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span> getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span> if (!(rst.getRegionServer() == rs)) {<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span> return rst.getRegionServer();<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span> }<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span> }<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span> return null;<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span> }<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span><a name="line.2709"></a>
-<span class="sourceLineNo">2710</span> /**<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span> * Tool to get the reference to the region server object that holds the<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span> * region of the specified user table.<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span> * @param tableName user table to lookup in hbase:meta<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span> * @return region server that holds it, null if the row doesn't exist<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span> * @throws IOException<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span> * @throws InterruptedException<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span> */<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span> public HRegionServer getRSForFirstRegionInTable(TableName tableName)<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span> throws IOException, InterruptedException {<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span> List<RegionInfo> regions = getRegions(tableName);<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span> if (regions == null || regions.isEmpty()) {<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span> return null;<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span> }<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span> LOG.debug("Found " + regions.size() + " regions for table " +<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span> tableName);<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span><a name="line.2726"></a>
-<span class="sourceLineNo">2727</span> byte[] firstRegionName = regions.stream()<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span> .filter(r -> !r.isOffline())<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span> .map(RegionInfo::getRegionName)<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span> .findFirst()<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span> .orElseThrow(() -> new IOException("online regions not found in table " + tableName));<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span><a name="line.2732"></a>
-<span class="sourceLineNo">2733</span> LOG.debug("firstRegionName=" + Bytes.toString(firstRegionName));<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span> long pause = getConfiguration().getLong(HConstants.HBASE_CLIENT_PAUSE,<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span> HConstants.DEFAULT_HBASE_CLIENT_PAUSE);<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span> int numRetries = getConfiguration().getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span> HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span> RetryCounter retrier = new RetryCounter(numRetries+1, (int)pause, TimeUnit.MICROSECONDS);<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span> while(retrier.shouldRetry()) {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span> int index = getMiniHBaseCluster().getServerWith(firstRegionName);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span> if (index != -1) {<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span> return getMiniHBaseCluster().getRegionServerThreads().get(index).getRegionServer();<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span> }<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span> // Came back -1. Region may not be online yet. Sleep a while.<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span> retrier.sleepUntilNextRetry();<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span> }<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span> return null;<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span> }<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span><a name="line.2749"></a>
-<span class="sourceLineNo">2750</span> /**<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span> * Starts a <code>MiniMRCluster</code> with a default number of<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span> * <code>TaskTracker</code>'s.<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span> *<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span> * @throws IOException When starting the cluster fails.<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span> */<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span> public MiniMRCluster startMiniMapReduceCluster() throws IOException {<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span> // Set a very high max-disk-utilization percentage to avoid the NodeManagers from failing.<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span> conf.setIfUnset(<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span> "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage",<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span> "99.0");<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span> startMiniMapReduceCluster(2);<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span> return mrCluster;<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span> }<a name="line.2763"></a>
-<span class="sourceLineNo">2764</span><a name="line.2764"></a>
-<span class="sourceLineNo">2765</span> /**<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span> * Tasktracker has a bug where changing the hadoop.log.dir system property<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span> * will not change its internal static LOG_DIR variable.<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span> */<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span> private void forceChangeTaskLogDir() {<a name="line.2769"></a>
-<span class="sourceLineNo">2770</span> Field logDirField;<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span> try {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span> logDirField = TaskLog.class.getDeclaredField("LOG_DIR");<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span> logDirField.setAccessible(true);<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span><a name="line.2774"></a>
-<span class="sourceLineNo">2775</span> Field modifiersField = Field.class.getDeclaredField("modifiers");<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span> modifiersField.setAccessible(true);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span> modifiersField.setInt(logDirField, logDirField.getModifiers() & ~Modifier.FINAL);<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span><a name="line.2778"></a>
-<span class="sourceLineNo">2779</span> logDirField.set(null, new File(hadoopLogDir, "userlogs"));<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span> } catch (SecurityException e) {<a name="line.2780"></a>
-<span class="sourceLineNo">2781</span> throw new RuntimeException(e);<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span> } catch (NoSuchFieldException e) {<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span> // TODO Auto-generated catch block<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span> throw new RuntimeException(e);<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span> } catch (IllegalArgumentException e) {<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span> throw new RuntimeException(e);<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span> } catch (IllegalAccessException e) {<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span> throw new RuntimeException(e);<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span> }<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span> }<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span><a name="line.2791"></a>
-<span class="sourceLineNo">2792</span> /**<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span> * Starts a <code>MiniMRCluster</code>. Call {@link #setFileSystemURI(String)} to use a different<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span> * filesystem.<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span> * @param servers The number of <code>TaskTracker</code>'s to start.<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span> * @throws IOException When starting the cluster fails.<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span> */<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span> private void startMiniMapReduceCluster(final int servers) throws IOException {<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span> if (mrCluster != null) {<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span> throw new IllegalStateException("MiniMRCluster is already running");<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span> }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span> LOG.info("Starting mini mapreduce cluster...");<a name="line.2802"></a>
-<span class="sourceLineNo">2803</span> setupClusterTestDir();<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span> createDirsAndSetProperties();<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span><a name="line.2805"></a>
-<span class="sourceLineNo">2806</span> forceChangeTaskLogDir();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span><a name="line.2807"></a>
-<span class="sourceLineNo">2808</span> //// hadoop2 specific settings<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span> // Tests were failing because this process used 6GB of virtual memory and was getting killed.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span> // we up the VM usable so that processes don't get killed.<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span> conf.setFloat("yarn.nodemanager.vmem-pmem-ratio", 8.0f);<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span><a name="line.2812"></a>
-<span class="sourceLineNo">2813</span> // Tests were failing due to MAPREDUCE-4880 / MAPREDUCE-4607 against hadoop 2.0.2-alpha and<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span> // this avoids the problem by disabling speculative task execution in tests.<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span> conf.setBoolean("mapreduce.map.speculative", false);<a name="line.2815"></a>
-<span class="sourceLineNo">2816</span> conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span> ////<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span><a name="line.2818"></a>
-<span class="sourceLineNo">2819</span> // Allow the user to override FS URI for this map-reduce cluster to use.<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span> mrCluster = new MiniMRCluster(servers,<a name="line.2820"></a>
-<span class="sourceLineNo">2821</span> FS_URI != null ? FS_URI : FileSystem.get(conf).getUri().toString(), 1,<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span> null, null, new JobConf(this.conf));<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span> JobConf jobConf = MapreduceTestingShim.getJobConf(mrCluster);<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span> if (jobConf == null) {<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span> jobConf = mrCluster.createJobConf();<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span> }<a name="line.2826"></a>
+<span class="sourceLineNo">2601</span> final Configuration conf, final TableDescriptor htd) throws IOException {<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span> return createRegionAndWAL(info, rootDir, conf, htd, true);<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span> }<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span><a name="line.2604"></a>
+<span class="sourceLineNo">2605</span> /**<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span> * Create a region with it's own WAL. Be sure to call<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2607"></a>
+<span class="sourceLineNo">2608</span> */<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span> final Configuration conf, final TableDescriptor htd, BlockCache blockCache)<a name="line.2610"></a>
+<span class="sourceLineNo">2611</span> throws IOException {<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span> HRegion region = createRegionAndWAL(info, rootDir, conf, htd, false);<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span> region.setBlockCache(blockCache);<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span> region.initialize();<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span> return region;<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span> }<a name="line.2616"></a>
+<span class="sourceLineNo">2617</span> /**<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span> * Create a region with it's own WAL. Be sure to call<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span> */<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span> final Configuration conf, final TableDescriptor htd, MobFileCache mobFileCache)<a name="line.2622"></a>
+<span class="sourceLineNo">2623</span> throws IOException {<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span> HRegion region = createRegionAndWAL(info, rootDir, conf, htd, false);<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span> region.setMobFileCache(mobFileCache);<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span> region.initialize();<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span> return region;<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span> }<a name="line.2628"></a>
+<span class="sourceLineNo">2629</span><a name="line.2629"></a>
+<span class="sourceLineNo">2630</span> /**<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span> * Create a region with it's own WAL. Be sure to call<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span> * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} to clean up all resources.<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span> */<a name="line.2633"></a>
+<span class="sourceLineNo">2634</span> public static HRegion createRegionAndWAL(final RegionInfo info, final Path rootDir,<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span> final Configuration conf, final TableDescriptor htd, boolean initialize)<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span> throws IOException {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span> ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null);<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span> WAL wal = createWal(conf, rootDir, info);<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span> return HRegion.createHRegion(info, rootDir, conf, htd, wal, initialize);<a name="line.2639"></a>
+<span class="sourceLineNo">2640</span> }<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span><a name="line.2641"></a>
+<span class="sourceLineNo">2642</span> /**<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span> * Returns all rows from the hbase:meta table.<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span> *<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span> * @throws IOException When reading the rows fails.<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span> */<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span> public List<byte[]> getMetaTableRows() throws IOException {<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span> // TODO: Redo using MetaTableAccessor class<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span> Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span> List<byte[]> rows = new ArrayList<>();<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span> ResultScanner s = t.getScanner(new Scan());<a name="line.2651"></a>
+<span class="sourceLineNo">2652</span> for (Result result : s) {<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span> LOG.info("getMetaTableRows: row -> " +<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span> Bytes.toStringBinary(result.getRow()));<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span> rows.add(result.getRow());<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span> }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span> s.close();<a name="line.2657"></a>
+<span class="sourceLineNo">2658</span> t.close();<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span> return rows;<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span> }<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span><a name="line.2661"></a>
+<span class="sourceLineNo">2662</span> /**<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span> * Returns all rows from the hbase:meta table for a given user table<a name="line.2663"></a>
+<span class="sourceLineNo">2664</span> *<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span> * @throws IOException When reading the rows fails.<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span> */<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span> public List<byte[]> getMetaTableRows(TableName tableName) throws IOException {<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span> // TODO: Redo using MetaTableAccessor.<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span> Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.2669"></a>
+<span class="sourceLineNo">2670</span> List<byte[]> rows = new ArrayList<>();<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span> ResultScanner s = t.getScanner(new Scan());<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span> for (Result result : s) {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span> RegionInfo info = MetaTableAccessor.getRegionInfo(result);<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span> if (info == null) {<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span> LOG.error("No region info for row " + Bytes.toString(result.getRow()));<a name="line.2675"></a>
+<span class="sourceLineNo">2676</span> // TODO figure out what to do for this new hosed case.<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span> continue;<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span> }<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span><a name="line.2679"></a>
+<span class="sourceLineNo">2680</span> if (info.getTable().equals(tableName)) {<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span> LOG.info("getMetaTableRows: row -> " +<a name="line.2681"></a>
+<span class="sourceLineNo">2682</span> Bytes.toStringBinary(result.getRow()) + info);<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span> rows.add(result.getRow());<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span> }<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span> }<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span> s.close();<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span> t.close();<a name="line.2687"></a>
+<span class="sourceLineNo">2688</span> return rows;<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span> }<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span><a name="line.2690"></a>
+<span class="sourceLineNo">2691</span> /**<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span> * Returns all regions of the specified table<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span> *<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span> * @param tableName the table name<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span> * @return all regions of the specified table<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span> * @throws IOException when getting the regions fails.<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span> */<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span> private List<RegionInfo> getRegions(TableName tableName) throws IOException {<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span> try (Admin admin = getConnection().getAdmin()) {<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span> return admin.getRegions(tableName);<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span> }<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span> }<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span><a name="line.2703"></a>
+<span class="sourceLineNo">2704</span> /*<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span> * Find any other region server which is different from the one identified by parameter<a name="line.2705"></a>
+<span class="sourceLineNo">2706</span> * @param rs<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span> * @return another region server<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span> */<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span> public HRegionServer getOtherRegionServer(HRegionServer rs) {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span> for (JVMClusterUtil.RegionServerThread rst :<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span> getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span> if (!(rst.getRegionServer() == rs)) {<a name="line.2712"></a>
+<span class="sourceLineNo">2713</span> return rst.getRegionServer();<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span> }<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span> }<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span> return null;<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span> }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span><a name="line.2718"></a>
+<span class="sourceLineNo">2719</span> /**<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span> * Tool to get the reference to the region server object that holds the<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span> * region of the specified user table.<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span> * @param tableName user table to lookup in hbase:meta<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span> * @return region server that holds it, null if the row doesn't exist<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span> * @throws IOException<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span> * @throws InterruptedException<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span> */<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span> public HRegionServer getRSForFirstRegionInTable(TableName tableName)<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span> throws IOException, InterruptedException {<a name="line.2728"></a>
+<span class="sourceLineNo">2729</span> List<RegionInfo> regions = getRegions(tableName);<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span> if (regions == null || regions.isEmpty()) {<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span> return null;<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span> }<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span> LOG.debug("Found " + regions.size() + " regions for table " +<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span> tableName);<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span><a name="line.2735"></a>
+<span class="sourceLineNo">2736</span> byte[] firstRegionName = regions.stream()<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span> .filter(r -> !r.isOffline())<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span> .map(RegionInfo::getRegionName)<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span> .findFirst()<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span> .orElseThrow(() -> new IOException("online regions not found in table " + tableName));<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span><a name="line.2741"></a>
+<span class="sourceLineNo">2742</span> LOG.debug("firstRegionName=" + Bytes.toString(firstRegionName));<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span> long pause = getConfiguration().getLong(HConstants.HBASE_CLIENT_PAUSE,<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span> HConstants.DEFAULT_HBASE_CLIENT_PAUSE);<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span> int numRetries = getConfiguration().getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span> HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span> RetryCounter retrier = new RetryCounter(numRetries+1, (int)pause, TimeUnit.MICROSECONDS);<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span> while(retrier.shouldRetry()) {<a name="line.2748"></a>
+<span class="sourceLineNo">2749</span> int index = getMiniHBaseCluster().getServerWith(firstRegionName);<a name="line.2749"></a>
+<span class="sourceLineNo">2750</span> if (index != -1) {<a name="line.2750"></a>
+<span class="sourceLineNo">2751</span> return getMiniHBaseCluster().getRegionServerThreads().get(index).getRegionServer();<a name="line.2751"></a>
+<span class="sourceLineNo">2752</span> }<a name="line.2752"></a>
+<span class="sourceLineNo">2753</span> // Came back -1. Region may not be online yet. Sleep a while.<a name="line.2753"></a>
+<span class="sourceLineNo">2754</span> retrier.sleepUntilNextRetry();<a name="line.2754"></a>
+<span class="sourceLineNo">2755</span> }<a name="line.2755"></a>
+<span class="sourceLineNo">2756</span> return null;<a name="line.2756"></a>
+<span class="sourceLineNo">2757</span> }<a name="line.2757"></a>
+<span class="sourceLineNo">2758</span><a name="line.2758"></a>
+<span class="sourceLineNo">2759</span> /**<a name="line.2759"></a>
+<span class="sourceLineNo">2760</span> * Starts a <code>MiniMRCluster</code> with a default number of<a name="line.2760"></a>
+<span class="sourceLineNo">2761</span> * <code>TaskTracker</code>'s.<a name="line.2761"></a>
+<span class="sourceLineNo">2762</span> *<a name="line.2762"></a>
+<span class="sourceLineNo">2763</span> * @throws IOException When starting the cluster fails.<a name="line.2763"></a>
+<span class="sourceLineNo">2764</span> */<a name="line.2764"></a>
+<span class="sourceLineNo">2765</span> public MiniMRCluster startMiniMapReduceCluster() throws IOException {<a name="line.2765"></a>
+<span class="sourceLineNo">2766</span> // Set a very high max-disk-utilization percentage to avoid the NodeManagers from failing.<a name="line.2766"></a>
+<span class="sourceLineNo">2767</span> conf.setIfUnset(<a name="line.2767"></a>
+<span class="sourceLineNo">2768</span> "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage",<a name="line.2768"></a>
+<span class="sourceLineNo">2769</span> "99.0");<a name="line.2769"></a>
+<span class="sourceLineNo">2770</span> startMiniMapReduceCluster(2);<a name="line.2770"></a>
+<span class="sourceLineNo">2771</span> return mrCluster;<a name="line.2771"></a>
+<span class="sourceLineNo">2772</span> }<a name="line.2772"></a>
+<span class="sourceLineNo">2773</span><a name="line.2773"></a>
+<span class="sourceLineNo">2774</span> /**<a name="line.2774"></a>
+<span class="sourceLineNo">2775</span> * Tasktracker has a bug where changing the hadoop.log.dir system property<a name="line.2775"></a>
+<span class="sourceLineNo">2776</span> * will not change its internal static LOG_DIR variable.<a name="line.2776"></a>
+<span class="sourceLineNo">2777</span> */<a name="line.2777"></a>
+<span class="sourceLineNo">2778</span> private void forceChangeTaskLogDir() {<a name="line.2778"></a>
+<span class="sourceLineNo">2779</span> Field logDirField;<a name="line.2779"></a>
+<span class="sourceLineNo">2780</span> try {<a name="line.2780"></a>
+<span class="sourceLineNo">2781</span> logDirField = TaskLog.class.getDeclaredField("LOG_DIR");<a name="line.2781"></a>
+<span class="sourceLineNo">2782</span> logDirField.setAccessible(true);<a name="line.2782"></a>
+<span class="sourceLineNo">2783</span><a name="line.2783"></a>
+<span class="sourceLineNo">2784</span> Field modifiersField = Field.class.getDeclaredField("modifiers");<a name="line.2784"></a>
+<span class="sourceLineNo">2785</span> modifiersField.setAccessible(true);<a name="line.2785"></a>
+<span class="sourceLineNo">2786</span> modifiersField.setInt(logDirField, logDirField.getModifiers() & ~Modifier.FINAL);<a name="line.2786"></a>
+<span class="sourceLineNo">2787</span><a name="line.2787"></a>
+<span class="sourceLineNo">2788</span> logDirField.set(null, new File(hadoopLogDir, "userlogs"));<a name="line.2788"></a>
+<span class="sourceLineNo">2789</span> } catch (SecurityException e) {<a name="line.2789"></a>
+<span class="sourceLineNo">2790</span> throw new RuntimeException(e);<a name="line.2790"></a>
+<span class="sourceLineNo">2791</span> } catch (NoSuchFieldException e) {<a name="line.2791"></a>
+<span class="sourceLineNo">2792</span> // TODO Auto-generated catch block<a name="line.2792"></a>
+<span class="sourceLineNo">2793</span> throw new RuntimeException(e);<a name="line.2793"></a>
+<span class="sourceLineNo">2794</span> } catch (IllegalArgumentException e) {<a name="line.2794"></a>
+<span class="sourceLineNo">2795</span> throw new RuntimeException(e);<a name="line.2795"></a>
+<span class="sourceLineNo">2796</span> } catch (IllegalAccessException e) {<a name="line.2796"></a>
+<span class="sourceLineNo">2797</span> throw new RuntimeException(e);<a name="line.2797"></a>
+<span class="sourceLineNo">2798</span> }<a name="line.2798"></a>
+<span class="sourceLineNo">2799</span> }<a name="line.2799"></a>
+<span class="sourceLineNo">2800</span><a name="line.2800"></a>
+<span class="sourceLineNo">2801</span> /**<a name="line.2801"></a>
+<span class="sourceLineNo">2802</span> * Starts a <code>MiniMRCluster</code>. Call {@link #setFileSystemURI(String)} to use a different<a name="line.2802"></a>
+<span class="sourceLineNo">2803</span> * filesystem.<a name="line.2803"></a>
+<span class="sourceLineNo">2804</span> * @param servers The number of <code>TaskTracker</code>'s to start.<a name="line.2804"></a>
+<span class="sourceLineNo">2805</span> * @throws IOException When starting the cluster fails.<a name="line.2805"></a>
+<span class="sourceLineNo">2806</span> */<a name="line.2806"></a>
+<span class="sourceLineNo">2807</span> private void startMiniMapReduceCluster(final int servers) throws IOException {<a name="line.2807"></a>
+<span class="sourceLineNo">2808</span> if (mrCluster != null) {<a name="line.2808"></a>
+<span class="sourceLineNo">2809</span> throw new IllegalStateException("MiniMRCluster is already running");<a name="line.2809"></a>
+<span class="sourceLineNo">2810</span> }<a name="line.2810"></a>
+<span class="sourceLineNo">2811</span> LOG.info("Starting mini mapreduce cluster...");<a name="line.2811"></a>
+<span class="sourceLineNo">2812</span> setupClusterTestDir();<a name="line.2812"></a>
+<span class="sourceLineNo">2813</span> createDirsAndSetProperties();<a name="line.2813"></a>
+<span class="sourceLineNo">2814</span><a name="line.2814"></a>
+<span class="sourceLineNo">2815</span> forceChangeTaskLogDir();<a name="line.2815"></a>
+<span class="sourceLineNo">2816</span><a name="line.2816"></a>
+<span class="sourceLineNo">2817</span> //// hadoop2 specific settings<a name="line.2817"></a>
+<span class="sourceLineNo">2818</span> // Tests were failing because this process used 6GB of virtual memory and was getting killed.<a name="line.2818"></a>
+<span class="sourceLineNo">2819</span> // we up the VM usable so that processes don't get killed.<a name="line.2819"></a>
+<span class="sourceLineNo">2820</span> conf.setFloat("yarn.nodemanager.vmem-pmem-ratio", 8.0f);<a name="line.2820"></a>
+<span class="sourceLineNo">2821</span><a name="line.2821"></a>
+<span class="sourceLineNo">2822</span> // Tests were failing due to MAPREDUCE-4880 / MAPREDUCE-4607 against hadoop 2.0.2-alpha and<a name="line.2822"></a>
+<span class="sourceLineNo">2823</span> // this avoids the problem by disabling speculative task execution in tests.<a name="line.2823"></a>
+<span class="sourceLineNo">2824</span> conf.setBoolean("mapreduce.map.speculative", false);<a name="line.2824"></a>
+<span class="sourceLineNo">2825</span> conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.2825"></a>
+<span class="sourceLineNo">2826</span> ////<a name="line.2826"></a>
<span class="sourceLineNo">2827</span><a name="line.2827"></a>
-<span class="sourceLineNo">2828</span> jobConf.set("mapreduce.cluster.local.dir",<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span> conf.get("mapreduce.cluster.local.dir")); //Hadoop MiniMR overwrites this while it should not<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span> LOG.info("Mini mapreduce cluster started");<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span><a name="line.2831"></a>
-<span class="sourceLineNo">2832</span> // In hadoop2, YARN/MR2 starts a mini cluster with its own conf instance and updates settings.<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span> // Our HBase MR jobs need several of these settings in order to properly run. So we copy the<a name="line.2833"></a>
-<span class="sourceLineNo">2834</span> // necessary config properties here. YARN-129 required adding a few properties.<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span> conf.set("mapreduce.jobtracker.address", jobConf.get("mapreduce.jobtracker.address"));<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span> // this for mrv2 support; mr1 ignores this<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span> conf.set("mapreduce.framework.name", "yarn");<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span> conf.setBoolean("yarn.is.minicluster", true);<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span> String rmAddress = jobConf.get("yarn.resourcemanager.address");<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span> if (rmAddress != null) {<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span> conf.set("yarn.resourcemanager.address", rmAddress);<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span> }<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span> String historyAddress = jobConf.get("mapreduce.jobhistory.address");<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span> if (historyAddress != null) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span> conf.set("mapreduce.jobhistory.address", historyAddress);<a name="line.2845"></a>
-<span class="sourceLineNo">2846</span> }<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span> String schedulerAddress =<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span> jobConf.get("yarn.resourcemanager.scheduler.address");<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span> if (schedulerAddress != null) {<a name="line.2849"></a>
-<span class="sourceLineNo">2850</span> conf.set("yarn.resourcemanager.scheduler.address", schedulerAddress);<a name="line.2850"></a>
+<span class="sourceLineNo">2828</span> // Allow the user to override FS URI for this map-reduce cluster to use.<a name="line.2828"></a>
+<span class="sourceLineNo">2829</span> mrCluster = new MiniMRCluster(servers,<a name="line.2829"></a>
+<span class="sourceLineNo">2830</span> FS_URI != null ? FS_URI : FileSystem.get(conf).getUri().toString(), 1,<a name="line.2830"></a>
+<span class="sourceLineNo">2831</span> null, null, new JobConf(this.conf));<a name="line.2831"></a>
+<span class="sourceLineNo">2832</span> JobConf jobConf = MapreduceTestingShim.getJobConf(mrCluster);<a name="line.2832"></a>
+<span class="sourceLineNo">2833</span> if (jobConf == null) {<a name="line.2833"></a>
+<span class="sourceLineNo">2834</span> jobConf = mrCluster.createJobConf();<a name="line.2834"></a>
+<span class="sourceLineNo">2835</span> }<a name="line.2835"></a>
+<span class="sourceLineNo">2836</span><a name="line.2836"></a>
+<span class="sourceLineNo">2837</span> jobConf.set("mapreduce.cluster.local.dir",<a name="line.2837"></a>
+<span class="sourceLineNo">2838</span> conf.get("mapreduce.cluster.local.dir")); //Hadoop MiniMR overwrites this while it should not<a name="line.2838"></a>
+<span class="sourceLineNo">2839</span> LOG.info("Mini mapreduce cluster started");<a name="line.2839"></a>
+<span class="sourceLineNo">2840</span><a name="line.2840"></a>
+<span class="sourceLineNo">2841</span> // In hadoop2, YARN/MR2 starts a mini cluster with its own conf instance and updates settings.<a name="line.2841"></a>
+<span class="sourceLineNo">2842</span> // Our HBase MR jobs need several of these settings in order to properly run. So we copy the<a name="line.2842"></a>
+<span class="sourceLineNo">2843</span> // necessary config properties here. YARN-129 required adding a few properties.<a name="line.2843"></a>
+<span class="sourceLineNo">2844</span> conf.set("mapreduce.jobtracker.address", jobConf.get("mapreduce.jobtracker.address"));<a name="line.2844"></a>
+<span class="sourceLineNo">2845</span> // this for mrv2 support; mr1 ignores this<a name="line.2845"></a>
+<span class="sourceLineNo">2846</span> conf.set("mapreduce.framework.name", "yarn");<a name="line.2846"></a>
+<span class="sourceLineNo">2847</span> conf.setBoolean("yarn.is.minicluster", true);<a name="line.2847"></a>
+<span class="sourceLineNo">2848</span> String rmAddress = jobConf.get("yarn.resourcemanager.address");<a name="line.2848"></a>
+<span class="sourceLineNo">2849</span> if (rmAddress != null) {<a name="line.2849"></a>
+<span class="sourceLineNo">2850</span> conf.set("yarn.resourcemanager.address", rmAddress);<a name="line.2850"></a>
<span class="sourceLineNo">2851</span> }<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span> String mrJobHistoryWebappAddress =<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span> jobConf.get("mapreduce.jobhistory.webapp.address");<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span> if (mrJobHistoryWebappAddress != null) {<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span> conf.set("mapreduce.jobhistory.webapp.address", mrJobHistoryWebappAddress);<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span> }<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span> String yarnRMWebappAddress =<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span> jobConf.get("yarn.resourcemanager.webapp.address");<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span> if (yarnRMWebappAddress != null) {<a name="line.2859"></a>
-<span class="sourceLineNo">2860</span> conf.set("yarn.resourcemanager.webapp.address", yarnRMWebappAddress);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span> }<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span> }<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span><a name="line.2863"></a>
-<span class="sourceLineNo">2864</span> /**<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span> * Stops the previously started <code>MiniMRCluster</code>.<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span> */<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span> public void shutdownMiniMapReduceCluster() {<a name="line.2867"></a>
-<span class="sourceLineNo">2868</span> if (mrCluster != null) {<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span> LOG.info("Stopping mini mapreduce cluster...");<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span> mrCluster.shutdown();<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span> mrCluster = null;<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span> LOG.info("Mini mapreduce cluster stopped");<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span> }<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span> // Restore configuration to point to local jobtracker<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span> conf.set("mapreduce.jobtracker.address", "local");<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span> }<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span><a name="line.2877"></a>
-<span class="sourceLineNo">2878</span> /**<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span> * Create a stubbed out RegionServerService, mainly for getting FS.<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span> */<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span> public RegionServerServices createMockRegionServerService() throws IOException {<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span> return createMockRegionServerService((ServerName)null);<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span> }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span><a name="line.2884"></a>
-<span class="sourceLineNo">2885</span> /**<a name="line.2885"></a>
-<span class="sourceLineNo">2886</span> * Create a stubbed out RegionServerService, mainly for getting FS.<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span> * This version is used by TestTokenAuthentication<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span> */<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span> public RegionServerServices createMockRegionServerService(RpcServerInterface rpc) throws<a name="line.2889"></a>
-<span class="sourceLineNo">2890</span> IOException {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span> final MockRegionServerServices rss = new MockRegionServerServices(getZooKeeperWatcher());<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span> rss.setFileSystem(getTestFileSystem());<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span> rss.setRpcServer(rpc);<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span> return rss;<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span> }<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span><a name="line.2896"></a>
-<span class="sourceLineNo">2897</span> /**<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span> * Create a stubbed out RegionServerService, mainly for getting FS.<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span> * This version is used by TestOpenRegionHandler<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span> */<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span> public RegionServerServices createMockRegionServerService(ServerName name) throws IOException {<a name="line.2901"></a>
-<span class="sourceLineNo">2902</span> final MockRegionServerServices rss = new MockRegionServerServices(getZooKeeperWatcher(), name);<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span> rss.setFileSystem(getTestFileSystem());<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span> return rss;<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span> }<a name="line.2905"></a>
-<span class="sourceLineNo">2906</span><a name="line.2906"></a>
-<span class="sourceLineNo">2907</span> /**<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span> * Switches the logger for the given class to DEBUG level.<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span> *<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span> * @param clazz The class for which to switch to debug logging.<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span> */<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span> public void enableDebug(Class<?> clazz) {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span> Logger l = LoggerFactory.getLogger(clazz);<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span> if (l instanceof Log4JLogger) {<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span> ((Log4JLogger) l).getLogger().setLevel(org.apache.log4j.Level.DEBUG);<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span> } else if (l instanceof Log4jLoggerAdapter) {<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span> LogManager.getLogger(clazz).setLevel(org.apache.log4j.Level.DEBUG);<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span> } else if (l instanceof Jdk14Logger) {<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span> ((Jdk14Logger) l).getLogger().setLevel(java.util.logging.Level.ALL);<a name="line.2919"></a>
-<span class="sourceLineNo">2920</span> }<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span> }<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span><a name="line.2922"></a>
-<span class="sourceLineNo">2923</span> /**<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span> * Expire the Master's session<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span> * @throws Exception<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span> */<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span> public void expireMasterSession() throws Exception {<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span> HMaster master = getMiniHBaseCluster().getMaster();<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span> expireSession(master.getZooKeeper(), false);<a name="line.2929"></a>
+<span class="sourceLineNo">2852</span> String historyAddress = jobConf.get("mapreduce.jobhistory.address");<a name="line.2852"></a>
+<span class="sourceLineNo">2853</span> if (historyAddress != null) {<a name="line.2853"></a>
+<span class="sourceLineNo">2854</span> conf.set("mapreduce.jobhistory.address", historyAddress);<a name="line.2854"></a>
+<span class="sourceLineNo">2855</span> }<a name="line.2855"></a>
+<span class="sourceLineNo">2856</span> String schedulerAddress =<a name="line.2856"></a>
+<span class="sourceLineNo">2857</span> jobConf.get("yarn.resourcemanager.scheduler.address");<a name="line.2857"></a>
+<span class="sourceLineNo">2858</span> if (schedulerAddress != null) {<a name="line.2858"></a>
+<span class="sourceLineNo">2859</span> conf.set("yarn.resourcemanager.scheduler.address", schedulerAddress);<a name="line.2859"></a>
+<span class="sourceLineNo">2860</span> }<a name="line.2860"></a>
+<span class="sourceLineNo">2861</span> String mrJobHistoryWebappAddress =<a name="line.2861"></a>
+<span class="sourceLineNo">2862</span> jobConf.get("mapreduce.jobhistory.webapp.address");<a name="line.2862"></a>
+<span class="sourceLineNo">2863</span> if (mrJobHistoryWebappAddress != null) {<a name="line.2863"></a>
+<span class="sourceLineNo">2864</span> conf.set("mapreduce.jobhistory.webapp.address", mrJobHistoryWebappAddress);<a name="line.2864"></a>
+<span class="sourceLineNo">2865</span> }<a name="line.2865"></a>
+<span class="sourceLineNo">2866</span> String yarnRMWebappAddress =<a name="line.2866"></a>
+<span class="sourceLineNo">2867</span> jobConf.get("yarn.resourcemanager.webapp.address");<a name="line.2867"></a>
+<span class="sourceLineNo">2868</span> if (yarnRMWebappAddress != null) {<a name="line.2868"></a>
+<span class="sourceLineNo">2869</span> conf.set("yarn.resourcemanager.webapp.address", yarnRMWebappAddress);<a name="line.2869"></a>
+<span class="sourceLineNo">2870</span> }<a name="line.2870"></a>
+<span class="sourceLineNo">2871</span> }<a name="line.2871"></a>
+<span class="sourceLineNo">2872</span><a name="line.2872"></a>
+<span class="sourceLineNo">2873</span> /**<a name="line.2873"></a>
+<span class="sourceLineNo">2874</span> * Stops the previously started <code>MiniMRCluster</code>.<a name="line.2874"></a>
+<span class="sourceLineNo">2875</span> */<a name="line.2875"></a>
+<span class="sourceLineNo">2876</span> public void shutdownMiniMapReduceCluster() {<a name="line.2876"></a>
+<span class="sourceLineNo">2877</span> if (mrCluster != null) {<a name="line.2877"></a>
+<span class="sourceLineNo">2878</span> LOG.info("Stopping mini mapreduce cluster...");<a name="line.2878"></a>
+<span class="sourceLineNo">2879</span> mrCluster.shutdown();<a name="line.2879"></a>
+<span class="sourceLineNo">2880</span> mrCluster = null;<a name="line.2880"></a>
+<span class="sourceLineNo">2881</span> LOG.info("Mini mapreduce cluster stopped");<a name="line.2881"></a>
+<span class="sourceLineNo">2882</span> }<a name="line.2882"></a>
+<span class="sourceLineNo">2883</span> // Restore configuration to point to local jobtracker<a name="line.2883"></a>
+<span class="sourceLineNo">2884</span> conf.set("mapreduce.jobtracker.address", "local");<a name="line.2884"></a>
+<span class="sourceLineNo">2885</span> }<a name="line.2885"></a>
+<span class="sourceLineNo">2886</span><a name="line.2886"></a>
+<span class="sourceLineNo">2887</span> /**<a name="line.2887"></a>
+<span class="sourceLineNo">2888</span> * Create a stubbed out RegionServerService, mainly for getting FS.<a name="line.2888"></a>
+<span class="sourceLineNo">2889</span> */<a name="line.2889"></a>
+<span class="sourceLineNo">2890</span> public RegionServerServices createMockRegionServerService() throws IOException {<a name="line.2890"></a>
+<span class="sourceLineNo">2891</span> return createMockRegionServerService((ServerName)null);<a name="line.2891"></a>
+<span class="sourceLineNo">2892</span> }<a name="line.2892"></a>
+<span class="sourceLineNo">2893</span><a name="line.2893"></a>
+<span class="sourceLineNo">2894</span> /**<a name="line.2894"></a>
+<span class="sourceLineNo">2895</span> * Create a stubbed out RegionServerService, mainly for getting FS.<a name="line.2895"></a>
+<span class="sourceLineNo">2896</span> * This version is used by TestTokenAuthentication<a name="line.2896"></a>
+<span class="sourceLineNo">2897</span> */<a name="line.2897"></a>
+<span class="sourceLineNo">2898</span> public RegionServerServices createMockRegionServerService(RpcServerInterface rpc) throws<a name="line.2898"></a>
+<span class="sourceLineNo">2899</span> IOException {<a name="line.2899"></a>
+<span class="sourceLineNo">2900</span> final MockRegionServerServices rss = new MockRegionServerServices(getZooKeeperWatcher());<a name="line.2900"></a>
+<span class="sourceLineNo">2901</span> rss.setFileSystem(getTestFileSystem());<a name="line.2901"></a>
+<span class="sourceLineNo">2902</span> rss.setRpcServer(rpc);<a name="line.2902"></a>
+<span class="sourceLineNo">2903</span> return rss;<a name="line.2903"></a>
+<span class="sourceLineNo">2904</span> }<a name="line.2904"></a>
+<span class="sourceLineNo">2905</span><a name="line.2905"></a>
+<span class="sourceLineNo">2906</span> /**<a name="line.2906"></a>
+<span class="sourceLineNo">2907</span> * Create a stubbed out RegionServerService, mainly for getting FS.<a name="line.2907"></a>
+<span class="sourceLineNo">2908</span> * This version is used by TestOpenRegionHandler<a name="line.2908"></a>
+<span class="sourceLineNo">2909</span> */<a name="line.2909"></a>
+<span class="sourceLineNo">2910</span> public RegionServerServices createMockRegionServerService(ServerName name) throws IOException {<a name="line.2910"></a>
+<span class="sourceLineNo">2911</span> final MockRegionServerServices rss = new MockRegionServerServices(getZooKeeperWatcher(), name);<a name="line.2911"></a>
+<span class="sourceLineNo">2912</span> rss.setFileSystem(getTestFileSystem());<a name="line.2912"></a>
+<span class="sourceLineNo">2913</span> return rss;<a name="line.2913"></a>
+<span class="sourceLineNo">2914</span> }<a name="line.2914"></a>
+<span class="sourceLineNo">2915</span><a name="line.2915"></a>
+<span class="sourceLineNo">2916</span> /**<a name="line.2916"></a>
+<span class="sourceLineNo">2917</span> * Switches the logger for the given class to DEBUG level.<a name="line.2917"></a>
+<span class="sourceLineNo">2918</span> *<a name="line.2918"></a>
+<span class="sourceLineNo">2919</span> * @param clazz The class for which to switch to debug logging.<a name="line.2919"></a>
+<span class="sourceLineNo">2920</span> */<a name="line.2920"></a>
+<span class="sourceLineNo">2921</span> public void enableDebug(Class<?> clazz) {<a name="line.2921"></a>
+<span class="sourceLineNo">2922</span> Logger l = LoggerFactory.getLogger(clazz);<a name="line.2922"></a>
+<span class="sourceLineNo">2923</span> if (l instanceof Log4JLogger) {<a name="line.2923"></a>
+<span class="sourceLineNo">2924</span> ((Log4JLogger) l).getLogger().setLevel(org.apache.log4j.Level.DEBUG);<a name="line.2924"></a>
+<span class="sourceLineNo">2925</span> } else if (l instanceof Log4jLoggerAdapter) {<a name="line.2925"></a>
+<span class="sourceLineNo">2926</span> LogManager.getLogger(clazz).setLevel(org.apache.log4j.Level.DEBUG);<a name="line.2926"></a>
+<span class="sourceLineNo">2927</span> } else if (l instanceof Jdk14Logger) {<a name="line.2927"></a>
+<span class="sourceLineNo">2928</span> ((Jdk14Logger) l).getLogger().setLevel(java.util.logging.Level.ALL);<a name="line.2928"></a>
+<span class="sourceLineNo">2929</span> }<a name="line.2929"></a>
<span class="sourceLineNo">2930</span> }<a name="line.2930"></a>
<span class="sourceLineNo">2931</span><a name="line.2931"></a>
<span class="sourceLineNo">2932</span> /**<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span> * Expire a region server's session<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span> * @param index which RS<a name="line.2934"></a>
+<span class="sourceLineNo">2933</span> * Expire the Master's session<a name="line.2933"></a>
+<span class="sourceLineNo">2934</span> * @throws Exception<a name="line.2934"></a>
<span class="sourceLineNo">2935</span> */<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span> public void expireRegionServerSession(int index) throws Exception {<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span> HRegionServer rs = getMiniHBaseCluster().getRegionServer(index);<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span> expireSession(rs.getZooKeeper(), false);<a name="line.2938"></a>
-<span class="sourceLineNo">2939</span> decrementMinRegionServerCount();<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span> }<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span><a name="line.2941"></a>
-<span class="sourceLineNo">2942</span> private void decrementMinRegionServerCount() {<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span> // decrement the count for this.conf, for newly spwaned master<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span> // this.hbaseCluster shares this configuration too<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span> decrementMinRegionServerCount(getConfiguration());<a name="line.2945"></a>
-<span class="sourceLineNo">2946</span><a name="line.2946"></a>
-<span class="sourceLineNo">2947</span> // each master thread keeps a copy of configuration<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span> for (MasterThread master : getHBaseCluster().getMasterThreads()) {<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span> decrementMinRegionServerCount(master.getMaster().getConfiguration());<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span> }<a name="line.2950"></a>
-<span class="sourceLineNo">2951</span> }<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span><a name="line.2952"></a>
-<span class="sourceLineNo">2953</span> private void decrementMinRegionServerCount(Configuration conf) {<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span> int currentCount = conf.getInt(<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span> ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span> if (currentCount != -1) {<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span> conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART,<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span> Math.max(currentCount - 1, 1));<a name="line.2958"></a>
+<span class="sourceLineNo">2936</span> public void expireMasterSession() throws Exception {<a name="line.2936"></a>
+<span class="sourceLineNo">2937</span> HMaster master = getMiniHBaseCluster().getMaster();<a name="line.2937"></a>
+<span class="sourceLineNo">2938</span> expireSession(master.getZooKeeper(), false);<a name="line.2938"></a>
+<span class="sourceLineNo">2939</span> }<a name="line.2939"></a>
+<span class="sourceLineNo">2940</span><a name="line.2940"></a>
+<span class="sourceLineNo">2941</span> /**<a name="line.2941"></a>
+<span class="sourceLineNo">2942</span> * Expire a region server's session<a name="line.2942"></a>
+<span class="sourceLineNo">2943</span> * @param index which RS<a name="line.2943"></a>
+<span class="sourceLineNo">2944</span> */<a name="line.2944"></a>
+<span class="sourceLineNo">2945</span> public void expireRegionServerSession(int index) throws Exception {<a name="line.2945"></a>
+<span class="sourceLineNo">2946</span> HRegionServer rs = getMiniHBaseCluster().getRegionServer(index);<a name="line.2946"></a>
+<span class="sourceLineNo">2947</span> expireSession(rs.getZooKeeper(), false);<a name="line.2947"></a>
+<span class="sourceLineNo">2948</span> decrementMinRegionServerCount();<a name="line.2948"></a>
+<span class="sourceLineNo">2949</span> }<a name="line.2949"></a>
+<span class="sourceLineNo">2950</span><a name="line.2950"></a>
+<span class="sourceLineNo">2951</span> private void decrementMinRegionServerCount() {<a name="line.2951"></a>
+<span class="sourceLineNo">2952</span> // decrement the count for this.conf, for newly spwaned master<a name="line.2952"></a>
+<span class="sourceLineNo">2953</span> // this.hbaseCluster shares this configuration too<a name="line.2953"></a>
+<span class="sourceLineNo">2954</span> decrementMinRegionServerCount(getConfiguration());<a name="line.2954"></a>
+<span class="sourceLineNo">2955</span><a name="line.2955"></a>
+<span class="sourceLineNo">2956</span> // each master thread keeps a copy of configuration<a name="line.2956"></a>
+<span class="sourceLineNo">2957</span> for (MasterThread master : getHBaseCluster().getMasterThreads()) {<a name="line.2957"></a>
+<span class="sourceLineNo">2958</span> decrementMinRegionServerCount(master.getMaster().getConfiguration());<a name="line.2958"></a>
<span class="sourceLineNo">2959</span> }<a name="line.2959"></a>
<span class="sourceLineNo">2960</span> }<a name="line.2960"></a>
<span class="sourceLineNo">2961</span><a name="line.2961"></a>
-<span class="sourceLineNo">2962</span> public void expireSession(ZKWatcher nodeZK) throws Exception {<a name="line.2962"></a>
-<span class="sourceLineNo">2963</span> expireSession(nodeZK, false);<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span> }<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span><a name="line.2965"></a>
-<span class="sourceLineNo">2966</span> /**<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span> * Expire a ZooKeeper session as recommended in ZooKeeper documentation<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span> * http://hbase.apache.org/book.html#trouble.zookeeper<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span> * There are issues when doing this:<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span> * [1] http://www.mail-archive.com/dev@zookeeper.apache.org/msg01942.html<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span> * [2] https://issues.apache.org/jira/browse/ZOOKEEPER-1105<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span> *<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span> * @param nodeZK - the ZK watcher to expire<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span> * @param checkStatus - true to check if we can create a Table with the<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span> * current configuration.<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span> */<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span> public void expireSession(ZKWatcher nodeZK, boolean checkStatus)<a name="line.2977"></a>
-<span class="sourceLineNo">2978</span> throws Exception {<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span> Configuration c = new Configuration(this.conf);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span> String quorumServers = ZKConfig.getZKQuorumServersString(c);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span> ZooKeeper zk = nodeZK.getRecoverableZooKeeper().getZooKeeper();<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span> byte[] password = zk.getSessionPasswd();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span> long sessionID = zk.getSessionId();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span><a name="line.2984"></a>
-<span class="sourceLineNo">2985</span> // Expiry seems to be asynchronous (see comment from P. Hunt in [1]),<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span> // so we create a first watcher to be sure that the<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span> // event was sent. We expect that if our watcher receives the event<a name="line.2987"></a>
-<span class="sourceLineNo">2988</span> // other watchers on the same machine will get is as well.<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span> // When we ask to close the connection, ZK does not close it before<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span> // we receive all the events, so don't have to capture the event, just<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span> // closing the connection should be enough.<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span> ZooKeeper monitor = new ZooKeeper(quorumServers,<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span> 1000, new org.apache.zookeeper.Watcher(){<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span> @Override<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span> public void process(WatchedEvent watchedEvent) {<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span> LOG.info("Monitor ZKW received event="+watchedEvent);<a name="line.2996"></a>
-<span class="sourceLineNo">2997</span> }<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span> } , sessionID, password);<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span><a name="line.2999"></a>
-<span class="sourceLineNo">3000</span> // Making it expire<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span> ZooKeeper newZK = new ZooKeeper(quorumServers,<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span> 1000, EmptyWatcher.instance, sessionID, password);<a name="line.3002"></a>
-<span class="sourceLineNo">3003</span><a name="line.3003"></a>
-<span class="sourceLineNo">3004</span> //ensure that we have connection to the server before closing down, otherwise<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span> //the close session event will be eaten out before we start CONNECTING state<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span> long start = System.currentTimeMillis();<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span> while (newZK.getState() != States.CONNECTED<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span> && System.currentTimeMillis() - start < 1000) {<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span> Thread.sleep(1);<a name="line.3009"></a>
-<span class="sourceLineNo">3010</span> }<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span> newZK.close();<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span> LOG.info("ZK Closed Session 0x" + Long.toHexString(sessionID));<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span><a name="line.3013"></a>
-<span class="sourceLineNo">3014</span> // Now closing & waiting to be sure that the clients get it.<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span> monitor.close();<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span> if (checkStatus) {<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span> getConnection().getTable(TableName.META_TABLE_NAME).close();<a name="line.3018"></a>
+<span class="sourceLineNo">2962</span> private void decrementMinRegionServerCount(Configuration conf) {<a name="line.2962"></a>
+<span class="sourceLineNo">2963</span> int currentCount = conf.getInt(<a name="line.2963"></a>
+<span class="sourceLineNo">2964</span> ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.2964"></a>
+<span class="sourceLineNo">2965</span> if (currentCount != -1) {<a name="line.2965"></a>
+<span class="sourceLineNo">2966</span> conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART,<a name="line.2966"></a>
+<span class="sourceLineNo">2967</span> Math.max(currentCount - 1, 1));<a name="line.2967"></a>
+<span class="sourceLineNo">2968</span> }<a name="line.2968"></a>
+<span class="sourceLineNo">2969</span> }<a name="line.2969"></a>
+<span class="sourceLineNo">2970</span><a name="line.2970"></a>
+<span class="sourceLineNo">2971</span> public void expireSession(ZKWatcher nodeZK) throws Exception {<a name="line.2971"></a>
+<span class="sourceLineNo">2972</span> expireSession(nodeZK, false);<a name="line.2972"></a>
+<span class="sourceLineNo">2973</span> }<a name="line.2973"></a>
+<span class="sourceLineNo">2974</span><a name="line.2974"></a>
+<span class="sourceLineNo">2975</span> /**<a name="line.2975"></a>
+<span class="sourceLineNo">2976</span> * Expire a ZooKeeper session as recommended in ZooKeeper documentation<a name="line.2976"></a>
+<span class="sourceLineNo">2977</span> * http://hbase.apache.org/book.html#trouble.zookeeper<a name="line.2977"></a>
+<span class="sourceLineNo">2978</span> * There are issues when doing this:<a name="line.2978"></a>
+<span class="sourceLineNo">2979</span> * [1] http://www.mail-archive.com/dev@zookeeper.apache.org/msg01942.html<a name="line.2979"></a>
+<span class="sourceLineNo">2980</span> * [2] https://issues.apache.org/jira/browse/ZOOKEEPER-1105<a name="line.2980"></a>
+<span class="sourceLineNo">2981</span> *<a name="line.2981"></a>
+<span class="sourceLineNo">2982</span> * @param nodeZK - the ZK watcher to expire<a name="line.2982"></a>
+<span class="sourceLineNo">2983</span> * @param checkStatus - true to check if we can create a Table with the<a name="line.2983"></a>
+<span class="sourceLineNo">2984</span> * current configuration.<a name="line.2984"></a>
+<span class="sourceLineNo">2985</span> */<a name="line.2985"></a>
+<span class="sourceLineNo">2986</span> public void expireSession(ZKWatcher nodeZK, boolean checkStatus)<a name="line.2986"></a>
+<span class="sourceLineNo">2987</span> throws Exception {<a name="line.2987"></a>
+<span class="sourceLineNo">2988</span> Configuration c = new Configuration(this.conf);<a name="line.2988"></a>
+<span class="sourceLineNo">2989</span> String quorumServers = ZKConfig.getZKQuorumServersString(c);<a name="line.2989"></a>
+<span class="sourceLineNo">2990</span> ZooKeeper zk = nodeZK.getRecoverableZooKeeper().getZooKeeper();<a name="line.2990"></a>
+<span class="sourceLineNo">2991</span> byte[] password = zk.getSessionPasswd();<a name="line.2991"></a>
+<span class="sourceLineNo">2992</span> long sessionID = zk.getSessionId();<a name="line.2992"></a>
+<span class="sourceLineNo">2993</span><a name="line.2993"></a>
+<span class="sourceLineNo">2994</span> // Expiry seems to be asynchronous (see comment from P. Hunt in [1]),<a name="line.2994"></a>
+<span class="sourceLineNo">2995</span> // so we create a first watcher to be sure that the<a name="line.2995"></a>
+<span class="sourceLineNo">2996</span> // event was sent. We expect that if our watcher receives the event<a name="line.2996"></a>
+<span class="sourceLineNo">2997</span> // other watchers on the same machine will get is as well.<a name="line.2997"></a>
+<span class="sourceLineNo">2998</span> // When we ask to close the connection, ZK does not close it before<a name="line.2998"></a>
+<span class="sourceLineNo">2999</span> // we receive all the events, so don't have to capture the event, just<a name="line.2999"></a>
+<span class="sourceLineNo">3000</span> // closing the connection should be enough.<a name="line.3000"></a>
+<span class="sourceLineNo">3001</span> ZooKeeper monitor = new ZooKeeper(quorumServers,<a name="line.3001"></a>
+<span class="sourceLineNo">3002</span> 1000, new org.apache.zookeeper.Watcher(){<a name="line.3002"></a>
+<span class="sourceLineNo">3003</span> @Override<a name="line.3003"></a>
+<span class="sourceLineNo">3004</span> public void process(WatchedEvent watchedEvent) {<a name="line.3004"></a>
+<span class="sourceLineNo">3005</span> LOG.info("Monitor ZKW received event="+watchedEvent);<a name="line.3005"></a>
+<span class="sourceLineNo">3006</span> }<a name="line.3006"></a>
+<span class="sourceLineNo">3007</span> } , sessionID, password);<a name="line.3007"></a>
+<span class="sourceLineNo">3008</span><a name="line.3008"></a>
+<span class="sourceLineNo">3009</span> // Making it expire<a name="line.3009"></a>
+<span class="sourceLineNo">3010</span> ZooKeeper newZK = new ZooKeeper(quorumServers,<a name="line.3010"></a>
+<span class="sourceLineNo">3011</span> 1000, EmptyWatcher.instance, sessionID, password);<a name="line.3011"></a>
+<span class="sourceLineNo">3012</span><a name="line.3012"></a>
+<span class="sourceLineNo">3013</span> //ensure that we have connection to the server before closing down, otherwise<a name="line.3013"></a>
+<span class="sourceLineNo">3014</span> //the close session event will be eaten out before we start CONNECTING state<a name="line.3014"></a>
+<span class="sourceLineNo">3015</span> long start = System.currentTimeMillis();<a name="line.3015"></a>
+<span class="sourceLineNo">3016</span> while (newZK.getState() != States.CONNECTED<a name="line.3016"></a>
+<span class="sourceLineNo">3017</span> && System.currentTimeMillis() - start < 1000) {<a name="line.3017"></a>
+<span class="sourceLineNo">3018</span> Thread.sleep(1);<a name="line.3018"></a>
<span class="sourceLineNo">3019</span> }<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span> }<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span><a name="line.3021"></a>
-<span class="sourceLineNo">3022</span> /**<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span> * Get the Mini HBase cluster.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span> *<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span> * @return hbase cluster<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span> * @see #getHBaseClusterInterface()<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span> */<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span> public MiniHBaseCluster getHBaseCluster() {<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span> return getMiniHBaseCluster();<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span> }<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span><a name="line.3031"></a>
-<span class="sourceLineNo">3032</span> /**<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span> * Returns the HBaseCluster instance.<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span> * <p>Returned object can be any of the subclasses of HBaseCluster, and the<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span> * tests referring this should not assume that the cluster is a mini cluster or a<a name="line.3035"></a>
-<span class="sourceLineNo">3036</span> * distributed one. If the test only works on a mini cluster, then specific<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span> * method {@link #getMiniHBaseCluster()} can be used instead w/o the<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span> * need to type-cast.<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span> */<a name="line.3039"></a>
-<span class="sourceLineNo">3040</span> public HBaseCluster getHBaseClusterInterface() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span> //implementation note: we should rename this method as #getHBaseCluster(),<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span> //but this would require refactoring 90+ calls.<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span> return hbaseCluster;<a name="line.3043"></a>
-<span class="sourceLineNo">3044</span> }<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span><a name="line.3045"></a>
-<span class="sourceLineNo">3046</span> private void initConnection() throws IOException {<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span> User user = UserProvider.instantiate(conf).getCurrent();<a name="line.3047"></a>
-<span class="sourceLineNo">3048</span> this.asyncConnection = ClusterConnectionFactory.createAsyncClusterConnection(conf, null, user);<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span> }<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span><a name="line.3050"></a>
-<span class="sourceLineNo">3051</span> /**<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span> * Get a Connection to the cluster. Not thread-safe (This class needs a lot of work to make it<a name="line.3052"></a>
-<span class="sourceLineNo">3053</span> * thread-safe).<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span> * @return A Connection that can be shared. Don't close. Will be closed on shutdown of cluster.<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span> */<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span> public Connection getConnection() throws IOException {<a name="line.3056"></a>
-<span class="sourceLineNo">3057</span> if (this.asyncConnection == null) {<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span> initConnection();<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span> }<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span> return this.asyncConnection.toConnection();<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span> }<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span><a name="line.3062"></a>
-<span class="sourceLineNo">3063</span> public AsyncClusterConnection getAsyncConnection() throws IOException {<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span> if (this.asyncConnection == null) {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span> initConnection();<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span> }<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span> return this.asyncConnection;<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span> }<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span><a name="line.3069"></a>
-<span class="sourceLineNo">3070</span> public void closeConnection() throws IOException {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span> Closeables.close(hbaseAdmin, true);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span> Closeables.close(asyncConnection, true);<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span> this.hbaseAdmin = null;<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span> this.asyncConnection = null;<a name="line.3074"></a>
-<span class="sourceLineNo">3075</span> }<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span><a name="line.3076"></a>
-<span class="sourceLineNo">3077</span> /**<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span> * Returns an Admin instance which is shared between HBaseTestingUtility instance users.<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span> * Closing it has no effect, it will be closed automatically when the cluster shutdowns<a name="line.3079"></a>
-<span class="sourceLineNo">3080</span> */<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span> public synchronized Admin getAdmin() throws IOException {<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span> if (hbaseAdmin == null){<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span> this.hbaseAdmin = getConnection().getAdmin();<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span> }<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span> return hbaseAdmin;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span> }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span><a name="line.3087"></a>
-<span class="sourceLineNo">3088</span> private Admin hbaseAdmin = null;<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span><a name="line.3089"></a>
-<span class="sourceLineNo">3090</span> /**<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span> * Returns an {@link Hbck} instance. Needs be closed when done.<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span> */<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span> public Hbck getHbck() throws IOException {<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span> return getConnection().getHbck();<a name="line.3094"></a>
+<span class="sourceLineNo">3020</span> newZK.close();<a name="line.3020"></a>
+<span class="sourceLineNo">3021</span> LOG.info("ZK Closed Session 0x" + Long.toHexString(sessionID));<a name="line.3021"></a>
+<span class="sourceLineNo">3022</span><a name="line.3022"></a>
+<span class="sourceLineNo">3023</span> // Now closing & waiting to be sure that the clients get it.<a name="line.3023"></a>
+<span class="sourceLineNo">3024</span> monitor.close();<a name="line.3024"></a>
+<span class="sourceLineNo">3025</span><a name="line.3025"></a>
+<span class="sourceLineNo">3026</span> if (checkStatus) {<a name="line.3026"></a>
+<span class="sourceLineNo">3027</span> getConnection().getTable(TableName.META_TABLE_NAME).close();<a name="line.3027"></a>
+<span class="sourceLineNo">3028</span> }<a name="line.3028"></a>
+<span class="sourceLineNo">3029</span> }<a name="line.3029"></a>
+<span class="sourceLineNo">3030</span><a name="line.3030"></a>
+<span class="sourceLineNo">3031</span> /**<a name="line.3031"></a>
+<span class="sourceLineNo">3032</span> * Get the Mini HBase cluster.<a name="line.3032"></a>
+<span class="sourceLineNo">3033</span> *<a name="line.3033"></a>
+<span class="sourceLineNo">3034</span> * @return hbase cluster<a name="line.3034"></a>
+<span class="sourceLineNo">3035</span> * @see #getHBaseClusterInterface()<a name="line.3035"></a>
+<span class="sourceLineNo">3036</span> */<a name="line.3036"></a>
+<span class="sourceLineNo">3037</span> public MiniHBaseCluster getHBaseCluster() {<a name="line.3037"></a>
+<span class="sourceLineNo">3038</span> return getMiniHBaseCluster();<a name="line.3038"></a>
+<span class="sourceLineNo">3039</span> }<a name="line.3039"></a>
+<span class="sourceLineNo">3040</span><a name="line.3040"></a>
+<span class="sourceLineNo">3041</span> /**<a name="line.3041"></a>
+<span class="sourceLineNo">3042</span> * Returns the HBaseCluster instance.<a name="line.3042"></a>
+<span class="sourceLineNo">3043</span> * <p>Returned object can be any of the subclasses of HBaseCluster, and the<a name="line.3043"></a>
+<span class="sourceLineNo">3044</span> * tests referring this should not assume that the cluster is a mini cluster or a<a name="line.3044"></a>
+<span class="sourceLineNo">3045</span> * distributed one. If the test only works on a mini cluster, then specific<a name="line.3045"></a>
+<span class="sourceLineNo">3046</span> * method {@link #getMiniHBaseCluster()} can be used instead w/o the<a name="line.3046"></a>
+<span class="sourceLineNo">3047</span> * need to type-cast.<a name="line.3047"></a>
+<span class="sourceLineNo">3048</span> */<a name="line.3048"></a>
+<span class="sourceLineNo">3049</span> public HBaseCluster getHBaseClusterInterface() {<a name="line.3049"></a>
+<span class="sourceLineNo">3050</span> //implementation note: we should rename this method as #getHBaseCluster(),<a name="line.3050"></a>
+<span class="sourceLineNo">3051</span> //but this would require refactoring 90+ calls.<a name="line.3051"></a>
+<span class="sourceLineNo">3052</span> return hbaseCluster;<a name="line.3052"></a>
+<span class="sourceLineNo">3053</span> }<a name="line.3053"></a>
+<span class="sourceLineNo">3054</span><a name="line.3054"></a>
+<span class="sourceLineNo">3055</span> private void initConnection() throws IOException {<a name="line.3055"></a>
+<span class="sourceLineNo">3056</span> User user = UserProvider.instantiate(conf).getCurrent();<a name="line.3056"></a>
+<span class="sourceLineNo">3057</span> this.asyncConnection = ClusterConnectionFactory.createAsyncClusterConnection(conf, null, user);<a name="line.3057"></a>
+<span class="sourceLineNo">3058</span> }<a name="line.3058"></a>
+<span class="sourceLineNo">3059</span><a name="line.3059"></a>
+<span class="sourceLineNo">3060</span> /**<a name="line.3060"></a>
+<span class="sourceLineNo">3061</span> * Get a Connection to the cluster. Not thread-safe (This class needs a lot of work to make it<a name="line.3061"></a>
+<span class="sourceLineNo">3062</span> * thread-safe).<a name="line.3062"></a>
+<span class="sourceLineNo">3063</span> * @return A Connection that can be shared. Don't close. Will be closed on shutdown of cluster.<a name="line.3063"></a>
+<span class="sourceLineNo">3064</span> */<a name="line.3064"></a>
+<span class="sourceLineNo">3065</span> public Connection getConnection() throws IOException {<a name="line.3065"></a>
+<span class="sourceLineNo">3066</span> if (this.asyncConnection == null) {<a name="line.3066"></a>
+<span class="sourceLineNo">3067</span> initConnection();<a name="line.3067"></a>
+<span class="sourceLineNo">3068</span> }<a name="line.3068"></a>
+<span class="sourceLineNo">3069</span> return this.asyncConnection.toConnection();<a name="line.3069"></a>
+<span class="sourceLineNo">3070</span> }<a name="line.3070"></a>
+<span class="sourceLineNo">3071</span><a name="line.3071"></a>
+<span class="sourceLineNo">3072</span> public AsyncClusterConnection getAsyncConnection() throws IOException {<a name="line.3072"></a>
+<span class="sourceLineNo">3073</span> if (this.asyncConnection == null) {<a name="line.3073"></a>
+<span class="sourceLineNo">3074</span> initConnection();<a name="line.3074"></a>
+<span class="sourceLineNo">3075</span> }<a name="line.3075"></a>
+<span class="sourceLineNo">3076</span> return this.asyncConnection;<a name="line.3076"></a>
+<span class="sourceLineNo">3077</span> }<a name="line.3077"></a>
+<span class="sourceLineNo">3078</span><a name="line.3078"></a>
+<span class="sourceLineNo">3079</span> public void closeConnection() throws IOException {<a name="line.3079"></a>
+<span class="sourceLineNo">3080</span> Closeables.close(hbaseAdmin, true);<a name="line.3080"></a>
+<span class="sourceLineNo">3081</span> Closeables.close(asyncConnection, true);<a name="line.3081"></a>
+<span class="sourceLineNo">3082</span> this.hbaseAdmin = null;<a name="line.3082"></a>
+<span class="sourceLineNo">3083</span> this.asyncConnection = null;<a name="line.3083"></a>
+<span class="sourceLineNo">3084</span> }<a name="line.3084"></a>
+<span class="sourceLineNo">3085</span><a name="line.3085"></a>
+<span class="sourceLineNo">3086</span> /**<a name="line.3086"></a>
+<span class="sourceLineNo">3087</span> * Returns an Admin instance which is shared between HBaseTestingUtility instance users.<a name="line.3087"></a>
+<span class="sourceLineNo">3088</span> * Closing it has no effect, it will be closed automatically when the cluster shutdowns<a name="line.3088"></a>
+<span class="sourceLineNo">3089</span> */<a name="line.3089"></a>
+<span class="sourceLineNo">3090</span> public synchronized Admin getAdmin() throws IOException {<a name="line.3090"></a>
+<span class="sourceLineNo">3091</span> if (hbaseAdmin == null){<a name="line.3091"></a>
+<span class="sourceLineNo">3092</span> this.hbaseAdmin = getConnection().getAdmin();<a name="line.3092"></a>
+<span class="sourceLineNo">3093</span> }<a name="line.3093"></a>
+<span class="sourceLineNo">3094</span> return hbaseAdmin;<a name="line.3094"></a>
<span class="sourceLineNo">3095</span> }<a name="line.3095"></a>
<span class="sourceLineNo">3096</span><a name="line.3096"></a>
-<span class="sourceLineNo">3097</span> /**<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span> * Unassign the named region.<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span> *<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span> * @param regionName The region to unassign.<a name="line.3100"></a>
+<span class="sourceLineNo">3097</span> private Admin hbaseAdmin = null;<a name="line.3097"></a>
+<span class="sourceLineNo">3098</span><a name="line.3098"></a>
+<span class="sourceLineNo">3099</span> /**<a name="line.3099"></a>
+<span class="sourceLineNo">3100</span> * Returns an {@link Hbck} instance. Needs be closed when done.<a name="line.3100"></a>
<span class="sourceLineNo">3101</span> */<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span> public void unassignRegion(String regionName) throws IOException {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span> unassignRegion(Bytes.toBytes(regionName));<a name="line.3103"></a>
+<span class="sourceLineNo">3102</span> public Hbck getHbck() throws IOException {<a name="line.3102"></a>
+<span class="sourceLineNo">3103</span> return getConnection().getHbck();<a name="line.3103"></a>
<span class="sourceLineNo">3104</span> }<a name="line.3104"></a>
<span class="sourceLineNo">3105</span><a name="line.3105"></a>
<span class="sourceLineNo">3106</span> /**<a name="line.3106"></a>
@@ -3116,1324 +3116,1333 @@
<span class="sourceLineNo">3108</span> *<a name="line.3108"></a>
<span class="sourceLineNo">3109</span> * @param regionName The region to unassign.<a name="line.3109"></a>
<span class="sourceLineNo">3110</span> */<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span> public void unassignRegion(byte[] regionName) throws IOException {<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span> getAdmin().unassign(regionName, true);<a name="line.3112"></a>
+<span class="sourceLineNo">3111</span> public void unassignRegion(String regionName) throws IOException {<a name="line.3111"></a>
+<span class="sourceLineNo">3112</span> unassignRegion(Bytes.toBytes(regionName));<a name="line.3112"></a>
<span class="sourceLineNo">3113</span> }<a name="line.3113"></a>
<span class="sourceLineNo">3114</span><a name="line.3114"></a>
<span class="sourceLineNo">3115</span> /**<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span> * Closes the region containing the given row.<a name="line.3116"></a>
+<span class="sourceLineNo">3116</span> * Unassign the named region.<a name="line.3116"></a>
<span class="sourceLineNo">3117</span> *<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span> * @param row The row to find the containing region.<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span> * @param table The table to find the region.<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span> */<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span> public void unassignRegionByRow(String row, RegionLocator table) throws IOException {<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span> unassignRegionByRow(Bytes.toBytes(row), table);<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span> }<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span><a name="line.3124"></a>
-<span class="sourceLineNo">3125</span> /**<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span> * Closes the region containing the given row.<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span> *<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span> * @param row The row to find the containing region.<a name="line.3128"></a>
-<span class="sourceLineNo">3129</span> * @param table The table to find the region.<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span> * @throws IOException<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span> */<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span> public void unassignRegionByRow(byte[] row, RegionLocator table) throws IOException {<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span> HRegionLocation hrl = table.getRegionLocation(row);<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span> unassignRegion(hrl.getRegion().getRegionName());<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span> }<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span><a name="line.3136"></a>
-<span class="sourceLineNo">3137</span> /*<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span> * Retrieves a splittable region randomly from tableName<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span> *<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span> * @param tableName name of table<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span> * @param maxAttempts maximum number of attempts, unlimited for value of -1<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span> * @return the HRegion chosen, null if none was found within limit of maxAttempts<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span> */<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span> public HRegion getSplittableRegion(TableName tableName, int maxAttempts) {<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span> List<HRegion> regions = getHBaseCluster().getRegions(tableName);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span> int regCount = regions.size();<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span> Set<Integer> attempted = new HashSet<>();<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span> int idx;<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span> int attempts = 0;<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span> do {<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span> regions = getHBaseCluster().getRegions(tableName);<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span> if (regCount != regions.size()) {<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span> // if there was region movement, clear attempted Set<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span> attempted.clear();<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span> }<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span> regCount = regions.size();<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span> // There are chances that before we get the region for the table from an RS the region may<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span> // be going for CLOSE. This may be because online schema change is enabled<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span> if (regCount > 0) {<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span> idx = random.nextInt(regCount);<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span> // if we have just tried this region, there is no need to try again<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span> if (attempted.contains(idx))<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span> continue;<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span> try {<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span> regions.get(idx).checkSplit();<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span> return regions.get(idx);<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span> } catch (Exception ex) {<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span> LOG.warn("Caught exception", ex);<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span> attempted.add(idx);<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span> }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span> }<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span> attempts++;<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span> } while (maxAttempts == -1 || attempts < maxAttempts);<a name="line.3173"></a>
-<span class="sourceLineNo">3174</span> return null;<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span> }<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span><a name="line.3176"></a>
-<span class="sourceLineNo">3177</span> public MiniDFSCluster getDFSCluster() {<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span> return dfsCluster;<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span> }<a name="line.3179"></a>
-<span class="sourceLineNo">3180</span><a name="line.3180"></a>
-<span class="sourceLineNo">3181</span> public void setDFSCluster(MiniDFSCluster cluster) throws IllegalStateException, IOException {<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span> setDFSCluster(cluster, true);<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span> }<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span><a name="line.3184"></a>
-<span class="sourceLineNo">3185</span> /**<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span> * Set the MiniDFSCluster<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span> * @param cluster cluster to use<a name="line.3187"></a>
-<span class="sourceLineNo">3188</span> * @param requireDown require the that cluster not be "up" (MiniDFSCluster#isClusterUp) before<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span> * it is set.<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span> * @throws IllegalStateException if the passed cluster is up when it is required to be down<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span> * @throws IOException if the FileSystem could not be set from the passed dfs cluster<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span> */<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span> public void setDFSCluster(MiniDFSCluster cluster, boolean requireDown)<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span> throws IllegalStateException, IOException {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span> if (dfsCluster != null && requireDown && dfsCluster.isClusterUp()) {<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span> throw new IllegalStateException("DFSCluster is already running! Shut it down first.");<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span> }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span> this.dfsCluster = cluster;<a name="line.3198"></a>
-<span class="sourceLineNo">3199</span> this.setFs();<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span> }<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span><a name="line.3201"></a>
-<span class="sourceLineNo">3202</span> public FileSystem getTestFileSystem() throws IOException {<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span> return HFileSystem.get(conf);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span> }<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span><a name="line.3205"></a>
-<span class="sourceLineNo">3206</span> /**<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span> * Wait until all regions in a table have been assigned. Waits default timeout before giving up<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span> * (30 seconds).<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span> * @param table Table to wait on.<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span> * @throws InterruptedException<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span> * @throws IOException<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span> */<a name="line.3212"></a>
-<span class="sourceLineNo">3213</span> public void waitTableAvailable(TableName table)<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span> throws InterruptedException, IOException {<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span> waitTableAvailable(table.getName(), 30000);<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span> }<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span><a name="line.3217"></a>
-<span class="sourceLineNo">3218</span> public void waitTableAvailable(TableName table, long timeoutMillis)<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span> throws InterruptedException, IOException {<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span> waitFor(timeoutMillis, predicateTableAvailable(table));<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span> }<a name="line.3221"></a>
-<span class="sourceLineNo">3222</span><a name="line.3222"></a>
-<span class="sourceLineNo">3223</span> /**<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span> * Wait until all regions in a table have been assigned<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span> * @param table Table to wait on.<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span> * @param timeoutMillis Timeout.<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span> */<a name="line.3227"></a>
-<span class="sourceLineNo">3228</span> public void waitTableAvailable(byte[] table, long timeoutMillis)<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span> throws InterruptedException, IOException {<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span> waitFor(timeoutMillis, predicateTableAvailable(TableName.valueOf(table)));<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span> }<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span><a name="line.3232"></a>
-<span class="sourceLineNo">3233</span> public String explainTableAvailability(TableName tableName) throws IOException {<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span> String msg = explainTableState(tableName, TableState.State.ENABLED) + ", ";<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span> if (getHBaseCluster().getMaster().isAlive()) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span> Map<RegionInfo, ServerName> assignments = getHBaseCluster().getMaster().getAssignmentManager()<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span> .getRegionStates().getRegionAssignments();<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span> final List<Pair<RegionInfo, ServerName>> metaLocations =<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span> MetaTableAccessor.getTableRegionsAndLocations(asyncConnection.toConnection(), tableName);<a name="line.3239"></a>
-<span class="sourceLineNo">3240</span> for (Pair<RegionInfo, ServerName> metaLocation : metaLocations) {<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span> RegionInfo hri = metaLocation.getFirst();<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span> ServerName sn = metaLocation.getSecond();<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span> if (!assignments.containsKey(hri)) {<a name="line.3243"></a>
-<span class="sourceLineNo">3244</span> msg += ", region " + hri + " not assigned, but found in meta, it expected to be on " + sn;<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span><a name="line.3245"></a>
-<span class="sourceLineNo">3246</span> } else if (sn == null) {<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span> msg += ", region " + hri + " assigned, but has no server in meta";<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span> } else if (!sn.equals(assignments.get(hri))) {<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span> msg += ", region " + hri + " assigned, but has different servers in meta and AM ( " +<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span> sn + " <> " + assignments.get(hri);<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span> }<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span> }<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span> }<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span> return msg;<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span> }<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span><a name="line.3256"></a>
-<span class="sourceLineNo">3257</span> public String explainTableState(final TableName table, TableState.State state)<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span> throws IOException {<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span> TableState tableState = MetaTableAccessor.getTableState(asyncConnection.toConnection(), table);<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span> if (tableState == null) {<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span> return "TableState in META: No table state in META for table " + table +<a name="line.3261"></a>
-<span class="sourceLineNo">3262</span> " last state in meta (including deleted is " + findLastTableState(table) + ")";<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span> } else if (!tableState.inStates(state)) {<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span> return "TableState in META: Not " + state + " state, but " + tableState;<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span> } else {<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span> return "TableState in META: OK";<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span> }<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span> }<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span><a name="line.3269"></a>
-<span class="sourceLineNo">3270</span> @Nullable<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span> public TableState findLastTableState(final TableName table) throws IOException {<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span> final AtomicReference<TableState> lastTableState = new AtomicReference<>(null);<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span> MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span> @Override<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span> public boolean visit(Result r) throws IOException {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span> if (!Arrays.equals(r.getRow(), table.getName())) {<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span> return false;<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span> }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span> TableState state = MetaTableAccessor.getTableState(r);<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span> if (state != null) {<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span> lastTableState.set(state);<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span> }<a name="line.3282"></a>
-<span class="sourceLineNo">3283</span> return true;<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span> }<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span> };<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span> MetaTableAccessor.scanMeta(asyncConnection.toConnection(), null, null,<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span> MetaTableAccessor.QueryType.TABLE, Integer.MAX_VALUE, visitor);<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span> return lastTableState.get();<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span> }<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span><a name="line.3290"></a>
-<span class="sourceLineNo">3291</span> /**<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span> * Waits for a table to be 'enabled'. Enabled means that table is set as 'enabled' and the<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span> * regions have been all assigned. Will timeout after default period (30 seconds)<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span> * Tolerates nonexistent table.<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span> * @param table the table to wait on.<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span> * @throws InterruptedException if interrupted while waiting<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span> * @throws IOException if an IO problem is encountered<a name="line.3297"></a>
-<span class="sourceLineNo">3298</span> */<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span> public void waitTableEnabled(TableName table)<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span> throws InterruptedException, IOException {<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span> waitTableEnabled(table, 30000);<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span> }<a name="line.3302"></a>
-<span class="sourceLineNo">3303</span><a name="line.3303"></a>
-<span class="sourceLineNo">3304</span> /**<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span> * Waits for a table to be 'enabled'. Enabled means that table is set as 'enabled' and the<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span> * regions have been all assigned.<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span> * @see #waitTableEnabled(TableName, long)<a name="line.3307"></a>
-<span class="sourceLineNo">3308</span> * @param table Table to wait on.<a name="line.3308"></a>
-<span class="sourceLineNo">3309</span> * @param timeoutMillis Time to wait on it being marked enabled.<a name="line.3309"></a>
-<span class="sourceLineNo">3310</span> * @throws InterruptedException<a name="line.3310"></a>
-<span class="sourceLineNo">3311</span> * @throws IOException<a name="line.3311"></a>
-<span class="sourceLineNo">3312</span> */<a name="line.3312"></a>
-<span class="sourceLineNo">3313</span> public void waitTableEnabled(byte[] table, long timeoutMillis)<a name="line.3313"></a>
-<span class="sourceLineNo">3314</span> throws InterruptedException, IOException {<a name="line.3314"></a>
-<span class="sourceLineNo">3315</span> waitTableEnabled(TableName.valueOf(table), timeoutMillis);<a name="line.3315"></a>
-<span class="sourceLineNo">3316</span> }<a name="line.3316"></a>
-<span class="sourceLineNo">3317</span><a name="line.3317"></a>
-<span class="sourceLineNo">3318</span> public void waitTableEnabled(TableName table, long timeoutMillis)<a name="line.3318"></a>
-<span class="sourceLineNo">3319</span> throws IOException {<a name="line.3319"></a>
-<span class="sourceLineNo">3320</span> waitFor(timeoutMillis, predicateTableEnabled(table));<a name="line.3320"></a>
-<span class="sourceLineNo">3321</span> }<a name="line.3321"></a>
-<span class="sourceLineNo">3322</span><a name="line.3322"></a>
-<span class="sourceLineNo">3323</span> /**<a name="line.3323"></a>
-<span class="sourceLineNo">3324</span> * Waits for a table to be 'disabled'. Disabled means that table is set as 'disabled'<a name="line.3324"></a>
-<span class="sourceLineNo">3325</span> * Will timeout after default period (30 seconds)<a name="line.3325"></a>
-<span class="sourceLineNo">3326</span> * @param table Table to wait on.<a name="line.3326"></a>
-<span class="sourceLineNo">3327</span> * @throws InterruptedException<a name="line.3327"></a>
-<span class="sourceLineNo">3328</span> * @throws IOException<a name="line.3328"></a>
-<span class="sourceLineNo">3329</span> */<a name="line.3329"></a>
-<span class="sourceLineNo">3330</span> public void waitTableDisabled(byte[] table)<a name="line.3330"></a>
-<span class="sourceLineNo">3331</span> throws InterruptedException, IOException {<a name="line.3331"></a>
-<span class="sourceLineNo">3332</span> waitTableDisabled(table, 30000);<a name="line.3332"></a>
-<span class="sourceLineNo">3333</span> }<a name="line.3333"></a>
-<span class="sourceLineNo">3334</span><a name="line.3334"></a>
-<span class="sourceLineNo">3335</span> public void waitTableDisabled(TableName table, long millisTimeout)<a name="line.3335"></a>
-<span class="sourceLineNo">3336</span> throws InterruptedException, IOException {<a name="line.3336"></a>
-<span class="sourceLineNo">3337</span> waitFor(millisTimeout, predicateTableDisabled(table));<a name="line.3337"></a>
-<span class="sourceLineNo">3338</span> }<a name="line.3338"></a>
-<span class="sourceLineNo">3339</span><a name="line.3339"></a>
-<span class="sourceLineNo">3340</span> /**<a name="line.3340"></a>
-<span class="sourceLineNo">3341</span> * Waits for a table to be 'disabled'. Disabled means that table is set as 'disabled'<a name="line.3341"></a>
-<span class="sourceLineNo">3342</span> * @param table Table to wait on.<a name="line.3342"></a>
-<span class="sourceLineNo">3343</span> * @param timeoutMillis Time to wait on it being marked disabled.<a name="line.3343"></a>
-<span class="sourceLineNo">3344</span> * @throws InterruptedException<a name="line.3344"></a>
-<span class="sourceLineNo">3345</span> * @throws IOException<a name="line.3345"></a>
-<span class="sourceLineNo">3346</span> */<a name="line.3346"></a>
-<span class="sourceLineNo">3347</span> public void waitTableDisabled(byte[] table, long timeoutMillis)<a name="line.3347"></a>
-<span class="sourceLineNo">3348</span> throws InterruptedException, IOException {<a name="line.3348"></a>
-<span class="sourceLineNo">3349</span> waitTableDisabled(TableName.valueOf(table), timeoutMillis);<a name="line.3349"></a>
-<span class="sourceLineNo">3350</span> }<a name="line.3350"></a>
-<span class="sourceLineNo">3351</span><a name="line.3351"></a>
-<span class="sourceLineNo">3352</span> /**<a name="line.3352"></a>
-<span class="sourceLineNo">3353</span> * Make sure that at least the specified number of region servers<a name="line.3353"></a>
-<span class="sourceLineNo">3354</span> * are running<a name="line.3354"></a>
-<span class="sourceLineNo">3355</span> * @param num minimum number of region servers that should be running<a name="line.3355"></a>
-<span class="sourceLineNo">3356</span> * @return true if we started some servers<a name="line.3356"></a>
-<span class="sourceLineNo">3357</span> * @throws IOException<a name="line.3357"></a>
-<span class="sourceLineNo">3358</span> */<a name="line.3358"></a>
-<span class="sourceLineNo">3359</span> public boolean ensureSomeRegionServersAvailable(final int num)<a name="line.3359"></a>
-<span class="sourceLineNo">3360</span> throws IOException {<a name="line.3360"></a>
-<span class="sourceLineNo">3361</span> boolean startedServer = false;<a name="line.3361"></a>
-<span class="sourceLineNo">3362</span> MiniHBaseCluster hbaseCluster = getMiniHBaseCluster();<a name="line.3362"></a>
-<span class="sourceLineNo">3363</span> for (int i=hbaseCluster.getLiveRegionServerThreads().size(); i<num; ++i) {<a name="line.3363"></a>
-<span class="sourceLineNo">3364</span> LOG.info("Started new server=" + hbaseCluster.startRegionServer());<a name="line.3364"></a>
-<span class="sourceLineNo">3365</span> startedServer = true;<a name="line.3365"></a>
-<span class="sourceLineNo">3366</span> }<a name="line.3366"></a>
-<span class="sourceLineNo">3367</span><a name="line.3367"></a>
-<span class="sourceLineNo">3368</span> return startedServer;<a name="line.3368"></a>
-<span class="sourceLineNo">3369</span> }<a name="line.3369"></a>
-<span class="sourceLineNo">3370</span><a name="line.3370"></a>
-<span class="sourceLineNo">3371</span><a name="line.3371"></a>
-<span class="sourceLineNo">3372</span> /**<a name="line.3372"></a>
-<span class="sourceLineNo">3373</span> * Make sure that at least the specified number of region servers<a name="line.3373"></a>
-<span class="sourceLineNo">3374</span> * are running. We don't count the ones that are currently stopping or are<a name="line.3374"></a>
-<span class="sourceLineNo">3375</span> * stopped.<a name="line.3375"></a>
-<span class="sourceLineNo">3376</span> * @param num minimum number of region servers that should be running<a name="line.3376"></a>
-<span class="sourceLineNo">3377</span> * @return true if we started some servers<a name="line.3377"></a>
-<span class="sourceLineNo">3378</span> * @throws IOException<a name="line.3378"></a>
-<span class="sourceLineNo">3379</span> */<a name="line.3379"></a>
-<span class="sourceLineNo">3380</span> public boolean ensureSomeNonStoppedRegionServersAvailable(final int num)<a name="line.3380"></a>
-<span class="sourceLineNo">3381</span> throws IOException {<a name="line.3381"></a>
-<span class="sourceLineNo">3382</span> boolean startedServer = ensureSomeRegionServersAvailable(num);<a name="line.3382"></a>
-<span class="sourceLineNo">3383</span><a name="line.3383"></a>
-<span class="sourceLineNo">3384</span> int nonStoppedServers = 0;<a name="line.3384"></a>
-<span class="sourceLineNo">3385</span> for (JVMClusterUtil.RegionServerThread rst :<a name="line.3385"></a>
-<span class="sourceLineNo">3386</span> getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.3386"></a>
-<span class="sourceLineNo">3387</span><a name="line.3387"></a>
-<span class="sourceLineNo">3388</span> HRegionServer hrs = rst.getRegionServer();<a name="line.3388"></a>
-<span class="sourceLineNo">3389</span> if (hrs.isStopping() || hrs.isStopped()) {<a name="line.3389"></a>
-<span class="sourceLineNo">3390</span> LOG.info("A region server is stopped or stopping:"+hrs);<a name="line.3390"></a>
-<span class="sourceLineNo">3391</span> } else {<a name="line.3391"></a>
-<span class="sourceLineNo">3392</span> nonStoppedServers++;<a name="line.3392"></a>
-<span class="sourceLineNo">3393</span> }<a name="line.3393"></a>
-<span class="sourceLineNo">3394</span> }<a name="line.3394"></a>
-<span class="sourceLineNo">3395</span> for (int i=nonStoppedServers; i<num; ++i) {<a name="line.3395"></a>
-<span class="sourceLineNo">3396</span> LOG.info("Started new server=" + getMiniHBaseCluster().startRegionServer());<a name="line.3396"></a>
-<span class="sourceLineNo">3397</span> startedServer = true;<a name="line.3397"></a>
-<span class="sourceLineNo">3398</span> }<a name="line.3398"></a>
-<span class="sourceLineNo">3399</span> return startedServer;<a name="line.3399"></a>
-<span class="sourceLineNo">3400</span> }<a name="line.3400"></a>
-<span class="sourceLineNo">3401</span><a name="line.3401"></a>
-<span class="sourceLineNo">3402</span><a name="line.3402"></a>
-<span class="sourceLineNo">3403</span> /**<a name="line.3403"></a>
-<span class="sourceLineNo">3404</span> * This method clones the passed <code>c</code> configuration setting a new<a name="line.3404"></a>
-<span class="sourceLineNo">3405</span> * user into the clone. Use it getting new instances of FileSystem. Only<a name="line.3405"></a>
-<span class="sourceLineNo">3406</span> * works for DistributedFileSystem w/o Kerberos.<a name="line.3406"></a>
-<span class="sourceLineNo">3407</span> * @param c Initial configuration<a name="line.3407"></a>
-<span class="sourceLineNo">3408</span> * @param differentiatingSuffix Suffix to differentiate this user from others.<a name="line.3408"></a>
-<span class="sourceLineNo">3409</span> * @return A new configuration instance with a different user set into it.<a name="line.3409"></a>
-<span class="sourceLineNo">3410</span> * @throws IOException<a name="line.3410"></a>
-<span class="sourceLineNo">3411</span> */<a name="line.3411"></a>
-<span class="sourceLineNo">3412</span> public static User getDifferentUser(final Configuration c,<a name="line.3412"></a>
-<span class="sourceLineNo">3413</span> final String differentiatingSuffix)<a name="line.3413"></a>
-<span class="sourceLineNo">3414</span> throws IOException {<a name="line.3414"></a>
-<span class="sourceLineNo">3415</span> FileSystem currentfs = FileSystem.get(c);<a name="line.3415"></a>
-<span class="sourceLineNo">3416</span> if (!(currentfs instanceof DistributedFileSystem) || User.isHBaseSecurityEnabled(c)) {<a name="line.3416"></a>
-<span class="sourceLineNo">3417</span> return User.getCurrent();<a name="line.3417"></a>
-<span class="sourceLineNo">3418</span> }<a name="line.3418"></a>
-<span class="sourceLineNo">3419</span> // Else distributed filesystem. Make a new instance per daemon. Below<a name="line.3419"></a>
-<span class="sourceLineNo">3420</span> // code is taken from the AppendTestUtil over in hdfs.<a name="line.3420"></a>
-<span class="sourceLineNo">3421</span> String username = User.getCurrent().getName() +<a name="line.3421"></a>
-<span class="sourceLineNo">3422</span> differentiatingSuffix;<a name="line.3422"></a>
-<span class="sourceLineNo">3423</span> User user = User.createUserForTesting(c, username,<a name="line.3423"></a>
-<span class="sourceLineNo">3424</span> new String[]{"supergroup"});<a name="line.3424"></a>
-<span class="sourceLineNo">3425</span> return user;<a name="line.3425"></a>
-<span class="sourceLineNo">3426</span> }<a name="line.3426"></a>
-<span class="sourceLineNo">3427</span><a name="line.3427"></a>
-<span class="sourceLineNo">3428</span> public static NavigableSet<String> getAllOnlineRegions(MiniHBaseCluster cluster)<a name="line.3428"></a>
-<span class="sourceLineNo">3429</span> throws IOException {<a name="line.3429"></a>
-<span class="sourceLineNo">3430</span> NavigableSet<String> online = new TreeSet<>();<a name="line.3430"></a>
-<span class="sourceLineNo">3431</span> for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {<a name="line.3431"></a>
-<span class="sourceLineNo">3432</span> try {<a name="line.3432"></a>
-<span class="sourceLineNo">3433</span> for (RegionInfo region :<a name="line.3433"></a>
-<span class="sourceLineNo">3434</span> ProtobufUtil.getOnlineRegions(rst.getRegionServer().getRSRpcServices())) {<a name="line.3434"></a>
-<span class="sourceLineNo">3435</span> online.add(region.getRegionNameAsString());<a name="line.3435"></a>
-<span class="sourceLineNo">3436</span> }<a name="line.3436"></a>
-<span class="sourceLineNo">3437</span> } catch (RegionServerStoppedException e) {<a name="line.3437"></a>
-<span class="sourceLineNo">3438</span> // That's fine.<a name="line.3438"></a>
-<span class="sourceLineNo">3439</span> }<a name="line.3439"></a>
-<span class="sourceLineNo">3440</span> }<a name="line.3440"></a>
-<span class="sourceLineNo">3441</span> for (MasterThread mt : cluster.getLiveMasterThreads()) {<a name="line.3441"></a>
-<span class="sourceLineNo">3442</span> try {<a name="line.3442"></a>
-<span class="sourceLineNo">3443</span> for (RegionInfo region :<a name="line.3443"></a>
-<span class="sourceLineNo">3444</span> ProtobufUtil.getOnlineRegions(mt.getMaster().getRSRpcServices())) {<a name="line.3444"></a>
-<span class="sourceLineNo">3445</span> online.add(region.getRegionNameAsString());<a name="line.3445"></a>
-<span class="sourceLineNo">3446</span> }<a name="line.3446"></a>
-<span class="sourceLineNo">3447</span> } catch (RegionServerStoppedException e) {<a name="line.3447"></a>
-<span class="sourceLineNo">3448</span> // That's fine.<a name="line.3448"></a>
-<span class="sourceLineNo">3449</span> } catch (ServerNotRunningYetException e) {<a name="line.3449"></a>
-<span class="sourceLineNo">3450</span> // That's fine.<a name="line.3450"></a>
-<span class="sourceLineNo">3451</span> }<a name="line.3451"></a>
-<span class="sourceLineNo">3452</span> }<a name="line.3452"></a>
-<span class="sourceLineNo">3453</span> return online;<a name="line.3453"></a>
-<span class="sourceLineNo">3454</span> }<a name="line.3454"></a>
-<span class="sourceLineNo">3455</span><a name="line.3455"></a>
-<span class="sourceLineNo">3456</span> /**<a name="line.3456"></a>
-<span class="sourceLineNo">3457</span> * Set maxRecoveryErrorCount in DFSClient. In 0.20 pre-append its hard-coded to 5 and<a name="line.3457"></a>
-<span class="sourceLineNo">3458</span> * makes tests linger. Here is the exception you'll see:<a name="line.3458"></a>
-<span class="sourceLineNo">3459</span> * <pre><a name="line.3459"></a>
-<span class="sourceLineNo">3460</span> * 2010-06-15 11:52:28,511 WARN [DataStreamer for file /hbase/.logs/wal.1276627923013 block<a name="line.3460"></a>
-<span class="sourceLineNo">3461</span> * blk_928005470262850423_1021] hdfs.DFSClient$DFSOutputStream(2657): Error Recovery for block<a name="line.3461"></a>
-<span class="sourceLineNo">3462</span> * blk_928005470262850423_1021 failed because recovery from primary datanode 127.0.0.1:53683<a name="line.3462"></a>
-<span class="sourceLineNo">3463</span> * failed 4 times. Pipeline was 127.0.0.1:53687, 127.0.0.1:53683. Will retry...<a name="line.3463"></a>
-<span class="sourceLineNo">3464</span> * </pre><a name="line.3464"></a>
-<span class="sourceLineNo">3465</span> * @param stream A DFSClient.DFSOutputStream.<a name="line.3465"></a>
-<span class="sourceLineNo">3466</span> * @param max<a name="line.3466"></a>
-<span class="sourceLineNo">3467</span> * @throws NoSuchFieldException<a name="line.3467"></a>
-<span class="sourceLineNo">3468</span> * @throws SecurityException<a name="line.3468"></a>
-<span class="sourceLineNo">3469</span> * @throws IllegalAccessException<a name="line.3469"></a>
-<span class="sourceLineNo">3470</span> * @throws IllegalArgumentException<a name="line.3470"></a>
-<span class="sourceLineNo">3471</span> */<a name="line.3471"></a>
-<span class="sourceLineNo">3472</span> public static void setMaxRecoveryErrorCount(final OutputStream stream,<a name="line.3472"></a>
-<span class="sourceLineNo">3473</span> final int max) {<a name="line.3473"></a>
-<span class="sourceLineNo">3474</span> try {<a name="line.3474"></a>
-<span class="sourceLineNo">3475</span> Class<?> [] clazzes = DFSClient.class.getDeclaredClasses();<a name="line.3475"></a>
-<span class="sourceLineNo">3476</span> for (Class<?> clazz: clazzes) {<a name="line.3476"></a>
-<span class="sourceLineNo">3477</span> String className = clazz.getSimpleName();<a name="line.3477"></a>
-<span class="sourceLineNo">3478</span> if (className.equals("DFSOutputStream")) {<a name="line.3478"></a>
-<span class="sourceLineNo">3479</span> if (clazz.isInstance(stream)) {<a name="line.3479"></a>
-<span class="sourceLineNo">3480</span> Field maxRecoveryErrorCountField =<a name="line.3480"></a>
-<span class="sourceLineNo">3481</span> stream.getClass().getDeclaredField("maxRecoveryErrorCount");<a name="line.3481"></a>
-<span class="sourceLineNo">3482</span> maxRecoveryErrorCountField.setAccessible(true);<a name="line.3482"></a>
-<span class="sourceLineNo">3483</span> maxRecoveryErrorCountField.setInt(stream, max);<a name="line.3483"></a>
-<span class="sourceLineNo">3484</span> break;<a name="line.3484"></a>
-<span class="sourceLineNo">3485</span> }<a name="line.3485"></a>
-<span class="sourceLineNo">3486</span> }<a name="line.3486"></a>
-<span class="sourceLineNo">3487</span> }<a name="line.3487"></a>
-<span class="sourceLineNo">3488</span> } catch (Exception e) {<a name="line.3488"></a>
-<span class="sourceLineNo">3489</span> LOG.info("Could not set max recovery field", e);<a name="line.3489"></a>
-<span class="sourceLineNo">3490</span> }<a name="line.3490"></a>
-<span class="sourceLineNo">3491</span> }<a name="line.3491"></a>
-<span class="sourceLineNo">3492</span><a name="line.3492"></a>
-<span class="sourceLineNo">3493</span> /**<a name="line.3493"></a>
-<span class="sourceLineNo">3494</span> * Uses directly the assignment manager to assign the region. and waits until the specified region<a name="line.3494"></a>
-<span class="sourceLineNo">3495</span> * has completed assignment.<a name="line.3495"></a>
-<span class="sourceLineNo">3496</span> * @return true if the region is assigned false otherwise.<a name="line.3496"></a>
-<span class="sourceLineNo">3497</span> */<a name="line.3497"></a>
-<span class="sourceLineNo">3498</span> public boolean assignRegion(final RegionInfo regionInfo)<a name="line.3498"></a>
-<span class="sourceLineNo">3499</span> throws IOException, InterruptedException {<a name="line.3499"></a>
-<span class="sourceLineNo">3500</span> final AssignmentManager am = getHBaseCluster().getMaster().getAssignmentManager();<a name="line.3500"></a>
-<span class="sourceLineNo">3501</span> am.assign(regionInfo);<a name="line.3501"></a>
-<span class="sourceLineNo">3502</span> return AssignmentTestingUtil.waitForAssignment(am, regionInfo);<a name="line.3502"></a>
-<span class="sourceLineNo">3503</span> }<a name="line.3503"></a>
-<span class="sourceLineNo">3504</span><a name="line.3504"></a>
-<span class="sourceLineNo">3505</span> /**<a name="line.3505"></a>
-<span class="sourceLineNo">3506</span> * Move region to destination server and wait till region is completely moved and online<a name="line.3506"></a>
-<span class="sourceLineNo">3507</span> *<a name="line.3507"></a>
-<span class="sourceLineNo">3508</span> * @param destRegion region to move<a name="line.3508"></a>
-<span class="sourceLineNo">3509</span> * @param destServer destination server of the region<a name="line.3509"></a>
-<span class="sourceLineNo">3510</span> * @throws InterruptedException<a name="line.3510"></a>
-<span class="sourceLineNo">3511</span> * @throws IOException<a name="line.3511"></a>
-<span class="sourceLineNo">3512</span> */<a name="line.3512"></a>
-<span class="sourceLineNo">3513</span> public void moveRegionAndWait(RegionInfo destRegion, ServerName destServer)<a name="line.3513"></a>
-<span class="sourceLineNo">3514</span> throws InterruptedException, IOException {<a name="line.3514"></a>
-<span class="sourceLineNo">3515</span> HMaster master = getMiniHBaseCluster().getMaster();<a name="line.3515"></a>
-<span class="sourceLineNo">3516</span> // TODO: Here we start the move. The move can take a while.<a name="line.3516"></a>
-<span class="sourceLineNo">3517</span> getAdmin().move(destRegion.getEncodedNameAsBytes(), destServer);<a name="line.3517"></a>
-<span class="sourceLineNo">3518</span> while (true) {<a name="line.3518"></a>
-<span class="sourceLineNo">3519</span> ServerName serverName = master.getAssignmentManager().getRegionStates()<a name="line.3519"></a>
-<span class="sourceLineNo">3520</span> .getRegionServerOfRegion(destRegion);<a name="line.3520"></a>
-<span class="sourceLineNo">3521</span> if (serverName != null && serverName.equals(destServer)) {<a name="line.3521"></a>
-<span class="sourceLineNo">3522</span> assertRegionOnServer(destRegion, serverName, 2000);<a name="line.3522"></a>
-<span class="sourceLineNo">3523</span> break;<a name="line.3523"></a>
-<span class="sourceLineNo">3524</span> }<a name="line.3524"></a>
-<span class="sourceLineNo">3525</span> Thread.sleep(10);<a name="line.3525"></a>
-<span class="sourceLineNo">3526</span> }<a name="line.3526"></a>
-<span class="sourceLineNo">3527</span> }<a name="line.3527"></a>
-<span class="sourceLineNo">3528</span><a name="line.3528"></a>
-<span class="sourceLineNo">3529</span> /**<a name="line.3529"></a>
-<span class="sourceLineNo">3530</span> * Wait until all regions for a table in hbase:meta have a non-empty<a name="line.3530"></a>
-<span class="sourceLineNo">3531</span> * info:server, up to a configuable timeout value (default is 60 seconds)<a name="line.3531"></a>
-<span class="sourceLineNo">3532</span> * This means all regions have been deployed,<a name="line.3532"></a>
-<span class="sourceLineNo">3533</span> * master has been informed and updated hbase:meta with the regions deployed<a name="line.3533"></a>
-<span class="sourceLineNo">3534</span> * server.<a name="line.3534"></a>
-<span class="sourceLineNo">3535</span> * @param tableName the table name<a name="line.3535"></a>
-<span class="sourceLineNo">3536</span> * @throws IOException<a name="line.3536"></a>
-<span class="sourceLineNo">3537</span> */<a name="line.3537"></a>
-<span class="sourceLineNo">3538</span> public void waitUntilAllRegionsAssigned(final TableName tableName) throws IOException {<a name="line.3538"></a>
-<span class="sourceLineNo">3539</span> waitUntilAllRegionsAssigned(tableName,<a name="line.3539"></a>
-<span class="sourceLineNo">3540</span> this.conf.getLong("hbase.client.sync.wait.timeout.msec", 60000));<a name="line.3540"></a>
-<span class="sourceLineNo">3541</span> }<a name="line.3541"></a>
-<span class="sourceLineNo">3542</span><a name="line.3542"></a>
-<span class="sourceLineNo">3543</span> /**<a name="line.3543"></a>
-<span class="sourceLineNo">3544</span> * Waith until all system table's regions get assigned<a name="line.3544"></a>
+<span class="sourceLineNo">3118</span> * @param regionName The region to unassign.<a name="line.3118"></a>
+<span class="sourceLineNo">3119</span> */<a name="line.3119"></a>
+<span class="sourceLineNo">3120</span> public void unassignRegion(byte[] regionName) throws IOException {<a name="line.3120"></a>
+<span class="sourceLineNo">3121</span> getAdmin().unassign(regionName, true);<a name="line.3121"></a>
+<span class="sourceLineNo">3122</span> }<a name="line.3122"></a>
+<span class="sourceLineNo">3123</span><a name="line.3123"></a>
+<span class="sourceLineNo">3124</span> /**<a name="line.3124"></a>
+<span class="sourceLineNo">3125</span> * Closes the region containing the given row.<a name="line.3125"></a>
+<span class="sourceLineNo">3126</span> *<a name="line.3126"></a>
+<span class="sourceLineNo">3127</span> * @param row The row to find the containing region.<a name="line.3127"></a>
+<span class="sourceLineNo">3128</span> * @param table The table to find the region.<a name="line.3128"></a>
+<span class="sourceLineNo">3129</span> */<a name="line.3129"></a>
+<span class="sourceLineNo">3130</span> public void unassignRegionByRow(String row, RegionLocator table) throws IOException {<a name="line.3130"></a>
+<span class="sourceLineNo">3131</span> unassignRegionByRow(Bytes.toBytes(row), table);<a name="line.3131"></a>
+<span class="sourceLineNo">3132</span> }<a name="line.3132"></a>
+<span class="sourceLineNo">3133</span><a name="line.3133"></a>
+<span class="sourceLineNo">3134</span> /**<a name="line.3134"></a>
+<span class="sourceLineNo">3135</span> * Closes the region containing the given row.<a name="line.3135"></a>
+<span class="sourceLineNo">3136</span> *<a name="line.3136"></a>
+<span class="sourceLineNo">3137</span> * @param row The row to find the containing region.<a name="line.3137"></a>
+<span class="sourceLineNo">3138</span> * @param table The table to find the region.<a name="line.3138"></a>
+<span class="sourceLineNo">3139</span> * @throws IOException<a name="line.3139"></a>
+<span class="sourceLineNo">3140</span> */<a name="line.3140"></a>
+<span class="sourceLineNo">3141</span> public void unassignRegionByRow(byte[] row, RegionLocator table) throws IOException {<a name="line.3141"></a>
+<span class="sourceLineNo">3142</span> HRegionLocation hrl = table.getRegionLocation(row);<a name="line.3142"></a>
+<span class="sourceLineNo">3143</span> unassignRegion(hrl.getRegion().getRegionName());<a name="line.3143"></a>
+<span class="sourceLineNo">3144</span> }<a name="line.3144"></a>
+<span class="sourceLineNo">3145</span><a name="line.3145"></a>
+<span class="sourceLineNo">3146</span> /*<a name="line.3146"></a>
+<span class="sourceLineNo">3147</span> * Retrieves a splittable region randomly from tableName<a name="line.3147"></a>
+<span class="sourceLineNo">3148</span> *<a name="line.3148"></a>
+<span class="sourceLineNo">3149</span> * @param tableName name of table<a name="line.3149"></a>
+<span class="sourceLineNo">3150</span> * @param maxAttempts maximum number of attempts, unlimited for value of -1<a name="line.3150"></a>
+<span class="sourceLineNo">3151</span> * @return the HRegion chosen, null if none was found within limit of maxAttempts<a name="line.3151"></a>
+<span class="sourceLineNo">3152</span> */<a name="line.3152"></a>
+<span class="sourceLineNo">3153</span> public HRegion getSplittableRegion(TableName tableName, int maxAttempts) {<a name="line.3153"></a>
+<span class="sourceLineNo">3154</span> List<HRegion> regions = getHBaseCluster().getRegions(tableName);<a name="line.3154"></a>
+<span class="sourceLineNo">3155</span> int regCount = regions.size();<a name="line.3155"></a>
+<span class="sourceLineNo">3156</span> Set<Integer> attempted = new HashSet<>();<a name="line.3156"></a>
+<span class="sourceLineNo">3157</span> int idx;<a name="line.3157"></a>
+<span class="sourceLineNo">3158</span> int attempts = 0;<a name="line.3158"></a>
+<span class="sourceLineNo">3159</span> do {<a name="line.3159"></a>
+<span class="sourceLineNo">3160</span> regions = getHBaseCluster().getRegions(tableName);<a name="line.3160"></a>
+<span class="sourceLineNo">3161</span> if (regCount != regions.size()) {<a name="line.3161"></a>
+<span class="sourceLineNo">3162</span> // if there was region movement, clear attempted Set<a name="line.3162"></a>
+<span class="sourceLineNo">3163</span> attempted.clear();<a name="line.3163"></a>
+<span class="sourceLineNo">3164</span> }<a name="line.3164"></a>
+<span class="sourceLineNo">3165</span> regCount = regions.size();<a name="line.3165"></a>
+<span class="sourceLineNo">3166</span> // There are chances that before we get the region for the table from an RS the region may<a name="line.3166"></a>
+<span class="sourceLineNo">3167</span> // be going for CLOSE. This may be because online schema change is enabled<a name="line.3167"></a>
+<span class="sourceLineNo">3168</span> if (regCount > 0) {<a name="line.3168"></a>
+<span class="sourceLineNo">3169</span> idx = random.nextInt(regCount);<a name="line.3169"></a>
+<span class="sourceLineNo">3170</span> // if we have just tried this region, there is no need to try again<a name="line.3170"></a>
+<span class="sourceLineNo">3171</span> if (attempted.contains(idx))<a name="line.3171"></a>
+<span class="sourceLineNo">3172</span> continue;<a name="line.3172"></a>
+<span class="sourceLineNo">3173</span> try {<a name="line.3173"></a>
+<span class="sourceLineNo">3174</span> regions.get(idx).checkSplit();<a name="line.3174"></a>
+<span class="sourceLineNo">3175</span> return regions.get(idx);<a name="line.3175"></a>
+<span class="sourceLineNo">3176</span> } catch (Exception ex) {<a name="line.3176"></a>
+<span class="sourceLineNo">3177</span> LOG.warn("Caught exception", ex);<a name="line.3177"></a>
+<span class="sourceLineNo">3178</span> attempted.add(idx);<a name="line.3178"></a>
+<span class="sourceLineNo">3179</span> }<a name="line.3179"></a>
+<span class="sourceLineNo">3180</span> }<a name="line.3180"></a>
+<span class="sourceLineNo">3181</span> attempts++;<a name="line.3181"></a>
+<span class="sourceLineNo">3182</span> } while (maxAttempts == -1 || attempts < maxAttempts);<a name="line.3182"></a>
+<span class="sourceLineNo">3183</span> return null;<a name="line.3183"></a>
+<span class="sourceLineNo">3184</span> }<a name="line.3184"></a>
+<span class="sourceLineNo">3185</span><a name="line.3185"></a>
+<span class="sourceLineNo">3186</span> public MiniDFSCluster getDFSCluster() {<a name="line.3186"></a>
+<span class="sourceLineNo">3187</span> return dfsCluster;<a name="line.3187"></a>
+<span class="sourceLineNo">3188</span> }<a name="line.3188"></a>
+<span class="sourceLineNo">3189</span><a name="line.3189"></a>
+<span class="sourceLineNo">3190</span> public void setDFSCluster(MiniDFSCluster cluster) throws IllegalStateException, IOException {<a name="line.3190"></a>
+<span class="sourceLineNo">3191</span> setDFSCluster(cluster, true);<a name="line.3191"></a>
+<span class="sourceLineNo">3192</span> }<a name="line.3192"></a>
+<span class="sourceLineNo">3193</span><a name="line.3193"></a>
+<span class="sourceLineNo">3194</span> /**<a name="line.3194"></a>
+<span class="sourceLineNo">3195</span> * Set the MiniDFSCluster<a name="line.3195"></a>
+<span class="sourceLineNo">3196</span> * @param cluster cluster to use<a name="line.3196"></a>
+<span class="sourceLineNo">3197</span> * @param requireDown require the that cluster not be "up" (MiniDFSCluster#isClusterUp) before<a name="line.3197"></a>
+<span class="sourceLineNo">3198</span> * it is set.<a name="line.3198"></a>
+<span class="sourceLineNo">3199</span> * @throws IllegalStateException if the passed cluster is up when it is required to be down<a name="line.3199"></a>
+<span class="sourceLineNo">3200</span> * @throws IOException if the FileSystem could not be set from the passed dfs cluster<a name="line.3200"></a>
+<span class="sourceLineNo">3201</span> */<a name="line.3201"></a>
+<span class="sourceLineNo">3202</span> public void setDFSCluster(MiniDFSCluster cluster, boolean requireDown)<a name="line.3202"></a>
+<span class="sourceLineNo">3203</span> throws IllegalStateException, IOException {<a name="line.3203"></a>
+<span class="sourceLineNo">3204</span> if (dfsCluster != null && requireDown && dfsCluster.isClusterUp()) {<a name="line.3204"></a>
+<span class="sourceLineNo">3205</span> throw new IllegalStateException("DFSCluster is already running! Shut it down first.");<a name="line.3205"></a>
+<span class="sourceLineNo">3206</span> }<a name="line.3206"></a>
+<span class="sourceLineNo">3207</span> this.dfsCluster = cluster;<a name="line.3207"></a>
+<span class="sourceLineNo">3208</span> this.setFs();<a name="line.3208"></a>
+<span class="sourceLineNo">3209</span> }<a name="line.3209"></a>
+<span class="sourceLineNo">3210</span><a name="line.3210"></a>
+<span class="sourceLineNo">3211</span> public FileSystem getTestFileSystem() throws IOException {<a name="line.3211"></a>
+<span class="sourceLineNo">3212</span> return HFileSystem.get(conf);<a name="line.3212"></a>
+<span class="sourceLineNo">3213</span> }<a name="line.3213"></a>
+<span class="sourceLineNo">3214</span><a name="line.3214"></a>
+<span class="sourceLineNo">3215</span> /**<a name="line.3215"></a>
+<span class="sourceLineNo">3216</span> * Wait until all regions in a table have been assigned. Waits default timeout before giving up<a name="line.3216"></a>
+<span class="sourceLineNo">3217</span> * (30 seconds).<a name="line.3217"></a>
+<span class="sourceLineNo">3218</span> * @param table Table to wait on.<a name="line.3218"></a>
+<span class="sourceLineNo">3219</span> * @throws InterruptedException<a name="line.3219"></a>
+<span class="sourceLineNo">3220</span> * @throws IOException<a name="line.3220"></a>
+<span class="sourceLineNo">3221</span> */<a name="line.3221"></a>
+<span class="sourceLineNo">3222</span> public void waitTableAvailable(TableName table)<a name="line.3222"></a>
+<span class="sourceLineNo">3223</span> throws InterruptedException, IOException {<a name="line.3223"></a>
+<span class="sourceLineNo">3224</span> waitTableAvailable(table.getName(), 30000);<a name="line.3224"></a>
+<span class="sourceLineNo">3225</span> }<a name="line.3225"></a>
+<span class="sourceLineNo">3226</span><a name="line.3226"></a>
+<span class="sourceLineNo">3227</span> public void waitTableAvailable(TableName table, long timeoutMillis)<a name="line.3227"></a>
+<span class="sourceLineNo">3228</span> throws InterruptedException, IOException {<a name="line.3228"></a>
+<span class="sourceLineNo">3229</span> waitFor(timeoutMillis, predicateTableAvailable(table));<a name="line.3229"></a>
+<span class="sourceLineNo">3230</span> }<a name="line.3230"></a>
+<span class="sourceLineNo">3231</span><a name="line.3231"></a>
+<span class="sourceLineNo">3232</span> /**<a name="line.3232"></a>
+<span class="sourceLineNo">3233</span> * Wait until all regions in a table have been assigned<a name="line.3233"></a>
+<span class="sourceLineNo">3234</span> * @param table Table to wait on.<a name="line.3234"></a>
+<span class="sourceLineNo">3235</span> * @param timeoutMillis Timeout.<a name="line.3235"></a>
+<span class="sourceLineNo">3236</span> */<a name="line.3236"></a>
+<span class="sourceLineNo">3237</span> public void waitTableAvailable(byte[] table, long timeoutMillis)<a name="line.3237"></a>
+<span class="sourceLineNo">3238</span> throws InterruptedException, IOException {<a name="line.3238"></a>
+<span class="sourceLineNo">3239</span> waitFor(timeoutMillis, predicateTableAvailable(TableName.valueOf(table)));<a name="line.3239"></a>
+<span class="sourceLineNo">3240</span> }<a name="line.3240"></a>
+<span class="sourceLineNo">3241</span><a name="line.3241"></a>
+<span class="sourceLineNo">3242</span> public String explainTableAvailability(TableName tableName) throws IOException {<a name="line.3242"></a>
+<span class="sourceLineNo">3243</span> String msg = explainTableState(tableName, TableState.State.ENABLED) + ", ";<a name="line.3243"></a>
+<span class="sourceLineNo">3244</span> if (getHBaseCluster().getMaster().isAlive()) {<a name="line.3244"></a>
+<span class="sourceLineNo">3245</span> Map<RegionInfo, ServerName> assignments = getHBaseCluster().getMaster().getAssignmentManager()<a name="line.3245"></a>
+<span class="sourceLineNo">3246</span> .getRegionStates().getRegionAssignments();<a name="line.3246"></a>
+<span class="sourceLineNo">3247</span> final List<Pair<RegionInfo, ServerName>> metaLocations =<a name="line.3247"></a>
+<span class="sourceLineNo">3248</span> MetaTableAccessor.getTableRegionsAndLocations(asyncConnection.toConnection(), tableName);<a name="line.3248"></a>
+<span class="sourceLineNo">3249</span> for (Pair<RegionInfo, ServerName> metaLocation : metaLocations) {<a name="line.3249"></a>
+<span class="sourceLineNo">3250</span> RegionInfo hri = metaLocation.getFirst();<a name="line.3250"></a>
+<span class="sourceLineNo">3251</span> ServerName sn = metaLocation.getSecond();<a name="line.3251"></a>
+<span class="sourceLineNo">3252</span> if (!assignments.containsKey(hri)) {<a name="line.3252"></a>
+<span class="sourceLineNo">3253</span> msg += ", region " + hri + " not assigned, but found in meta, it expected to be on " + sn;<a name="line.3253"></a>
+<span class="sourceLineNo">3254</span><a name="line.3254"></a>
+<span class="sourceLineNo">3255</span> } else if (sn == null) {<a name="line.3255"></a>
+<span class="sourceLineNo">3256</span> msg += ", region " + hri + " assigned, but has no server in meta";<a name="line.3256"></a>
+<span class="sourceLineNo">3257</span> } else if (!sn.equals(assignments.get(hri))) {<a name="line.3257"></a>
+<span class="sourceLineNo">3258</span> msg += ", region " + hri + " assigned, but has different servers in meta and AM ( " +<a name="line.3258"></a>
+<span class="sourceLineNo">3259</span> sn + " <> " + assignments.get(hri);<a name="line.3259"></a>
+<span class="sourceLineNo">3260</span> }<a name="line.3260"></a>
+<span class="sourceLineNo">3261</span> }<a name="line.3261"></a>
+<span class="sourceLineNo">3262</span> }<a name="line.3262"></a>
+<span class="sourceLineNo">3263</span> return msg;<a name="line.3263"></a>
+<span class="sourceLineNo">3264</span> }<a name="line.3264"></a>
+<span class="sourceLineNo">3265</span><a name="line.3265"></a>
+<span class="sourceLineNo">3266</span> public String explainTableState(final TableName table, TableState.State state)<a name="line.3266"></a>
+<span class="sourceLineNo">3267</span> throws IOException {<a name="line.3267"></a>
+<span class="sourceLineNo">3268</span> TableState tableState = MetaTableAccessor.getTableState(asyncConnection.toConnection(), table);<a name="line.3268"></a>
+<span class="sourceLineNo">3269</span> if (tableState == null) {<a name="line.3269"></a>
+<span class="sourceLineNo">3270</span> return "TableState in META: No table state in META for table " + table +<a name="line.3270"></a>
+<span class="sourceLineNo">3271</span> " last state in meta (including deleted is " + findLastTableState(table) + ")";<a name="line.3271"></a>
+<span class="sourceLineNo">3272</span> } else if (!tableState.inStates(state)) {<a name="line.3272"></a>
+<span class="sourceLineNo">3273</span> return "TableState in META: Not " + state + " state, but " + tableState;<a name="line.3273"></a>
+<span class="sourceLineNo">3274</span> } else {<a name="line.3274"></a>
+<span class="sourceLineNo">3275</span> return "TableState in META: OK";<a name="line.3275"></a>
+<span class="sourceLineNo">3276</span> }<a name="line.3276"></a>
+<span class="sourceLineNo">3277</span> }<a name="line.3277"></a>
+<span class="sourceLineNo">3278</span><a name="line.3278"></a>
+<span class="sourceLineNo">3279</span> @Nullable<a name="line.3279"></a>
+<span class="sourceLineNo">3280</span> public TableState findLastTableState(final TableName table) throws IOException {<a name="line.3280"></a>
+<span class="sourceLineNo">3281</span> final AtomicReference<TableState> lastTableState = new AtomicReference<>(null);<a name="line.3281"></a>
+<span class="sourceLineNo">3282</span> MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.3282"></a>
+<span class="sourceLineNo">3283</span> @Override<a name="line.3283"></a>
+<span class="sourceLineNo">3284</span> public boolean visit(Result r) throws IOException {<a name="line.3284"></a>
+<span class="sourceLineNo">3285</span> if (!Arrays.equals(r.getRow(), table.getName())) {<a name="line.3285"></a>
+<span class="sourceLineNo">3286</span> return false;<a name="line.3286"></a>
+<span class="sourceLineNo">3287</span> }<a name="line.3287"></a>
+<span class="sourceLineNo">3288</span> TableState state = MetaTableAccessor.getTableState(r);<a name="line.3288"></a>
+<span class="sourceLineNo">3289</span> if (state != null) {<a name="line.3289"></a>
+<span class="sourceLineNo">3290</span> lastTableState.set(state);<a name="line.3290"></a>
+<span class="sourceLineNo">3291</span> }<a name="line.3291"></a>
+<span class="sourceLineNo">3292</span> return true;<a name="line.3292"></a>
+<span class="sourceLineNo">3293</span> }<a name="line.3293"></a>
+<span class="sourceLineNo">3294</span> };<a name="line.3294"></a>
+<span class="sourceLineNo">3295</span> MetaTableAccessor.scanMeta(asyncConnection.toConnection(), null, null,<a name="line.3295"></a>
+<span class="sourceLineNo">3296</span> MetaTableAccessor.QueryType.TABLE, Integer.MAX_VALUE, visitor);<a name="line.3296"></a>
+<span class="sourceLineNo">3297</span> return lastTableState.get();<a name="line.3297"></a>
+<span class="sourceLineNo">3298</span> }<a name="line.3298"></a>
+<span class="sourceLineNo">3299</span><a name="line.3299"></a>
+<span class="sourceLineNo">3300</span> /**<a name="line.3300"></a>
+<span class="sourceLineNo">3301</span> * Waits for a table to be 'enabled'. Enabled means that table is set as 'enabled' and the<a name="line.3301"></a>
+<span class="sourceLineNo">3302</span> * regions have been all assigned. Will timeout after default period (30 seconds)<a name="line.3302"></a>
+<span class="sourceLineNo">3303</span> * Tolerates nonexistent table.<a name="line.3303"></a>
+<span class="sourceLineNo">3304</span> * @param table the table to wait on.<a name="line.3304"></a>
+<span class="sourceLineNo">3305</span> * @throws InterruptedException if interrupted while waiting<a name="line.3305"></a>
+<span class="sourceLineNo">3306</span> * @throws IOException if an IO problem is encountered<a name="line.3306"></a>
+<span class="sourceLineNo">3307</span> */<a name="line.3307"></a>
+<span class="sourceLineNo">3308</span> public void waitTableEnabled(TableName table)<a name="line.3308"></a>
+<span class="sourceLineNo">3309</span> throws InterruptedException, IOException {<a name="line.3309"></a>
+<span class="sourceLineNo">3310</span> waitTableEnabled(table, 30000);<a name="line.3310"></a>
+<span class="sourceLineNo">3311</span> }<a name="line.3311"></a>
+<span class="sourceLineNo">3312</span><a name="line.3312"></a>
+<span class="sourceLineNo">3313</span> /**<a name="line.3313"></a>
+<span class="sourceLineNo">3314</span> * Waits for a table to be 'enabled'. Enabled means that table is set as 'enabled' and the<a name="line.3314"></a>
+<span class="sourceLineNo">3315</span> * regions have been all assigned.<a name="line.3315"></a>
+<span class="sourceLineNo">3316</span> * @see #waitTableEnabled(TableName, long)<a name="line.3316"></a>
+<span class="sourceLineNo">3317</span> * @param table Table to wait on.<a name="line.3317"></a>
+<span class="sourceLineNo">3318</span> * @param timeoutMillis Time to wait on it being marked enabled.<a name="line.3318"></a>
+<span class="sourceLineNo">3319</span> * @throws InterruptedException<a name="line.3319"></a>
+<span class="sourceLineNo">3320</span> * @throws IOException<a name="line.3320"></a>
+<span class="sourceLineNo">3321</span> */<a name="line.3321"></a>
+<span class="sourceLineNo">3322</span> public void waitTableEnabled(byte[] table, long timeoutMillis)<a name="line.3322"></a>
+<span class="sourceLineNo">3323</span> throws InterruptedException, IOException {<a name="line.3323"></a>
+<span class="sourceLineNo">3324</span> waitTableEnabled(TableName.valueOf(table), timeoutMillis);<a name="line.3324"></a>
+<span class="sourceLineNo">3325</span> }<a name="line.3325"></a>
+<span class="sourceLineNo">3326</span><a name="line.3326"></a>
+<span class="sourceLineNo">3327</span> public void waitTableEnabled(TableName table, long timeoutMillis)<a name="line.3327"></a>
+<span class="sourceLineNo">3328</span> throws IOException {<a name="line.3328"></a>
+<span class="sourceLineNo">3329</span> waitFor(timeoutMillis, predicateTableEnabled(table));<a name="line.3329"></a>
+<span class="sourceLineNo">3330</span> }<a name="line.3330"></a>
+<span class="sourceLineNo">3331</span><a name="line.3331"></a>
+<span class="sourceLineNo">3332</span> /**<a name="line.3332"></a>
+<span class="sourceLineNo">3333</span> * Waits for a table to be 'disabled'. Disabled means that table is set as 'disabled'<a name="line.3333"></a>
+<span class="sourceLineNo">3334</span> * Will timeout after default period (30 seconds)<a name="line.3334"></a>
+<span class="sourceLineNo">3335</span> * @param table Table to wait on.<a name="line.3335"></a>
+<span class="sourceLineNo">3336</span> * @throws InterruptedException<a name="line.3336"></a>
+<span class="sourceLineNo">3337</span> * @throws IOException<a name="line.3337"></a>
+<span class="sourceLineNo">3338</span> */<a name="line.3338"></a>
+<span class="sourceLineNo">3339</span> public void waitTableDisabled(byte[] table)<a name="line.3339"></a>
+<span class="sourceLineNo">3340</span> throws InterruptedException, IOException {<a name="line.3340"></a>
+<span class="sourceLineNo">3341</span> waitTableDisabled(table, 30000);<a name="line.3341"></a>
+<span class="sourceLineNo">3342</span> }<a name="line.3342"></a>
+<span class="sourceLineNo">3343</span><a name="line.3343"></a>
+<span class="sourceLineNo">3344</span> public void waitTableDisabled(TableName table, long millisTimeout)<a name="line.3344"></a>
+<span class="sourceLineNo">3345</span> throws InterruptedException, IOException {<a name="line.3345"></a>
+<span class="sourceLineNo">3346</span> waitFor(millisTimeout, predicateTableDisabled(table));<a name="line.3346"></a>
+<span class="sourceLineNo">3347</span> }<a name="line.3347"></a>
+<span class="sourceLineNo">3348</span><a name="line.3348"></a>
+<span class="sourceLineNo">3349</span> /**<a name="line.3349"></a>
+<span class="sourceLineNo">3350</span> * Waits for a table to be 'disabled'. Disabled means that table is set as 'disabled'<a name="line.3350"></a>
+<span class="sourceLineNo">3351</span> * @param table Table to wait on.<a name="line.3351"></a>
+<span class="sourceLineNo">3352</span> * @param timeoutMillis Time to wait on it being marked disabled.<a name="line.3352"></a>
+<span class="sourceLineNo">3353</span> * @throws InterruptedException<a name="line.3353"></a>
+<span class="sourceLineNo">3354</span> * @throws IOException<a name="line.3354"></a>
+<span class="sourceLineNo">3355</span> */<a name="line.3355"></a>
+<span class="sourceLineNo">3356</span> public void waitTableDisabled(byte[] table, long timeoutMillis)<a name="line.3356"></a>
+<span class="sourceLineNo">3357</span> throws InterruptedException, IOException {<a name="line.3357"></a>
+<span class="sourceLineNo">3358</span> waitTableDisabled(TableName.valueOf(table), timeoutMillis);<a name="line.3358"></a>
+<span class="sourceLineNo">3359</span> }<a name="line.3359"></a>
+<span class="sourceLineNo">3360</span><a name="line.3360"></a>
+<span class="sourceLineNo">3361</span> /**<a name="line.3361"></a>
+<span class="sourceLineNo">3362</span> * Make sure that at least the specified number of region servers<a name="line.3362"></a>
+<span class="sourceLineNo">3363</span> * are running<a name="line.3363"></a>
+<span class="sourceLineNo">3364</span> * @param num minimum number of region servers that should be running<a name="line.3364"></a>
+<span class="sourceLineNo">3365</span> * @return true if we started some servers<a name="line.3365"></a>
+<span class="sourceLineNo">3366</span> * @throws IOException<a name="line.3366"></a>
+<span class="sourceLineNo">3367</span> */<a name="line.3367"></a>
+<span class="sourceLineNo">3368</span> public boolean ensureSomeRegionServersAvailable(final int num)<a name="line.3368"></a>
+<span class="sourceLineNo">3369</span> throws IOException {<a name="line.3369"></a>
+<span class="sourceLineNo">3370</span> boolean startedServer = false;<a name="line.3370"></a>
+<span class="sourceLineNo">3371</span> MiniHBaseCluster hbaseCluster = getMiniHBaseCluster();<a name="line.3371"></a>
+<span class="sourceLineNo">3372</span> for (int i=hbaseCluster.getLiveRegionServerThreads().size(); i<num; ++i) {<a name="line.3372"></a>
+<span class="sourceLineNo">3373</span> LOG.info("Started new server=" + hbaseCluster.startRegionServer());<a name="line.3373"></a>
+<span class="sourceLineNo">3374</span> startedServer = true;<a name="line.3374"></a>
+<span class="sourceLineNo">3375</span> }<a name="line.3375"></a>
+<span class="sourceLineNo">3376</span><a name="line.3376"></a>
+<span class="sourceLineNo">3377</span> return startedServer;<a name="line.3377"></a>
+<span class="sourceLineNo">3378</span> }<a name="line.3378"></a>
+<span class="sourceLineNo">3379</span><a name="line.3379"></a>
+<span class="sourceLineNo">3380</span><a name="line.3380"></a>
+<span class="sourceLineNo">3381</span> /**<a name="line.3381"></a>
+<span class="sourceLineNo">3382</span> * Make sure that at least the specified number of region servers<a name="line.3382"></a>
+<span class="sourceLineNo">3383</span> * are running. We don't count the ones that are currently stopping or are<a name="line.3383"></a>
+<span class="sourceLineNo">3384</span> * stopped.<a name="line.3384"></a>
+<span class="sourceLineNo">3385</span> * @param num minimum number of region servers that should be running<a name="line.3385"></a>
+<span class="sourceLineNo">3386</span> * @return true if we started some servers<a name="line.3386"></a>
+<span class="sourceLineNo">3387</span> * @throws IOException<a name="line.3387"></a>
+<span class="sourceLineNo">3388</span> */<a name="line.3388"></a>
+<span class="sourceLineNo">3389</span> public boolean ensureSomeNonStoppedRegionServersAvailable(final int num)<a name="line.3389"></a>
+<span class="sourceLineNo">3390</span> throws IOException {<a name="line.3390"></a>
+<span class="sourceLineNo">3391</span> boolean startedServer = ensureSomeRegionServersAvailable(num);<a name="line.3391"></a>
+<span class="sourceLineNo">3392</span><a name="line.3392"></a>
+<span class="sourceLineNo">3393</span> int nonStoppedServers = 0;<a name="line.3393"></a>
+<span class="sourceLineNo">3394</span> for (JVMClusterUtil.RegionServerThread rst :<a name="line.3394"></a>
+<span class="sourceLineNo">3395</span> getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.3395"></a>
+<span class="sourceLineNo">3396</span><a name="line.3396"></a>
+<span class="sourceLineNo">3397</span> HRegionServer hrs = rst.getRegionServer();<a name="line.3397"></a>
+<span class="sourceLineNo">3398</span> if (hrs.isStopping() || hrs.isStopped()) {<a name="line.3398"></a>
+<span class="sourceLineNo">3399</span> LOG.info("A region server is stopped or stopping:"+hrs);<a name="line.3399"></a>
+<span class="sourceLineNo">3400</span> } else {<a name="line.3400"></a>
+<span class="sourceLineNo">3401</span> nonStoppedServers++;<a name="line.3401"></a>
+<span class="sourceLineNo">3402</span> }<a name="line.3402"></a>
+<span class="sourceLineNo">3403</span> }<a name="line.3403"></a>
+<span class="sourceLineNo">3404</span> for (int i=nonStoppedServers; i<num; ++i) {<a name="line.3404"></a>
+<span class="sourceLineNo">3405</span> LOG.info("Started new server=" + getMiniHBaseCluster().startRegionServer());<a name="line.3405"></a>
+<span class="sourceLineNo">3406</span> startedServer = true;<a name="line.3406"></a>
+<span class="sourceLineNo">3407</span> }<a name="line.3407"></a>
+<span class="sourceLineNo">3408</span> return startedServer;<a name="line.3408"></a>
+<span class="sourceLineNo">3409</span> }<a name="line.3409"></a>
+<span class="sourceLineNo">3410</span><a name="line.3410"></a>
+<span class="sourceLineNo">3411</span><a name="line.3411"></a>
+<span class="sourceLineNo">3412</span> /**<a name="line.3412"></a>
+<span class="sourceLineNo">3413</span> * This method clones the passed <code>c</code> configuration setting a new<a name="line.3413"></a>
+<span class="sourceLineNo">3414</span> * user into the clone. Use it getting new instances of FileSystem. Only<a name="line.3414"></a>
+<span class="sourceLineNo">3415</span> * works for DistributedFileSystem w/o Kerberos.<a name="line.3415"></a>
+<span class="sourceLineNo">3416</span> * @param c Initial configuration<a name="line.3416"></a>
+<span class="sourceLineNo">3417</span> * @param differentiatingSuffix Suffix to differentiate this user from others.<a name="line.3417"></a>
+<span class="sourceLineNo">3418</span> * @return A new configuration instance with a different user set into it.<a name="line.3418"></a>
+<span class="sourceLineNo">3419</span> * @throws IOException<a name="line.3419"></a>
+<span class="sourceLineNo">3420</span> */<a name="line.3420"></a>
+<span class="sourceLineNo">3421</span> public static User getDifferentUser(final Configuration c,<a name="line.3421"></a>
+<span class="sourceLineNo">3422</span> final String differentiatingSuffix)<a name="line.3422"></a>
+<span class="sourceLineNo">3423</span> throws IOException {<a name="line.3423"></a>
+<span class="sourceLineNo">3424</span> FileSystem currentfs = FileSystem.get(c);<a name="line.3424"></a>
+<span class="sourceLineNo">3425</span> if (!(currentfs instanceof DistributedFileSystem) || User.isHBaseSecurityEnabled(c)) {<a name="line.3425"></a>
+<span class="sourceLineNo">3426</span> return User.getCurrent();<a name="line.3426"></a>
+<span class="sourceLineNo">3427</span> }<a name="line.3427"></a>
+<span class="sourceLineNo">3428</span> // Else distributed filesystem. Make a new instance per daemon. Below<a name="line.3428"></a>
+<span class="sourceLineNo">3429</span> // code is taken from the AppendTestUtil over in hdfs.<a name="line.3429"></a>
+<span class="sourceLineNo">3430</span> String username = User.getCurrent().getName() +<a name="line.3430"></a>
+<span class="sourceLineNo">3431</span> differentiatingSuffix;<a name="line.3431"></a>
+<span class="sourceLineNo">3432</span> User user = User.createUserForTesting(c, username,<a name="line.3432"></a>
+<span class="sourceLineNo">3433</span> new String[]{"supergroup"});<a name="line.3433"></a>
+<span class="sourceLineNo">3434</span> return user;<a name="line.3434"></a>
+<span class="sourceLineNo">3435</span> }<a name="line.3435"></a>
+<span class="sourceLineNo">3436</span><a name="line.3436"></a>
+<span class="sourceLineNo">3437</span> public static NavigableSet<String> getAllOnlineRegions(MiniHBaseCluster cluster)<a name="line.3437"></a>
+<span class="sourceLineNo">3438</span> throws IOException {<a name="line.3438"></a>
+<span class="sourceLineNo">3439</span> NavigableSet<String> online = new TreeSet<>();<a name="line.3439"></a>
+<span class="sourceLineNo">3440</span> for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {<a name="line.3440"></a>
+<span class="sourceLineNo">3441</span> try {<a name="line.3441"></a>
+<span class="sourceLineNo">3442</span> for (RegionInfo region :<a name="line.3442"></a>
+<span class="sourceLineNo">3443</span> ProtobufUtil.getOnlineRegions(rst.getRegionServer().getRSRpcServices())) {<a name="line.3443"></a>
+<span class="sourceLineNo">3444</span> online.add(region.getRegionNameAsString());<a name="line.3444"></a>
+<span class="sourceLineNo">3445</span> }<a name="line.3445"></a>
+<span class="sourceLineNo">3446</span> } catch (RegionServerStoppedException e) {<a name="line.3446"></a>
+<span class="sourceLineNo">3447</span> // That's fine.<a name="line.3447"></a>
+<span class="sourceLineNo">3448</span> }<a name="line.3448"></a>
+<span class="sourceLineNo">3449</span> }<a name="line.3449"></a>
+<span class="sourceLineNo">3450</span> for (MasterThread mt : cluster.getLiveMasterThreads()) {<a name="line.3450"></a>
+<span class="sourceLineNo">3451</span> try {<a name="line.3451"></a>
+<span class="sourceLineNo">3452</span> for (RegionInfo region :<a name="line.3452"></a>
+<span class="sourceLineNo">3453</span> ProtobufUtil.getOnlineRegions(mt.getMaster().getRSRpcServices())) {<a name="line.3453"></a>
+<span class="sourceLineNo">3454</span> online.add(region.getRegionNameAsString());<a name="line.3454"></a>
+<span class="sourceLineNo">3455</span> }<a name="line.3455"></a>
+<span class="sourceLineNo">3456</span> } catch (RegionServerStoppedException e) {<a name="line.3456"></a>
+<span class="sourceLineNo">3457</span> // That's fine.<a name="line.3457"></a>
+<span class="sourceLineNo">3458</span> } catch (ServerNotRunningYetException e) {<a name="line.3458"></a>
+<span class="sourceLineNo">3459</span> // That's fine.<a name="line.3459"></a>
+<span class="sourceLineNo">3460</span> }<a name="line.3460"></a>
+<span class="sourceLineNo">3461</span> }<a name="line.3461"></a>
+<span class="sourceLineNo">3462</span> return online;<a name="line.3462"></a>
+<span class="sourceLineNo">3463</span> }<a name="line.3463"></a>
+<span class="sourceLineNo">3464</span><a name="line.3464"></a>
+<span class="sourceLineNo">3465</span> /**<a name="line.3465"></a>
+<span class="sourceLineNo">3466</span> * Set maxRecoveryErrorCount in DFSClient. In 0.20 pre-append its hard-coded to 5 and<a name="line.3466"></a>
+<span class="sourceLineNo">3467</span> * makes tests linger. Here is the exception you'll see:<a name="line.3467"></a>
+<span class="sourceLineNo">3468</span> * <pre><a name="line.3468"></a>
+<span class="sourceLineNo">3469</span> * 2010-06-15 11:52:28,511 WARN [DataStreamer for file /hbase/.logs/wal.1276627923013 block<a name="line.3469"></a>
+<span class="sourceLineNo">3470</span> * blk_928005470262850423_1021] hdfs.DFSClient$DFSOutputStream(2657): Error Recovery for block<a name="line.3470"></a>
+<span class="sourceLineNo">3471</span> * blk_928005470262850423_1021 failed because recovery from primary datanode 127.0.0.1:53683<a name="line.3471"></a>
+<span class="sourceLineNo">3472</span> * failed 4 times. Pipeline was 127.0.0.1:53687, 127.0.0.1:53683. Will retry...<a name="line.3472"></a>
+<span class="sourceLineNo">3473</span> * </pre><a name="line.3473"></a>
+<span class="sourceLineNo">3474</span> * @param stream A DFSClient.DFSOutputStream.<a name="line.3474"></a>
+<span class="sourceLineNo">3475</span> * @param max<a name="line.3475"></a>
+<span class="sourceLineNo">3476</span> * @throws NoSuchFieldException<a name="line.3476"></a>
+<span class="sourceLineNo">3477</span> * @throws SecurityException<a name="line.3477"></a>
+<span class="sourceLineNo">3478</span> * @throws IllegalAccessException<a name="line.3478"></a>
+<span class="sourceLineNo">3479</span> * @throws IllegalArgumentException<a name="line.3479"></a>
+<span class="sourceLineNo">3480</span> */<a name="line.3480"></a>
+<span class="sourceLineNo">3481</span> public static void setMaxRecoveryErrorCount(final OutputStream stream,<a name="line.3481"></a>
+<span class="sourceLineNo">3482</span> final int max) {<a name="line.3482"></a>
+<span class="sourceLineNo">3483</span> try {<a name="line.3483"></a>
+<span class="sourceLineNo">3484</span> Class<?> [] clazzes = DFSClient.class.getDeclaredClasses();<a name="line.3484"></a>
+<span class="sourceLineNo">3485</span> for (Class<?> clazz: clazzes) {<a name="line.3485"></a>
+<span class="sourceLineNo">3486</span> String className = clazz.getSimpleName();<a name="line.3486"></a>
+<span class="sourceLineNo">3487</span> if (className.equals("DFSOutputStream")) {<a name="line.3487"></a>
+<span class="sourceLineNo">3488</span> if (clazz.isInstance(stream)) {<a name="line.3488"></a>
+<span class="sourceLineNo">3489</span> Field maxRecoveryErrorCountField =<a name="line.3489"></a>
+<span class="sourceLineNo">3490</span> stream.getClass().getDeclaredField("maxRecoveryErrorCount");<a name="line.3490"></a>
+<span class="sourceLineNo">3491</span> maxRecoveryErrorCountField.setAccessible(true);<a name="line.3491"></a>
+<span class="sourceLineNo">3492</span> maxRecoveryErrorCountField.setInt(stream, max);<a name="line.3492"></a>
+<span class="sourceLineNo">3493</span> break;<a name="line.3493"></a>
+<span class="sourceLineNo">3494</span> }<a name="line.3494"></a>
+<span class="sourceLineNo">3495</span> }<a name="line.3495"></a>
+<span class="sourceLineNo">3496</span> }<a name="line.3496"></a>
+<span class="sourceLineNo">3497</span> } catch (Exception e) {<a name="line.3497"></a>
+<span class="sourceLineNo">3498</span> LOG.info("Could not set max recovery field", e);<a name="line.3498"></a>
+<span class="sourceLineNo">3499</span> }<a name="line.3499"></a>
+<span class="sourceLineNo">3500</span> }<a name="line.3500"></a>
+<span class="sourceLineNo">3501</span><a name="line.3501"></a>
+<span class="sourceLineNo">3502</span> /**<a name="line.3502"></a>
+<span class="sourceLineNo">3503</span> * Uses directly the assignment manager to assign the region. and waits until the specified region<a name="line.3503"></a>
+<span class="sourceLineNo">3504</span> * has completed assignment.<a name="line.3504"></a>
+<span class="sourceLineNo">3505</span> * @return true if the region is assigned false otherwise.<a name="line.3505"></a>
+<span class="sourceLineNo">3506</span> */<a name="line.3506"></a>
+<span class="sourceLineNo">3507</span> public boolean assignRegion(final RegionInfo regionInfo)<a name="line.3507"></a>
+<span class="sourceLineNo">3508</span> throws IOException, InterruptedException {<a name="line.3508"></a>
+<span class="sourceLineNo">3509</span> final AssignmentManager am = getHBaseCluster().getMaster().getAssignmentManager();<a name="line.3509"></a>
+<span class="sourceLineNo">3510</span> am.assign(regionInfo);<a name="line.3510"></a>
+<span class="sourceLineNo">3511</span> return AssignmentTestingUtil.waitForAssignment(am, regionInfo);<a name="line.3511"></a>
+<span class="sourceLineNo">3512</span> }<a name="line.3512"></a>
+<span class="sourceLineNo">3513</span><a name="line.3513"></a>
+<span class="sourceLineNo">3514</span> /**<a name="line.3514"></a>
+<span class="sourceLineNo">3515</span> * Move region to destination server and wait till region is completely moved and online<a name="line.3515"></a>
+<span class="sourceLineNo">3516</span> *<a name="line.3516"></a>
+<span class="sourceLineNo">3517</span> * @param destRegion region to move<a name="line.3517"></a>
+<span class="sourceLineNo">3518</span> * @param destServer destination server of the region<a name="line.3518"></a>
+<span class="sourceLineNo">3519</span> * @throws InterruptedException<a name="line.3519"></a>
+<span class="sourceLineNo">3520</span> * @throws IOException<a name="line.3520"></a>
+<span class="sourceLineNo">3521</span> */<a name="line.3521"></a>
+<span class="sourceLineNo">3522</span> public void moveRegionAndWait(RegionInfo destRegion, ServerName destServer)<a name="line.3522"></a>
+<span class="sourceLineNo">3523</span> throws InterruptedException, IOException {<a name="line.3523"></a>
+<span class="sourceLineNo">3524</span> HMaster master = getMiniHBaseCluster().getMaster();<a name="line.3524"></a>
+<span class="sourceLineNo">3525</span> // TODO: Here we start the move. The move can take a while.<a name="line.3525"></a>
+<span class="sourceLineNo">3526</span> getAdmin().move(destRegion.getEncodedNameAsBytes(), destServer);<a name="line.3526"></a>
+<span class="sourceLineNo">3527</span> while (true) {<a name="line.3527"></a>
+<span class="sourceLineNo">3528</span> ServerName serverName = master.getAssignmentManager().getRegionStates()<a name="line.3528"></a>
+<span class="sourceLineNo">3529</span> .getRegionServerOfRegion(destRegion);<a name="line.3529"></a>
+<span class="sourceLineNo">3530</span> if (serverName != null && serverName.equals(destServer)) {<a name="line.3530"></a>
+<span class="sourceLineNo">3531</span> assertRegionOnServer(destRegion, serverName, 2000);<a name="line.3531"></a>
+<span class="sourceLineNo">3532</span> break;<a name="line.3532"></a>
+<span class="sourceLineNo">3533</span> }<a name="line.3533"></a>
+<span class="sourceLineNo">3534</span> Thread.sleep(10);<a name="line.3534"></a>
+<span class="sourceLineNo">3535</span> }<a name="line.3535"></a>
+<span class="sourceLineNo">3536</span> }<a name="line.3536"></a>
+<span class="sourceLineNo">3537</span><a name="line.3537"></a>
+<span class="sourceLineNo">3538</span> /**<a name="line.3538"></a>
+<span class="sourceLineNo">3539</span> * Wait until all regions for a table in hbase:meta have a non-empty<a name="line.3539"></a>
+<span class="sourceLineNo">3540</span> * info:server, up to a configuable timeout value (default is 60 seconds)<a name="line.3540"></a>
+<span class="sourceLineNo">3541</span> * This means all regions have been deployed,<a name="line.3541"></a>
+<span class="sourceLineNo">3542</span> * master has been informed and updated hbase:meta with the regions deployed<a name="line.3542"></a>
+<span class="sourceLineNo">3543</span> * server.<a name="line.3543"></a>
+<span class="sourceLineNo">3544</span> * @param tableName the table name<a name="line.3544"></a>
<span class="sourceLineNo">3545</span> * @throws IOException<a name="line.3545"></a>
<span class="sourceLineNo">3546</span> */<a name="line.3546"></a>
-<span class="sourceLineNo">3547</span> public void waitUntilAllSystemRegionsAssigned() throws IOException {<a name="line.3547"></a>
... 33134 lines suppressed ...