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 &copy;2007&#x2013;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 &copy;2007&#x2013;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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="" />&#160;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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&nbsp;static&nbsp;final&nbsp;<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&nbsp;static&nbsp;final&nbsp;<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&nbsp;<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&nbsp;<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&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.533">rpcClient</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a>&lt;?&gt; <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&nbsp;<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&nbsp;<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&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.537">rpcTimeout</a></pre>
+<pre>protected final&nbsp;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&nbsp;<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>&lt;?&gt;&nbsp;rpcClient,
+<pre>protected&nbsp;<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>&lt;?&gt;&nbsp;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>&nbsp;addr,
                              <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;ticket,
                              int&nbsp;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&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.552">configureRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller)</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.AbstractRpcChannel.html#line.553">configureRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;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&nbsp;<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>&lt;?&gt;&nbsp;rpcClient,
+<pre>protected&nbsp;<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>&lt;?&gt;&nbsp;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>&nbsp;addr,
                                            <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;ticket,
                                            int&nbsp;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&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;<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&nbsp;md,
+<pre>public&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;<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&nbsp;md,
                                                                                   org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                   org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;param,
                                                                                   org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;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&nbsp;<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>&lt;?&gt;&nbsp;rpcClient,
+<pre>protected&nbsp;<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>&lt;?&gt;&nbsp;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>&nbsp;addr,
                                    <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;ticket,
                                    int&nbsp;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&nbsp;void&nbsp;<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&nbsp;md,
+<pre>public&nbsp;void&nbsp;<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&nbsp;md,
                        org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                        org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;param,
                        org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;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&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.476">configureHBaseRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.477">configureHBaseRpcController</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                       int&nbsp;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&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.491">closeInternal</a>()</pre>
+<pre>protected abstract&nbsp;void&nbsp;<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&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#line.494">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<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:&nbsp;<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&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel&nbsp;<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>&nbsp;sn,
+<pre>public&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.BlockingRpcChannel&nbsp;<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>&nbsp;sn,
                                                                                                    <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;ticket,
                                                                                                    int&nbsp;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&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel&nbsp;<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>&nbsp;sn,
+<pre>public&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel&nbsp;<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>&nbsp;sn,
                                                                                    <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                                                                    int&nbsp;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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &amp;&amp; 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&lt;T&gt; 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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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&lt;?&gt; 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&lt;?&gt; 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&lt;Message&gt; 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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
         <div class="row">
             <p>Copyright &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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 &copy;2007&#x2013;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&lt;Integer&gt;)</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>&nbsp;</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>&nbsp;</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>&lt;<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>&gt;&nbsp;ports)</code>&nbsp;</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>&nbsp;option)</code>&nbsp;</td>
+</tr>
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>static &lt;T&gt;&nbsp;<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>&lt;T&gt;&nbsp;lst,
             int&nbsp;i)</code>&nbsp;</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&nbsp;cluster)</code>&nbsp;</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&nbsp;cluster,
              boolean&nbsp;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>&nbsp;fsURI)</code>&nbsp;</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&nbsp;hbaseCluster)</code>&nbsp;</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>&nbsp;stream,
                         int&nbsp;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&nbsp;admin,
            org.apache.hadoop.hbase.TableName&nbsp;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>&nbsp;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&nbsp;createWALDir)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -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&nbsp;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&nbsp;numSlaves,
                 boolean&nbsp;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&nbsp;numSlaves,
                 boolean&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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&nbsp;numMasters,
                 int&nbsp;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>&nbsp;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&nbsp;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&nbsp;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>[]&nbsp;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&nbsp;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>[]&nbsp;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>[]&nbsp;hosts)</code>&nbsp;</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>[]&nbsp;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&nbsp;namenodePort)</code>&nbsp;</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&nbsp;numMasters,
                      int&nbsp;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&nbsp;numMasters,
                      int&nbsp;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&nbsp;numMasters,
                      int&nbsp;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>&nbsp;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&nbsp;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&nbsp;tableName,
              boolean&nbsp;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[]&nbsp;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>&nbsp;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[]&nbsp;row,
                    org.apache.hadoop.hbase.client.RegionLocator&nbsp;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>&nbsp;row,
                    org.apache.hadoop.hbase.client.RegionLocator&nbsp;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&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</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&nbsp;region,
                  byte[]&nbsp;f,
@@ -1708,14 +1712,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</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&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</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&nbsp;region,
                  byte[]&nbsp;f,
@@ -1723,7 +1727,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</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&nbsp;table,
                  byte[]&nbsp;f,
@@ -1731,78 +1735,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  int&nbsp;replicaId)</code>&nbsp;</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&nbsp;ltd,
                                     org.apache.hadoop.hbase.client.TableDescriptor&nbsp;rtd)</code>&nbsp;</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>&nbsp;host,
                int&nbsp;port)</code>&nbsp;</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&nbsp;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>...&nbsp;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[]&nbsp;table,
                   long&nbsp;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&nbsp;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&nbsp;table,
                   long&nbsp;timeoutMillis)</code>&nbsp;</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[]&nbsp;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[]&nbsp;table,
                  long&nbsp;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&nbsp;table,
                  long&nbsp;millisTimeout)</code>&nbsp;</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[]&nbsp;table,
                 long&nbsp;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&nbsp;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&nbsp;table,
                 long&nbsp;timeoutMillis)</code>&nbsp;</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&nbsp;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&nbsp;tableName,
                            long&nbsp;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&nbsp;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&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1919">fam1</a></pre>
+<pre>public static final&nbsp;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&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1920">fam2</a></pre>
+<pre>public static final&nbsp;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&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1921">fam3</a></pre>
+<pre>public static final&nbsp;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&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1922">COLUMNS</a></pre>
+<pre>public static final&nbsp;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&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1925">FIRST_CHAR</a></pre>
+<pre>public static final&nbsp;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&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1926">LAST_CHAR</a></pre>
+<pre>public static final&nbsp;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&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1927">START_KEY_BYTES</a></pre>
+<pre>public static final&nbsp;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&nbsp;<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&nbsp;<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&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2502">ROWS</a></pre>
+<pre>public static final&nbsp;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&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2517">KEYS</a></pre>
+<pre>public static final&nbsp;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&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2529">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final&nbsp;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&nbsp;<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&nbsp;void&nbsp;<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>&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1269">getMiniHBaseCluster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1282">shutdownMiniCluster</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniHBaseCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1297">shutdownMiniHBaseCluster</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>killMiniHBaseCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1315">killMiniHBaseCluster</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultRootDirPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1343">getDefaultRootDirPath</a>(boolean&nbsp;create)
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1352">getDefaultRootDirPath</a>(boolean&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultRootDirPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1358">getDefaultRootDirPath</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createRootDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1374">createRootDir</a>(boolean&nbsp;create)
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1383">createRootDir</a>(boolean&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createRootDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1389">createRootDir</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createWALRootDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1402">createWALRootDir</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1424">flush</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1432">flush</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1441">flush</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1440">compact</a>(boolean&nbsp;major)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1449">compact</a>(boolean&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1448">compact</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1457">compact</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                     boolean&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1459">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1468">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;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>&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1471">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1480">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;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>[]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1487">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1496">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1500">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1509">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    byte[]&nbsp;family,
                                                                    int&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1517">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1526">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1529">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1538">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    byte[][]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1541">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1550">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         byte[][]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1555">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1564">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         byte[][]&nbsp;splitKeys,
                                                         int&nbsp;replicaCount)
@@ -3510,7 +3530,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1561">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1570">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         int&nbsp;numVersions,
                                                         byte[]&nbsp;startKey,
@@ -3529,7 +3549,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1581">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1590">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
                                                         byte[][]&nbsp;families,
                                                         org.apache.hadoop.conf.Configuration&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1595">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1604">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
                                                         byte[][]&nbsp;families,
                                                         byte[][]&nbsp;splitKeys,
                                                         org.apache.hadoop.conf.Configuration&nbsp;c)
@@ -3577,7 +3597,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1615">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1624">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
                                                         byte[][]&nbsp;families,
                                                         byte[][]&nbsp;splitKeys,
                                                         org.apache.hadoop.hbase.regionserver.BloomType&nbsp;type,
@@ -3606,7 +3626,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1646">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1655">createTable</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
                                                         byte[][]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1676">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1685">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         byte[][]&nbsp;splitKeys,
                                                         int&nbsp;replicaCount,
@@ -3654,7 +3674,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1691">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1700">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[]&nbsp;family,
                                                         int&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1704">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1713">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         int&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1718">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1727">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         int&nbsp;numVersions,
                                                         byte[][]&nbsp;splitKeys)
@@ -3725,7 +3745,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1747">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1756">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    byte[][]&nbsp;families,
                                                                    int&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1761">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1770">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         int&nbsp;numVersions,
                                                         int&nbsp;blockSize)
@@ -3773,7 +3793,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1780">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1789">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         int&nbsp;numVersions,
                                                         int&nbsp;blockSize,
@@ -3791,7 +3811,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1810">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1819">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[][]&nbsp;families,
                                                         int[]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1839">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1848">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         byte[]&nbsp;family,
                                                         byte[][]&nbsp;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&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1861">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1870">createMultiRegionTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    byte[]&nbsp;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&nbsp;<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&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1873">modifyTableSync</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
+public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1882">modifyTableSync</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
                                                org.apache.hadoop.hbase.client.TableDescriptor&nbsp;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&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>setReplicas</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1881">setReplicas</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1890">setReplicas</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
                                org.apache.hadoop.hbase.TableName&nbsp;table,
                                int&nbsp;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&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1894">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1903">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableIfAny</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1907">deleteTableIfAny</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1916">deleteTableIfAny</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;void&nbsp;<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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<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>&nbsp;name,
+public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<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>&nbsp;name,
                                                                                   int&nbsp;minVersions,
                                                                                   int&nbsp;versions,
                                                                                   int&nbsp;ttl,
@@ -3957,7 +3977,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<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>&nbsp;name)</pre>
+public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<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>&nbsp;name)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1958">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;name,
+<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1967">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;name,
                                                                       int&nbsp;minVersions,
                                                                       int&nbsp;versions,
                                                                       int&nbsp;ttl,
@@ -3991,7 +4011,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1981">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;name)</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1990">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1986">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1995">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                       byte[]&nbsp;family)</pre>
 </li>
 </ul>
@@ -4017,7 +4037,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1991">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2000">createTableDescriptor</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                       byte[][]&nbsp;families,
                                                                       int&nbsp;maxVersions)</pre>
 </li>
@@ -4028,7 +4048,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2013">createLocalHRegion</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2022">createLocalHRegion</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                                                        byte[]&nbsp;startKey,
                                                                        byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2024">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2033">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                                                        org.apache.hadoop.hbase.client.TableDescriptor&nbsp;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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2036">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2045">createLocalHRegion</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                                                        org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                                                        org.apache.hadoop.hbase.wal.WAL&nbsp;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&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2059">createLocalHRegion</a>(byte[]&nbsp;tableName,
+public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2068">createLocalHRegion</a>(byte[]&nbsp;tableName,
                                                                                    byte[]&nbsp;startKey,
                                                                                    byte[]&nbsp;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>&nbsp;callingMethod,
@@ -4131,7 +4151,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2077">createLocalHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2086">createLocalHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                        byte[]&nbsp;startKey,
                                                                        byte[]&nbsp;stopKey,
                                                                        boolean&nbsp;isReadOnly,
@@ -4160,7 +4180,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHRegionWithInMemoryFlags</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2083">createLocalHRegionWithInMemoryFlags</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2092">createLocalHRegionWithInMemoryFlags</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                                         byte[]&nbsp;startKey,
                                                                                         byte[]&nbsp;stopKey,
                                                                                         boolean&nbsp;isReadOnly,
@@ -4181,7 +4201,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableData</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2119">deleteTableData</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2128">deleteTableData</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>truncateTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2139">truncateTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2148">truncateTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                           boolean&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>truncateTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2158">truncateTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2167">truncateTable</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadTable</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2169">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2178">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                      byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadTable</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2180">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2189">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                      byte[]&nbsp;f,
                      boolean&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadTable</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2191">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2200">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                      byte[][]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadTable</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2203">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2212">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                      byte[][]&nbsp;f,
                      byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadTable</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2215">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2224">loadTable</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                      byte[][]&nbsp;f,
                      byte[]&nbsp;value,
                      boolean&nbsp;writeToWAL)
@@ -4357,7 +4377,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadRegion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2283">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2292">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                       byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadRegion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2287">loadRegion</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2296">loadRegion</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
                       byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadRegion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2299">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2308">loadRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                       byte[]&nbsp;f,
                       boolean&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2336">loadNumericRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2345">loadNumericRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                             byte[]&nbsp;f,
                             int&nbsp;startRow,
                             int&nbsp;endRow)
@@ -4427,7 +4447,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>loadRandomRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2346">loadRandomRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2355">loadRandomRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                            byte[]&nbsp;f,
                            int&nbsp;rowSize,
                            int&nbsp;totalRows)
@@ -4444,7 +4464,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2358">verifyNumericRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2367">verifyNumericRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                               byte[]&nbsp;f,
                               int&nbsp;startRow,
                               int&nbsp;endRow,
@@ -4462,7 +4482,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2377">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2386">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                               byte[]&nbsp;f,
                               int&nbsp;startRow,
                               int&nbsp;endRow)
@@ -4479,7 +4499,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2382">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2391">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                               byte[]&nbsp;f,
                               int&nbsp;startRow,
                               int&nbsp;endRow)
@@ -4496,7 +4516,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2387">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2396">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                               byte[]&nbsp;f,
                               int&nbsp;startRow,
                               int&nbsp;endRow,
@@ -4514,7 +4534,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2392">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2401">verifyNumericRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                               byte[]&nbsp;f,
                               int&nbsp;startRow,
                               int&nbsp;endRow,
@@ -4532,7 +4552,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNumericRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2412">deleteNumericRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2421">deleteNumericRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                               byte[]&nbsp;f,
                               int&nbsp;startRow,
                               int&nbsp;endRow)
@@ -4549,7 +4569,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2427">countRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2436">countRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2431">countRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2440">countRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                             org.apache.hadoop.hbase.client.Scan&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2441">countRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2450">countRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                      byte[]...&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2452">countRows</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2461">countRows</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2461">countRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region)
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2470">countRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2465">countRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2474">countRows</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                      org.apache.hadoop.hbase.client.Scan&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>countRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2474">countRows</a>(org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;scanner)
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2483">countRows</a>(org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>checksumRows</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2489">checksumRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2498">checksumRows</a>(org.apache.hadoop.hbase.client.Table&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionsInMeta</h4>
-<pre>public&nbsp;<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>&lt;org.apache.hadoop.hbase.client.RegionInfo&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2551">createMultiRegionsInMeta</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<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>&lt;org.apache.hadoop.hbase.client.RegionInfo&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2560">createMultiRegionsInMeta</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                                 org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
                                                                                 byte[][]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createWal</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.wal.WAL&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2577">createWal</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;org.apache.hadoop.hbase.wal.WAL&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2586">createWal</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                         org.apache.hadoop.fs.Path&nbsp;rootDir,
                                                         org.apache.hadoop.hbase.client.RegionInfo&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createRegionAndWAL</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2591">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2600">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                                                               org.apache.hadoop.fs.Path&nbsp;rootDir,
                                                                               org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd)
@@ -4732,7 +4752,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createRegionAndWAL</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2600">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2609">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                                                               org.apache.hadoop.fs.Path&nbsp;rootDir,
                                                                               org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
@@ -4752,7 +4772,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createRegionAndWAL</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2612">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2621">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                                                               org.apache.hadoop.fs.Path&nbsp;rootDir,
                                                                               org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
@@ -4772,7 +4792,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createRegionAndWAL</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2625">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2634">createRegionAndWAL</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                                                               org.apache.hadoop.fs.Path&nbsp;rootDir,
                                                                               org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
@@ -4792,7 +4812,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableRows</h4>
-<pre>public&nbsp;<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>&lt;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2638">getMetaTableRows</a>()
+<pre>public&nbsp;<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>&lt;byte[]&gt;&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableRows</h4>
-<pre>public&nbsp;<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>&lt;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2658">getMetaTableRows</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;<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>&lt;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2667">getMetaTableRows</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getOtherRegionServer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2700">getOtherRegionServer</a>(org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;rs)</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2709">getOtherRegionServer</a>(org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;rs)</pre>
 </li>
 </ul>
 <a name="getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">
@@ -4831,7 +4851,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getRSForFirstRegionInTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2718">getRSForFirstRegionInTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2727">getRSForFirstRegionInTable</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniMapReduceCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.mapred.MiniMRCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2756">startMiniMapReduceCluster</a>()
+<pre>public&nbsp;org.apache.hadoop.mapred.MiniMRCluster&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniMapReduceCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2867">shutdownMiniMapReduceCluster</a>()</pre>
+<pre>public&nbsp;void&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createMockRegionServerService</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2881">createMockRegionServerService</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createMockRegionServerService</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2889">createMockRegionServerService</a>(org.apache.hadoop.hbase.ipc.RpcServerInterface&nbsp;rpc)
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2898">createMockRegionServerService</a>(org.apache.hadoop.hbase.ipc.RpcServerInterface&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createMockRegionServerService</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2901">createMockRegionServerService</a>(org.apache.hadoop.hbase.ServerName&nbsp;name)
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2910">createMockRegionServerService</a>(org.apache.hadoop.hbase.ServerName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>enableDebug</h4>
-<pre>public&nbsp;void&nbsp;<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>&lt;?&gt;&nbsp;clazz)</pre>
+<pre>public&nbsp;void&nbsp;<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>&lt;?&gt;&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>expireMasterSession</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2927">expireMasterSession</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>expireRegionServerSession</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2936">expireRegionServerSession</a>(int&nbsp;index)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2945">expireRegionServerSession</a>(int&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>expireSession</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2962">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;nodeZK)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2971">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>expireSession</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2977">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;nodeZK,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2986">expireSession</a>(org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;nodeZK,
                           boolean&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getHBaseCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3028">getHBaseCluster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getHBaseClusterInterface</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.HBaseCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3040">getHBaseClusterInterface</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.HBaseCluster&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnection</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Connection&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3056">getConnection</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Connection&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getAsyncConnection</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.AsyncClusterConnection&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3063">getAsyncConnection</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.client.AsyncClusterConnection&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>closeConnection</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3070">closeConnection</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getAdmin</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Admin&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3081">getAdmin</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Admin&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getHbck</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Hbck&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3093">getHbck</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Hbck&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>unassignRegion</h4>
-<pre>public&nbsp;void&nbsp;<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>&nbsp;regionName)
+<pre>public&nbsp;void&nbsp;<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>&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>unassignRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3111">unassignRegion</a>(byte[]&nbsp;regionName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3120">unassignRegion</a>(byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>unassignRegionByRow</h4>
-<pre>public&nbsp;void&nbsp;<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>&nbsp;row,
+<pre>public&nbsp;void&nbsp;<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>&nbsp;row,
                                 org.apache.hadoop.hbase.client.RegionLocator&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>unassignRegionByRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3132">unassignRegionByRow</a>(byte[]&nbsp;row,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3141">unassignRegionByRow</a>(byte[]&nbsp;row,
                                 org.apache.hadoop.hbase.client.RegionLocator&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplittableRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3144">getSplittableRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3153">getSplittableRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                         int&nbsp;maxAttempts)</pre>
 </li>
 </ul>
@@ -5200,7 +5220,7 @@ public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3177">getDFSCluster</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>setDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3181">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3190">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>setDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3193">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3202">setDFSCluster</a>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
                           boolean&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getTestFileSystem</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3202">getTestFileSystem</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableAvailable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3213">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName&nbsp;table)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3222">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableAvailable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3218">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3227">waitTableAvailable</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
                                long&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableAvailable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3228">waitTableAvailable</a>(byte[]&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3237">waitTableAvailable</a>(byte[]&nbsp;table,
                                long&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>explainTableAvailability</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3233">explainTableAvailability</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3242">explainTableAvailability</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>explainTableState</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3257">explainTableState</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3266">explainTableState</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
                                 org.apache.hadoop.hbase.client.TableState.State&nbsp;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&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../
 <li class="blockList">
 <h4>findLastTableState</h4>
 <pre>@Nullable
-public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3271">findLastTableState</a>(org.apache.hadoop.hbase.TableName&nbsp;table)
+public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3280">findLastTableState</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3299">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName&nbsp;table)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3308">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3313">waitTableEnabled</a>(byte[]&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3322">waitTableEnabled</a>(byte[]&nbsp;table,
                              long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3318">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3327">waitTableEnabled</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
                              long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableDisabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3330">waitTableDisabled</a>(byte[]&nbsp;table)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3339">waitTableDisabled</a>(byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableDisabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3335">waitTableDisabled</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3344">waitTableDisabled</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
                               long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableDisabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3347">waitTableDisabled</a>(byte[]&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3356">waitTableDisabled</a>(byte[]&nbsp;table,
                               long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>ensureSomeRegionServersAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3359">ensureSomeRegionServersAvailable</a>(int&nbsp;num)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3368">ensureSomeRegionServersAvailable</a>(int&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>ensureSomeNonStoppedRegionServersAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3380">ensureSomeNonStoppedRegionServersAvailable</a>(int&nbsp;num)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3389">ensureSomeNonStoppedRegionServersAvailable</a>(int&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getDifferentUser</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.security.User&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3412">getDifferentUser</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
+<pre>public static&nbsp;org.apache.hadoop.hbase.security.User&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3421">getDifferentUser</a>(org.apache.hadoop.conf.Configuration&nbsp;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>&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllOnlineRegions</h4>
-<pre>public static&nbsp;<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>&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3428">getAllOnlineRegions</a>(<a href="../../../../org/apache/hadoop/hbase/M [...]
+<pre>public static&nbsp;<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>&lt;<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>&gt;&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxRecoveryErrorCount</h4>
-<pre>public static&nbsp;void&nbsp;<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>&nbsp;stream,
+<pre>public static&nbsp;void&nbsp;<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>&nbsp;stream,
                                             int&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>assignRegion</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3498">assignRegion</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;regionInfo)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3507">assignRegion</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>moveRegionAndWait</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3513">moveRegionAndWait</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;destRegion,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3522">moveRegionAndWait</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;destRegion,
                               org.apache.hadoop.hbase.ServerName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitUntilAllRegionsAssigned</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3538">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3547">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitUntilAllSystemRegionsAssigned</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3547">waitUntilAllSystemRegionsAssigned</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitUntilAllRegionsAssigned</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3560">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3569">waitUntilAllRegionsAssigned</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                         long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getFromStoreFile</h4>
-<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3643">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
+<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3652">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                                                                   org.apache.hadoop.hbase.client.Get&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionSplitStartKeys</h4>
-<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3673">getRegionSplitStartKeys</a>(byte[]&nbsp;startKey,
+<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3682">getRegionSplitStartKeys</a>(byte[]&nbsp;startKey,
                                         byte[]&nbsp;endKey,
                                         int&nbsp;numRegions)</pre>
 <div class="block">Create region split keys between startkey and endKey</div>
@@ -5723,7 +5743,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getFromStoreFile</h4>
-<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3686">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
+<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3695">getFromStoreFile</a>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                                                                   byte[]&nbsp;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>&lt;byte[]&gt;&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>assertKVListsEqual</h4>
-<pre>public static&nbsp;void&nbsp;<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>&nbsp;additionalMsg,
+<pre>public static&nbsp;void&nbsp;<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>&nbsp;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>&lt;? extends org.apache.hadoop.hbase.Cell&gt;&nbsp;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>&lt;? extends org.apache.hadoop.hbase.Cell&gt;&nbsp;actual)</pre>
 </li>
@@ -5752,7 +5772,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>safeGetAsStr</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;<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>&nbsp;<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>&lt;T&gt;&nbsp;lst,
+<pre>public static&nbsp;&lt;T&gt;&nbsp;<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>&nbsp;<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>&lt;T&gt;&nbsp;lst,
                                       int&nbsp;i)</pre>
 </li>
 </ul>
@@ -5762,7 +5782,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterKey</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3732">getClusterKey</a>()</pre>
+<pre>public&nbsp;<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>&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createRandomTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3740">createRandomTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3749">createRandomTable</a>(org.apache.hadoop.hbase.TableName&nbsp;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>&lt;<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>&gt;&nbsp;families,
                                                               int&nbsp;maxVersions,
                                                               int&nbsp;numColsPerRow,
@@ -5794,7 +5814,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>randomFreePort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3828">randomFreePort</a>()</pre>
+<pre>public static&nbsp;int&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>randomMultiCastAddress</h4>
-<pre>public static&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3898">randomMultiCastAddress</a>()</pre>
+<pre>public static&nbsp;<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>&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForHostPort</h4>
-<pre>public static&nbsp;void&nbsp;<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>&nbsp;host,
+<pre>public static&nbsp;void&nbsp;<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>&nbsp;host,
                                    int&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3933">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3942">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                               byte[]&nbsp;columnFamily,
                                               org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;compression,
@@ -5849,7 +5869,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3945">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3954">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                               byte[]&nbsp;columnFamily,
                                               org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;compression,
@@ -5874,7 +5894,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3964">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3973">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                               byte[][]&nbsp;columnFamilies,
                                               org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;compression,
@@ -5899,7 +5919,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3987">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3996">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                               org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3997">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4006">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                               org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;hcd,
                                               int&nbsp;numRegionsPerServer)
@@ -5940,7 +5960,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4008">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4017">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                               org.apache.hadoop.hbase.client.ColumnFamilyDescriptor[]&nbsp;hcds,
                                               int&nbsp;numRegionsPerServer)
@@ -5961,7 +5981,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createPreSplitLoadTestTable</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4020">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4029">createPreSplitLoadTestTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                               org.apache.hadoop.hbase.client.TableDescriptor&nbsp;td,
                                               org.apache.hadoop.hbase.client.ColumnFamilyDescriptor[]&nbsp;cds,
                                               org.apache.hadoop.hbase.util.RegionSplitter.SplitAlgorithm&nbsp;splitter,
@@ -5983,7 +6003,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRSPort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4067">getMetaRSPort</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection)
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4076">getMetaRSPort</a>(org.apache.hadoop.hbase.client.Connection&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>assertRegionOnServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4079">assertRegionOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;hri,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4088">assertRegionOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;hri,
                                  org.apache.hadoop.hbase.ServerName&nbsp;server,
                                  long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>assertRegionOnlyOnServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4098">assertRegionOnlyOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;hri,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4107">assertRegionOnlyOnServer</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;hri,
                                      org.apache.hadoop.hbase.ServerName&nbsp;server,
                                      long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createTestRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<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>&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<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>&nbsp;tableName,
                                                                      org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>createTestRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<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>&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<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>&nbsp;tableName,
                                                                      org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;cd,
                                                                      org.apache.hadoop.hbase.io.hfile.BlockCache&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>setFileSystemURI</h4>
-<pre>public&nbsp;void&nbsp;<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>&nbsp;fsURI)</pre>
+<pre>public&nbsp;void&nbsp;<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>&nbsp;fsURI)</pre>
 </li>
 </ul>
 <a name="predicateNoRegionsInTransition--">
@@ -6079,7 +6099,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>predicateNoRegionsInTransition</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.ExplainingPredicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4150">predicateNoRegionsInTransition</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.ExplainingPredicate&lt;<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>&gt;&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>predicateTableEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.Predicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4173">predicateTableEnabled</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.Predicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4182">predicateTableEnabled</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>predicateTableDisabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.Predicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4190">predicateTableDisabled</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.Predicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4199">predicateTableDisabled</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>predicateTableAvailable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.Predicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4207">predicateTableAvailable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Waiter.Predicate&lt;<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>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4216">predicateTableAvailable</a>(org.apache.hadoop.hbase.TableName&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitUntilNoRegionsInTransition</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4244">waitUntilNoRegionsInTransition</a>(long&nbsp;timeout)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4253">waitUntilNoRegionsInTransition</a>(long&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitUntilNoRegionsInTransition</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4252">waitUntilNoRegionsInTransition</a>()
+<pre>public&nbsp;void&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>waitLabelAvailable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4261">waitLabelAvailable</a>(long&nbsp;timeoutMillis,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4270">waitLabelAvailable</a>(long&nbsp;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>...&nbsp;labels)</pre>
 <div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
 <dl>
@@ -6167,7 +6187,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>generateColumnDescriptors</h4>
-<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.HColumnDescriptor&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4292">generateColumnDescriptors</a>()</pre>
+<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.HColumnDescriptor&gt;&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>generateColumnDescriptors</h4>
-<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.HColumnDescriptor&gt;&nbsp;<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>&nbsp;prefix)</pre>
+<pre>public static&nbsp;<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>&lt;org.apache.hadoop.hbase.HColumnDescriptor&gt;&nbsp;<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>&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getSupportedCompressionAlgorithms</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4325">getSupportedCompressionAlgorithms</a>()</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm[]&nbsp;<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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getClosestRowBefore</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Result&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4340">getClosestRowBefore</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Result&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4349">getClosestRowBefore</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
                                                                  byte[]&nbsp;row,
                                                                  byte[]&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMiniKdc</h4>
-<pre>public&nbsp;org.apache.hadoop.minikdc.MiniKdc&nbsp;<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>&nbsp;keytabFile)
+<pre>public&nbsp;org.apache.hadoop.minikdc.MiniKdc&nbsp;<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>&nbsp;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&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumHFiles</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4399">getNumHFiles</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4408">getNumHFiles</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                         byte[]&nbsp;family)</pre>
 </li>
 </ul>
@@ -6256,7 +6276,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumHFilesForRS</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4408">getNumHFilesForRS</a>(org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;rs,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4417">getNumHFilesForRS</a>(org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;rs,
                              org.apache.hadoop.hbase.TableName&nbsp;tableName,
                              byte[]&nbsp;family)</pre>
 </li>
@@ -6267,7 +6287,7 @@ public&nbsp;org.apache.hadoop.hbase.client.TableState&nbsp;<a href="../../../../
 <ul class="blockListLast">
 <li class="blockList">
 <h4>verifyTableDescriptorIgnoreTableName</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4417">verifyTableDescriptorIgnoreTableName</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;ltd,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.4426">verifyTableDescriptorIgnoreTableName</a>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;ltd,
                                                  org.apache.hadoop.hbase.client.TableDescriptor&nbsp;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>&nbsp;option)</code>&nbsp;</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>&nbsp;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>&nbsp;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&lt;Integer&gt; 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 &lt;code&gt;create&lt;/code&gt;<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 &lt;code&gt;create&lt;/code&gt; 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 &lt;code&gt;create&lt;/code&gt; 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&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(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 &lt; 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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-22002"&gt;HBASE-22002&lt;/a&gt;<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 &lt;code&gt;create&lt;/code&gt;<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 &lt;code&gt;create&lt;/code&gt; 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 &lt;code&gt;create&lt;/code&gt; 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&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(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 &lt; 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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-22002"&gt;HBASE-22002&lt;/a&gt;<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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-13893"&gt;HBASE-13893&lt;/a&gt;<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 &lt;code&gt;name&lt;/code&gt;.<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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-13893"&gt;HBASE-13893&lt;/a&gt;<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 &lt;code&gt;name&lt;/code&gt;.<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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-13893"&gt;HBASE-13893&lt;/a&gt;<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 &amp;&amp; i &lt; 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&lt;Put&gt; puts = new ArrayList&lt;&gt;();<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 &lt; 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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-13893"&gt;HBASE-13893&lt;/a&gt;<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 &lt;code&gt;name&lt;/code&gt;.<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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-13893"&gt;HBASE-13893&lt;/a&gt;<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 &lt;code&gt;name&lt;/code&gt;.<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 &lt;a href="https://issues.apache.org/jira/browse/HBASE-13893"&gt;HBASE-13893&lt;/a&gt;<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 &amp;&amp; i &lt; 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&lt;Put&gt; puts = new ArrayList&lt;&gt;();<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 &lt; 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 &lt;= 'z'; b1++) {<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span>        for (byte b2 = 'a'; b2 &lt;= 'z'; b2++) {<a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>          for (byte b3 = 'a'; b3 &lt;= '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) &gt;= 0<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>                &amp;&amp; Bytes.compareTo(new byte[] {b1,b2,b3}, stopRow) &lt; 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 &lt;= 'z'; b1++) {<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>      for (byte b2 = 'a'; b2 &lt;= 'z'; b2++) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>        for (byte b3 = 'a'; b3 &lt;= '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 &gt;= 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &amp;&amp; !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 &lt;= 'z'; b1++) {<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>        for (byte b2 = 'a'; b2 &lt;= 'z'; b2++) {<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>          for (byte b3 = 'a'; b3 &lt;= '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) &gt;= 0<a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>                &amp;&amp; Bytes.compareTo(new byte[] {b1,b2,b3}, stopRow) &lt; 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 &lt;= 'z'; b1++) {<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      for (byte b2 = 'a'; b2 &lt;= 'z'; b2++) {<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>        for (byte b3 = 'a'; b3 &lt;= '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 &gt;= 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &amp;&amp; !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 &lt; 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 &lt; 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&lt;Cell&gt; results = new ArrayList&lt;&gt;();<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 &lt;= 'z'; b1++) {<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>      for (byte b2 = 'a'; b2 &lt;= 'z'; b2++) {<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>        for (byte b3 = 'a'; b3 &lt;= '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&lt;RegionInfo&gt; 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&lt;RegionInfo&gt; newRegions = new ArrayList&lt;&gt;(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 &lt; 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&lt;Cell&gt; results = new ArrayList&lt;&gt;();<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 &lt;= 'z'; b1++) {<a name="line.2514"></a>
+<span class="sourceLineNo">2515</span>      for (byte b2 = 'a'; b2 &lt;= 'z'; b2++) {<a name="line.2515"></a>
+<span class="sourceLineNo">2516</span>        for (byte b3 = 'a'; b3 &lt;= '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&lt;RegionInfo&gt; 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&lt;RegionInfo&gt; newRegions = new ArrayList&lt;&gt;(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 &lt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<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 -&gt; " +<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&lt;byte[]&gt; 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&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<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 -&gt; " +<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&lt;RegionInfo&gt; 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&lt;RegionInfo&gt; 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 -&gt; !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(() -&gt; 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 &lt;code&gt;MiniMRCluster&lt;/code&gt; with a default number of<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>   * &lt;code&gt;TaskTracker&lt;/code&gt;'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() &amp; ~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 &lt;code&gt;MiniMRCluster&lt;/code&gt;. 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 &lt;code&gt;TaskTracker&lt;/code&gt;'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&lt;byte[]&gt; 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&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<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 -&gt; " +<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&lt;byte[]&gt; 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&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<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 -&gt; " +<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&lt;RegionInfo&gt; 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&lt;RegionInfo&gt; 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 -&gt; !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(() -&gt; 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 &lt;code&gt;MiniMRCluster&lt;/code&gt; with a default number of<a name="line.2760"></a>
+<span class="sourceLineNo">2761</span>   * &lt;code&gt;TaskTracker&lt;/code&gt;'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() &amp; ~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 &lt;code&gt;MiniMRCluster&lt;/code&gt;. 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 &lt;code&gt;TaskTracker&lt;/code&gt;'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 &lt;code&gt;MiniMRCluster&lt;/code&gt;.<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&lt;?&gt; 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 &lt;code&gt;MiniMRCluster&lt;/code&gt;.<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&lt;?&gt; 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>         &amp;&amp; System.currentTimeMillis() - start &lt; 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 &amp; 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>         &amp;&amp; System.currentTimeMillis() - start &lt; 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>   * &lt;p&gt;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 &amp; 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>   * &lt;p&gt;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&lt;HRegion&gt; 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&lt;Integer&gt; attempted = new HashSet&lt;&gt;();<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 &gt; 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 &lt; 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 &amp;&amp; requireDown &amp;&amp; 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&lt;RegionInfo, ServerName&gt; 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&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; 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&lt;RegionInfo, ServerName&gt; 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 + " &lt;&gt; " + 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&lt;TableState&gt; lastTableState = new AtomicReference&lt;&gt;(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&lt;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&lt;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 &lt;code&gt;c&lt;/code&gt; 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&lt;String&gt; 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&lt;String&gt; online = new TreeSet&lt;&gt;();<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>   * &lt;pre&gt;<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>   * &lt;/pre&gt;<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&lt;?&gt; [] clazzes = DFSClient.class.getDeclaredClasses();<a name="line.3475"></a>
-<span class="sourceLineNo">3476</span>      for (Class&lt;?&gt; 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 &amp;&amp; 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&lt;HRegion&gt; 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&lt;Integer&gt; attempted = new HashSet&lt;&gt;();<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 &gt; 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 &lt; 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 &amp;&amp; requireDown &amp;&amp; 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&lt;RegionInfo, ServerName&gt; 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&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; 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&lt;RegionInfo, ServerName&gt; 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 + " &lt;&gt; " + 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&lt;TableState&gt; lastTableState = new AtomicReference&lt;&gt;(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&lt;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&lt;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 &lt;code&gt;c&lt;/code&gt; 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&lt;String&gt; 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&lt;String&gt; online = new TreeSet&lt;&gt;();<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>   * &lt;pre&gt;<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>   * &lt;/pre&gt;<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&lt;?&gt; [] clazzes = DFSClient.class.getDeclaredClasses();<a name="line.3484"></a>
+<span class="sourceLineNo">3485</span>      for (Class&lt;?&gt; 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 &amp;&amp; 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 ...