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 2018/04/09 14:47:54 UTC

[01/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 3d55f76c0 -> 0e1d8d259


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
index 676ae61..c658da2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
@@ -369,391 +369,397 @@
 <span class="sourceLineNo">361</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.362"></a>
 <span class="sourceLineNo">363</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    UTIL.compact(tableTwo, true);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    ADMIN.splitRegionAsync(hris.get(0).getRegionName(), Bytes.toBytes("3")).get(10,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TimeUnit.SECONDS);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    assertEquals(initialRegions, hris.size());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // Fail region merge through Coprocessor hook<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    masterObserver.failMerge(true);<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    f = ADMIN.mergeRegionsAsync(<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      false);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      f.get(10, TimeUnit.SECONDS);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      fail("Merge was supposed to fail!");<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    } catch (ExecutionException ee) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Expected.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, hris.size());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // verify that we cannot split<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      fail();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } catch (DoNotRetryRegionException e) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // Expected<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    Thread.sleep(2000);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * HBASE-13394<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Test<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    NamespaceDescriptor nspDesc =<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        NamespaceDescriptor.create(nsp1)<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ADMIN.createNamespace(nspDesc);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        ADMIN.createTable(tableDescOne);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } catch (Exception exp) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        LOG.error(exp.toString(), exp);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        ADMIN.createTable(tableDescOne);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      } catch (Exception e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        LOG.error(e.toString(), e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      nstate = getNamespaceState(nsp1);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    } finally {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        ADMIN.disableTable(tableOne);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        deleteTable(tableOne);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      ADMIN.deleteNamespace(nsp1);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      IOException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return getQuotaManager().getState(namespace);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    String skey = Bytes.toString(startKey);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    int key;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (StringUtils.isBlank(skey)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    } else {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return Bytes.toBytes("" + key);<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>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    volatile CountDownLatch postCompact;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        throws IOException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      postCompact.countDown();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      postCompact = new CountDownLatch(1);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>    @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return Optional.of(this);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">364</span>    byte[] splitKey = Bytes.toBytes("3");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    HRegion regionToSplit = UTIL.getMiniHBaseCluster().getRegions(tableTwo).stream()<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      .filter(r -&gt; r.getRegionInfo().containsRow(splitKey)).findFirst().get();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    regionToSplit.compact(true);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // the above compact may quit immediately if there is a compaction ongoing, so here we need to<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // wait a while to let the ongoing compaction finish.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    UTIL.waitFor(10000, regionToSplit::isSplittable);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ADMIN.splitRegionAsync(regionToSplit.getRegionInfo().getRegionName(), splitKey).get(10,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      TimeUnit.SECONDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    assertEquals(initialRegions, hris.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // Fail region merge through Coprocessor hook<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    masterObserver.failMerge(true);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    f = ADMIN.mergeRegionsAsync(<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      false);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      f.get(10, TimeUnit.SECONDS);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      fail("Merge was supposed to fail!");<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    } catch (ExecutionException ee) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // Expected.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertEquals(initialRegions, hris.size());<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    // verify that we cannot split<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      fail();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    } catch (DoNotRetryRegionException e) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Expected<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    Thread.sleep(2000);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * HBASE-13394<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  @Test<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    NamespaceDescriptor nspDesc =<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        NamespaceDescriptor.create(nsp1)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ADMIN.createNamespace(nspDesc);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    try {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        ADMIN.createTable(tableDescOne);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      } catch (Exception exp) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        LOG.error(exp.toString(), exp);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        ADMIN.createTable(tableDescOne);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      } catch (Exception e) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        LOG.error(e.toString(), e);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      nstate = getNamespaceState(nsp1);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    } finally {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        ADMIN.disableTable(tableOne);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        deleteTable(tableOne);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      ADMIN.deleteNamespace(nsp1);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      IOException {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return getQuotaManager().getState(namespace);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    String skey = Bytes.toString(startKey);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    int key;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    if (StringUtils.isBlank(skey)) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    } else {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return Bytes.toBytes("" + key);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    volatile CountDownLatch postCompact;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        throws IOException {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      postCompact.countDown();<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      postCompact = new CountDownLatch(1);<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>  @Test<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public void testStatePreserve() throws Exception {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ADMIN.createNamespace(nspDesc);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    tableDescOne.addFamily(fam1);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    tableDescTwo.addFamily(fam1);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    tableDescThree.addFamily(fam1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    ADMIN.disableTable(tableThree);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    deleteTable(tableThree);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    // wait for chore to complete<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      public boolean evaluate() throws Exception {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    });<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    restartMaster();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        .getTables().size(), after.getTables().size());<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      public boolean evaluate() throws Exception {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        if (master == null) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          return false;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    });<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void restartMaster() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    UTIL.getHBaseCluster().startMaster();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    waitForQuotaInitialize(UTIL);<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>  private NamespaceAuditor getQuotaManager() {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>    @Override<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return Optional.of(this);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>    @Override<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>        TableName tableName) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.565"></a>
+<span class="sourceLineNo">491</span>    @Override<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      return Optional.of(this);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  @Test<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public void testStatePreserve() throws Exception {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    ADMIN.createNamespace(nspDesc);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    tableDescOne.addFamily(fam1);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    tableDescTwo.addFamily(fam1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    tableDescThree.addFamily(fam1);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ADMIN.disableTable(tableThree);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    deleteTable(tableThree);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    // wait for chore to complete<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      @Override<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      public boolean evaluate() throws Exception {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    });<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    restartMaster();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        .getTables().size(), after.getTables().size());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      public boolean evaluate() throws Exception {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        if (master == null) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          return false;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    });<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  private void restartMaster() throws Exception {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    UTIL.getHBaseCluster().startMaster();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    waitForQuotaInitialize(UTIL);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  private NamespaceAuditor getQuotaManager() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      return Optional.of(this);<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>    @Override<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    public void postCompletedDeleteTableAction(<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        final TableName tableName) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      tableDeletionLatch.countDown();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    @Override<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    public void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        throw new IOException("Throw exception as it is demanded.");<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>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    // NOTE: We need a latch because admin is not sync,<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    ADMIN.deleteTable(tableName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    observer.tableDeletionLatch.await();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Test(expected = QuotaExceededException.class)<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    NamespaceDescriptor nspDesc =<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            .build();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    ADMIN.createNamespace(nspDesc);<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    HTableDescriptor tableDescOne =<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    tableDescOne.addFamily(fam1);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    HTableDescriptor tableDescTwo =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    tableDescTwo.addFamily(fam1);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ADMIN.createTable(tableDescOne);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  @Test(expected = QuotaExceededException.class)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    NamespaceDescriptor nspDesc =<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            .build();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    ADMIN.createNamespace(nspDesc);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    tableDescOne.addFamily(fam1);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    ADMIN.createTable(tableDescOne);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testCloneSnapshot() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    NamespaceDescriptor nspDesc =<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    ADMIN.createNamespace(nspDesc);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    tableDescOne.addFamily(fam1);<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>    int tableLength;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      tableLength = locator.getStartKeys().length;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.657"></a>
+<span class="sourceLineNo">569</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        TableName tableName) throws IOException {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void postCompletedDeleteTableAction(<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        final TableName tableName) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      tableDeletionLatch.countDown();<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 void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        throw new IOException("Throw exception as it is demanded.");<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>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    // NOTE: We need a latch because admin is not sync,<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    ADMIN.deleteTable(tableName);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    observer.tableDeletionLatch.await();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  @Test(expected = QuotaExceededException.class)<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    NamespaceDescriptor nspDesc =<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.603"></a>
+<span class="sourceLineNo">604</span>            .build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    ADMIN.createNamespace(nspDesc);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    HTableDescriptor tableDescOne =<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    tableDescOne.addFamily(fam1);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    HTableDescriptor tableDescTwo =<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    tableDescTwo.addFamily(fam1);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    ADMIN.createTable(tableDescOne);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>  @Test(expected = QuotaExceededException.class)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NamespaceDescriptor nspDesc =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            .build();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    ADMIN.createNamespace(nspDesc);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    tableDescOne.addFamily(fam1);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    ADMIN.createTable(tableDescOne);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.636"></a>
+<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCloneSnapshot() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    NamespaceDescriptor nspDesc =<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    ADMIN.createNamespace(nspDesc);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    tableDescOne.addFamily(fam1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.657"></a>
 <span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      tableLength = locator.getStartKeys().length;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  @Test<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  public void testRestoreSnapshot() throws Exception {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    NamespaceDescriptor nspDesc =<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        NamespaceDescriptor.create(nsp)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    ADMIN.createNamespace(nspDesc);<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    tableDescOne.addFamily(fam1);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.686"></a>
-<span class="sourceLineNo">687</span><a name="line.687"></a>
-<span class="sourceLineNo">688</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.689"></a>
+<span class="sourceLineNo">659</span>    int tableLength;<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      tableLength = locator.getStartKeys().length;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      tableLength = locator.getStartKeys().length;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Test<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public void testRestoreSnapshot() throws Exception {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    NamespaceDescriptor nspDesc =<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        NamespaceDescriptor.create(nsp)<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    ADMIN.createNamespace(nspDesc);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    tableDescOne.addFamily(fam1);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.689"></a>
 <span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    Collections.sort(regions);<a name="line.692"></a>
+<span class="sourceLineNo">691</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.692"></a>
 <span class="sourceLineNo">693</span><a name="line.693"></a>
-<span class="sourceLineNo">694</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    Thread.sleep(2000);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    ADMIN.disableTable(tableName1);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    ADMIN.enableTable(tableName1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>  }<a name="line.705"></a>
+<span class="sourceLineNo">694</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    Collections.sort(regions);<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    Thread.sleep(2000);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    ADMIN.disableTable(tableName1);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.705"></a>
 <span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Test<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    NamespaceDescriptor nspDesc =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        NamespaceDescriptor.create(nsp)<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    ADMIN.createNamespace(nspDesc);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    tableDescOne.addFamily(fam1);<a name="line.719"></a>
-<span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    // snapshot has 4 regions<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    ADMIN.disableTable(tableName1);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    ADMIN.deleteTable(tableName1);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ADMIN.createTable(tableDescOne);<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    ADMIN.modifyNamespace(ndesc);<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">707</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.707"></a>
+<span class="sourceLineNo">708</span><a name="line.708"></a>
+<span class="sourceLineNo">709</span>    ADMIN.enableTable(tableName1);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  @Test<a name="line.713"></a>
+<span class="sourceLineNo">714</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    NamespaceDescriptor nspDesc =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        NamespaceDescriptor.create(nsp)<a name="line.717"></a>
+<span class="sourceLineNo">718</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    ADMIN.createNamespace(nspDesc);<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    tableDescOne.addFamily(fam1);<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.730"></a>
+<span class="sourceLineNo">731</span><a name="line.731"></a>
+<span class="sourceLineNo">732</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    // snapshot has 4 regions<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.735"></a>
 <span class="sourceLineNo">736</span>    ADMIN.disableTable(tableName1);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    try {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.739"></a>
-<span class="sourceLineNo">740</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    } catch (RestoreSnapshotException ignore) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    ADMIN.enableTable(tableName1);<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>}<a name="line.748"></a>
+<span class="sourceLineNo">737</span>    ADMIN.deleteTable(tableName1);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    ADMIN.createTable(tableDescOne);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    ADMIN.modifyNamespace(ndesc);<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>    ADMIN.disableTable(tableName1);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    try {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    } catch (RestoreSnapshotException ignore) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    ADMIN.enableTable(tableName1);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span>}<a name="line.754"></a>
 
 
 


[11/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/RegionSizeCalculator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/RegionSizeCalculator.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/RegionSizeCalculator.html
index e246b30..61b7bde 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/RegionSizeCalculator.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/RegionSizeCalculator.html
@@ -72,7 +72,51 @@
 <div class="header">
 <h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce</a></td>
+<td class="colLast">
+<div class="block">Provides HBase <a href="http://wiki.apache.org/hadoop/HadoopMapReduce">MapReduce</a>
+Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.mapreduce">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a> in <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a> that return <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index b8bf0a6..2061ab3 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,10 +293,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
index 006c494..b0eb820 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
@@ -198,74 +198,79 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/RegionSizeCalculator.html#org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a>
+<div class="block">Computes size of each region for given table and given column families.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/RowCounter.RowCounterMapper.Counters.html#org.apache.hadoop.hbase.mapreduce">RowCounter.RowCounterMapper.Counters</a>
 <div class="block">Counter enumeration to count the actual rows.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/SyncTable.SyncMapper.CellScanner.html#org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.CellScanner</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/SyncTable.SyncMapper.Counter.html#org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableInputFormatBase.html#org.apache.hadoop.hbase.mapreduce">TableInputFormatBase</a>
 <div class="block">A base for <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableInputFormat</code></a>s.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableMapper.html#org.apache.hadoop.hbase.mapreduce">TableMapper</a>
 <div class="block">Extends the base <code>Mapper</code> class to add the required input key
  and value classes.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableRecordReader.html#org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>
 <div class="block">Iterate over an HBase table data, return (ImmutableBytesWritable, Result)
  pairs.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableRecordReaderImpl.html#org.apache.hadoop.hbase.mapreduce">TableRecordReaderImpl</a>
 <div class="block">Iterate over an HBase table data, return (ImmutableBytesWritable, Result)
  pairs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableReducer.html#org.apache.hadoop.hbase.mapreduce">TableReducer</a>
 <div class="block">Extends the basic <code>Reducer</code> class to add the required key and
  value input/output classes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormat.html#org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormat</a>
 <div class="block">TableSnapshotInputFormat allows a MapReduce job to run over a table snapshot.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.InputSplit.html#org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.InputSplit</a>
 <div class="block">Implementation class for InputSplit logic common between mapred and mapreduce.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.RecordReader.html#org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.RecordReader</a>
 <div class="block">Implementation class for RecordReader logic common between mapred and mapreduce.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableSplit.html#org.apache.hadoop.hbase.mapreduce">TableSplit</a>
 <div class="block">A table split corresponds to a key range (low, high) and an optional scanner.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TableSplit.Version.html#org.apache.hadoop.hbase.mapreduce">TableSplit.Version</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/VisibilityExpressionResolver.html#org.apache.hadoop.hbase.mapreduce">VisibilityExpressionResolver</a>
 <div class="block">Interface to convert visibility expressions into Tags for storing along with Cells in HFiles.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/WALInputFormat.WALRecordReader.html#org.apache.hadoop.hbase.mapreduce">WALInputFormat.WALRecordReader</a>
 <div class="block"><code>RecordReader</code> for an <a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal"><code>WAL</code></a> file.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index 499b00f..6b8dd75 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -346,11 +346,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index e602642..7b8e220 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -208,9 +208,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 3e1ea7f..9eb46aa 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -125,8 +125,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index d2da0e9..47cee68 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -441,19 +441,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 2eb43c4..aff6911 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -212,10 +212,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index b3b977f..38c5fae 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -228,12 +228,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 192eb6a..ff2ad13 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,20 +704,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 858ccf6..6851ee1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -131,8 +131,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index f6fc79b..a4ab1b7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -238,8 +238,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index dfa02b5..67b7e3a 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 8e41b8e..41c2191 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -198,9 +198,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 59e283c..0e0fe69 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -532,14 +532,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 8eea1cf..d06d0f9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <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 = "f66343050f5157a5ade09ed219f3158141975f29";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "bc35de597d07b41d7456a38fc2cb771c9292429a";<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 = "Sun Apr  8 14:41:43 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Mon Apr  9 14:41:11 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.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 = "0b15d26d8b733535fade85eac4662a2f";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "6e1ea0c1e6c6f1e913b17d2af1f51b33";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[16/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.


Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/0e1d8d25
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/0e1d8d25
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/0e1d8d25

Branch: refs/heads/asf-site
Commit: 0e1d8d2594912bb84ca13c29f61515c6ac241f59
Parents: 3d55f76
Author: jenkins <bu...@apache.org>
Authored: Mon Apr 9 14:47:38 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Mon Apr 9 14:47:38 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 apidocs/index-all.html                          |     2 +
 .../hadoop/hbase/client/class-use/Admin.html    |    14 +
 .../hbase/client/class-use/RegionLocator.html   |     5 +
 .../hbase/mapreduce/TableInputFormat.html       |     2 +-
 .../hbase/mapreduce/TableInputFormatBase.html   |    82 +-
 .../hbase/mapreduce/TableInputFormatBase.html   |  1200 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 15866 ++++++++---------
 checkstyle.rss                                  |     4 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |     6 +-
 devapidocs/index-all.html                       |     2 +
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hadoop/hbase/client/class-use/Admin.html    |     7 +-
 .../hbase/client/class-use/RegionLocator.html   |     7 +-
 .../hadoop/hbase/client/package-tree.html       |    22 +-
 .../hadoop/hbase/filter/package-tree.html       |     8 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     4 +-
 .../hbase/mapreduce/TableInputFormat.html       |     2 +-
 .../hbase/mapreduce/TableInputFormatBase.html   |   112 +-
 .../class-use/RegionSizeCalculator.html         |    46 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hadoop/hbase/mapreduce/package-use.html     |    33 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../hadoop/hbase/monitoring/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     4 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../hbase/mapreduce/TableInputFormatBase.html   |  1200 +-
 export_control.html                             |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 testdevapidocs/allclasses-frame.html            |     2 +
 testdevapidocs/allclasses-noframe.html          |     2 +
 testdevapidocs/index-all.html                   |    62 +
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 ...stTableInputFormat.ExampleDeprecatedTIF.html |     2 +-
 ...leInputFormat.ExampleJobConfigurableTIF.html |     2 +-
 .../TestTableInputFormat.ExampleTIF.html        |     2 +-
 ...putFormatBase.ConnectionForMergeTesting.html |   603 +
 ...matBase.TableInputFormatForMergeTesting.html |   443 +
 .../mapreduce/TestTableInputFormatBase.html     |    65 +-
 .../mapreduce/TestTableInputFormatScan1.html    |     4 +-
 ...putFormatBase.ConnectionForMergeTesting.html |   125 +
 ...matBase.TableInputFormatForMergeTesting.html |   125 +
 .../hadoop/hbase/mapreduce/package-frame.html   |     2 +
 .../hadoop/hbase/mapreduce/package-summary.html |    12 +
 .../hadoop/hbase/mapreduce/package-tree.html    |     6 +
 .../TestNamespaceAuditor.CustomObserver.html    |    12 +-
 ...TestNamespaceAuditor.MasterSyncObserver.html |    16 +-
 .../hbase/namespace/TestNamespaceAuditor.html   |    26 +-
 .../org/apache/hadoop/hbase/package-tree.html   |     8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 testdevapidocs/overview-tree.html               |     6 +
 ...putFormatBase.ConnectionForMergeTesting.html |   362 +
 ...matBase.TableInputFormatForMergeTesting.html |   362 +
 .../mapreduce/TestTableInputFormatBase.html     |   308 +-
 .../TestNamespaceAuditor.CPMasterObserver.html  |   758 +-
 ...NamespaceAuditor.CPRegionServerObserver.html |   758 +-
 .../TestNamespaceAuditor.CustomObserver.html    |   758 +-
 ...TestNamespaceAuditor.MasterSyncObserver.html |   758 +-
 .../hbase/namespace/TestNamespaceAuditor.html   |   758 +-
 98 files changed, 13870 insertions(+), 11319 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index ecbdc86..89e8491 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -591,7 +591,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 1611869..9c43bda 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:20180408144626+00'00')
-/CreationDate (D:20180408144626+00'00')
+/ModDate (D:20180409144552+00'00')
+/CreationDate (D:20180409144552+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 0e7e217..6f7301a 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -2989,6 +2989,8 @@
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#createRegionName-org.apache.hadoop.hbase.TableName-byte:A-byte:A-int-boolean-"><code>RegionInfo.createRegionName(TableName, byte[], byte[], int, boolean)</code></a>.</span></div>
 </div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator(RegionLocator, Admin)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableInputFormatBase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableInputFormat.html#createScanFromConfiguration-org.apache.hadoop.conf.Configuration-">createScanFromConfiguration(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TableInputFormat</a></dt>
 <dd>
 <div class="block">Sets up a <a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a> instance, applying settings from the configuration property

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/class-use/Admin.html b/apidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
index 5b13e98..847fde7 100644
--- a/apidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
+++ b/apidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
@@ -139,6 +139,20 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 </tbody>
 </table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</code></td>
+<td class="colLast"><span class="typeNameLabel">TableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html b/apidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
index 44054ed..a6441a6 100644
--- a/apidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
+++ b/apidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
@@ -164,6 +164,11 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  table.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</code></td>
+<td class="colLast"><span class="typeNameLabel">TableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html b/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
index 5678dfc..1eee798 100644
--- a/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
+++ b/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
@@ -324,7 +324,7 @@ implements org.apache.hadoop.conf.Configurable</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableInputFormatBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#calculateAutoBalancedSplits-java.util.List-long-">calculateAutoBalancedSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#closeTable--">closeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createNInputSplitsUniform-org.apache.hadoop.mapreduce.InputSplit-int-">createNInputSplitsUniform</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRecordReader-org.apache.hadoop.mapreduce.InputSplit-org.apache.hadoop.mapreduce.TaskAttemptContext-">createRecordReader</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getAdmin--">getAdmin</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getRegionLocator--">getRegionLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputForma
 tBase.html#getScan--">getScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getTable--">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setScan-org.apache.hadoop.hbase.client.Scan-">setScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setTableRecordReader-org.apache.hadoop.hbase.mapreduce.TableRecordReader-">setTableRecordReader</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#calculateAutoBalancedSplits-java.util.List-long-">calculateAutoBalancedSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#closeTable--">closeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createNInputSplitsUniform-org.apache.hadoop.mapreduce.InputSplit-int-">createNInputSplitsUniform</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRecordReader-org.apache.hadoop.mapreduce.InputSplit-org.apache.hadoop.mapreduce.TaskAttemptContext-">createRecordReader</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.htm
 l#getAdmin--">getAdmin</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getRegionLocator--">getRegionLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getScan--">getScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getTable--">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setScan-org.apache.hadoop.hbase.client.Scan-">setScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setTableRecordReader-org.apache.hadoop.hbase.mapredu
 ce.TableRecordReader-">setTableRecordReader</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html b/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
index a1c75d7..6e740fe 100644
--- a/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
+++ b/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.109">TableInputFormatBase</a>
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.110">TableInputFormatBase</a>
 extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;</pre>
 <div class="block">A base for <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableInputFormat</code></a>s. Receives a <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client"><code>Connection</code></a>, a <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase"><code>TableName</code></a>,
  an <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a> instance that defines the input columns etc. Subclasses may use
@@ -267,40 +267,45 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 </td>
 </tr>
 <tr id="i4" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getAdmin--">getAdmin</a></span>()</code>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><code>Admin</code></a>.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getRegionLocator--">getRegionLocator</a></span>()</code>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionLocator</code></a>.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getScan--">getScan</a></span>()</code>
 <div class="block">Gets the scan defining the actual details like columns etc.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code><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.mapreduce.InputSplit&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getSplits-org.apache.hadoop.mapreduce.JobContext-">getSplits</a></span>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)</code>
 <div class="block">Calculates the splits that will serve as input for the map tasks.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[][],byte[][]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getStartEndKeys--">getStartEndKeys</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getTable--">getTable</a></span>()</code>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client"><code>Table</code></a>.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a></span>(byte[]&nbsp;startKey,
                     byte[]&nbsp;endKey)</code>
@@ -308,26 +313,26 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
  the regions of a table.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initialize-org.apache.hadoop.mapreduce.JobContext-">initialize</a></span>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)</code>
 <div class="block">Handle subclass specific set up.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Allows subclasses to initialize the table information.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setScan-org.apache.hadoop.hbase.client.Scan-">setScan</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
 <div class="block">Sets the scan defining the actual details like columns etc.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setTableRecordReader-org.apache.hadoop.hbase.mapreduce.TableRecordReader-">setTableRecordReader</a></span>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>&nbsp;tableRecordReader)</code>
 <div class="block">Allows subclasses to set the <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a>.</div>
@@ -361,7 +366,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>MAPREDUCE_INPUT_AUTOBALANCE</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/mapreduce/TableInputFormatBase.html#line.122">MAPREDUCE_INPUT_AUTOBALANCE</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/mapreduce/TableInputFormatBase.html#line.123">MAPREDUCE_INPUT_AUTOBALANCE</a></pre>
 <div class="block">Specify if we enable auto-balance to set number of mappers in M/R jobs.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -375,7 +380,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_AVERAGE_REGION_SIZE</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/mapreduce/TableInputFormatBase.html#line.124">MAX_AVERAGE_REGION_SIZE</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/mapreduce/TableInputFormatBase.html#line.125">MAX_AVERAGE_REGION_SIZE</a></pre>
 <div class="block">In auto-balance, we split input by ave region size, if calculated region size is too big, we can set it.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -389,7 +394,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NUM_MAPPERS_PER_REGION</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/mapreduce/TableInputFormatBase.html#line.127">NUM_MAPPERS_PER_REGION</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/mapreduce/TableInputFormatBase.html#line.128">NUM_MAPPERS_PER_REGION</a></pre>
 <div class="block">Set the number of Mappers for each region, all regions have same number of Mappers</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -411,7 +416,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableInputFormatBase</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.109">TableInputFormatBase</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.110">TableInputFormatBase</a>()</pre>
 </li>
 </ul>
 </li>
@@ -428,7 +433,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>createRecordReader</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.163">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.164">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                                   org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                            throws <a href="https://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">Builds a <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a>. If no <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a> was provided, uses
@@ -456,7 +461,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartEndKeys</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[][],byte[][]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.224">getStartEndKeys</a>()
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[][],byte[][]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.225">getStartEndKeys</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>
@@ -470,7 +475,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.237">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
+<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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.238">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
                                                        throws <a href="https://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">Calculates the splits that will serve as input for the map tasks.</div>
 <dl>
@@ -494,7 +499,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>createNInputSplitsUniform</h4>
-<pre>protected&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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.367">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>protected&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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.368">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                  int&nbsp;n)
                                                                           throws org.apache.hadoop.hbase.exceptions.IllegalArgumentIOException</pre>
 <div class="block">Create n splits for one InputSplit, For now only support uniform distribution</div>
@@ -516,7 +521,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateAutoBalancedSplits</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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.432">calculateAutoBalancedSplits</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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;splits,
+<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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.433">calculateAutoBalancedSplits</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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;splits,
                                                                                 long&nbsp;maxAverageRegionSize)
                                                                          throws <a href="https://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">Calculates the number of MapReduce input splits for the map tasks. The number of
@@ -542,7 +547,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>includeRegionInSplit</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.537">includeRegionInSplit</a>(byte[]&nbsp;startKey,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.539">includeRegionInSplit</a>(byte[]&nbsp;startKey,
                                        byte[]&nbsp;endKey)</pre>
 <div class="block">Test if the given region is to be included in the InputSplit while splitting
  the regions of a table.
@@ -571,7 +576,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocator</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.544">getRegionLocator</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.546">getRegionLocator</a>()</pre>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionLocator</code></a>.</div>
 </li>
 </ul>
@@ -581,7 +586,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.554">getTable</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.556">getTable</a>()</pre>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client"><code>Table</code></a>.</div>
 </li>
 </ul>
@@ -591,7 +596,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAdmin</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.564">getAdmin</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.566">getAdmin</a>()</pre>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><code>Admin</code></a>.</div>
 </li>
 </ul>
@@ -601,7 +606,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeTable</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.578">initializeTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.580">initializeTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&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">Allows subclasses to initialize the table information.</div>
@@ -614,13 +619,28 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 </dl>
 </li>
 </ul>
+<a name="createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createRegionSizeCalculator</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.592">createRegionSizeCalculator</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                                                                                            <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)
+                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getScan--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScan</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.594">getScan</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.602">getScan</a>()</pre>
 <div class="block">Gets the scan defining the actual details like columns etc.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -634,7 +654,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>setScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.604">setScan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.612">setScan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
 <div class="block">Sets the scan defining the actual details like columns etc.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -648,7 +668,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>setTableRecordReader</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.614">setTableRecordReader</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>&nbsp;tableRecordReader)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.622">setTableRecordReader</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>&nbsp;tableRecordReader)</pre>
 <div class="block">Allows subclasses to set the <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -663,7 +683,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>initialize</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.633">initialize</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.641">initialize</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
                    throws <a href="https://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">Handle subclass specific set up.
  Each of the entry points used by the MapReduce framework,
@@ -689,7 +709,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>closeTable</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.642">closeTable</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.650">closeTable</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">Close the Table and related objects that were initialized via
  <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-"><code>initializeTable(Connection, TableName)</code></a>.</div>


[02/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
index 676ae61..c658da2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
@@ -369,391 +369,397 @@
 <span class="sourceLineNo">361</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.362"></a>
 <span class="sourceLineNo">363</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    UTIL.compact(tableTwo, true);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    ADMIN.splitRegionAsync(hris.get(0).getRegionName(), Bytes.toBytes("3")).get(10,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TimeUnit.SECONDS);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    assertEquals(initialRegions, hris.size());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // Fail region merge through Coprocessor hook<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    masterObserver.failMerge(true);<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    f = ADMIN.mergeRegionsAsync(<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      false);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      f.get(10, TimeUnit.SECONDS);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      fail("Merge was supposed to fail!");<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    } catch (ExecutionException ee) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Expected.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, hris.size());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // verify that we cannot split<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      fail();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } catch (DoNotRetryRegionException e) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // Expected<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    Thread.sleep(2000);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * HBASE-13394<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Test<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    NamespaceDescriptor nspDesc =<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        NamespaceDescriptor.create(nsp1)<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ADMIN.createNamespace(nspDesc);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        ADMIN.createTable(tableDescOne);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } catch (Exception exp) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        LOG.error(exp.toString(), exp);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        ADMIN.createTable(tableDescOne);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      } catch (Exception e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        LOG.error(e.toString(), e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      nstate = getNamespaceState(nsp1);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    } finally {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        ADMIN.disableTable(tableOne);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        deleteTable(tableOne);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      ADMIN.deleteNamespace(nsp1);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      IOException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return getQuotaManager().getState(namespace);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    String skey = Bytes.toString(startKey);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    int key;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (StringUtils.isBlank(skey)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    } else {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return Bytes.toBytes("" + key);<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>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    volatile CountDownLatch postCompact;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        throws IOException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      postCompact.countDown();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      postCompact = new CountDownLatch(1);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>    @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return Optional.of(this);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">364</span>    byte[] splitKey = Bytes.toBytes("3");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    HRegion regionToSplit = UTIL.getMiniHBaseCluster().getRegions(tableTwo).stream()<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      .filter(r -&gt; r.getRegionInfo().containsRow(splitKey)).findFirst().get();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    regionToSplit.compact(true);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // the above compact may quit immediately if there is a compaction ongoing, so here we need to<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // wait a while to let the ongoing compaction finish.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    UTIL.waitFor(10000, regionToSplit::isSplittable);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ADMIN.splitRegionAsync(regionToSplit.getRegionInfo().getRegionName(), splitKey).get(10,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      TimeUnit.SECONDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    assertEquals(initialRegions, hris.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // Fail region merge through Coprocessor hook<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    masterObserver.failMerge(true);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    f = ADMIN.mergeRegionsAsync(<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      false);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      f.get(10, TimeUnit.SECONDS);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      fail("Merge was supposed to fail!");<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    } catch (ExecutionException ee) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // Expected.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertEquals(initialRegions, hris.size());<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    // verify that we cannot split<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      fail();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    } catch (DoNotRetryRegionException e) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Expected<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    Thread.sleep(2000);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * HBASE-13394<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  @Test<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    NamespaceDescriptor nspDesc =<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        NamespaceDescriptor.create(nsp1)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ADMIN.createNamespace(nspDesc);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    try {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        ADMIN.createTable(tableDescOne);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      } catch (Exception exp) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        LOG.error(exp.toString(), exp);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        ADMIN.createTable(tableDescOne);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      } catch (Exception e) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        LOG.error(e.toString(), e);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      nstate = getNamespaceState(nsp1);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    } finally {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        ADMIN.disableTable(tableOne);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        deleteTable(tableOne);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      ADMIN.deleteNamespace(nsp1);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      IOException {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return getQuotaManager().getState(namespace);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    String skey = Bytes.toString(startKey);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    int key;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    if (StringUtils.isBlank(skey)) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    } else {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return Bytes.toBytes("" + key);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    volatile CountDownLatch postCompact;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        throws IOException {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      postCompact.countDown();<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      postCompact = new CountDownLatch(1);<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>  @Test<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public void testStatePreserve() throws Exception {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ADMIN.createNamespace(nspDesc);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    tableDescOne.addFamily(fam1);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    tableDescTwo.addFamily(fam1);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    tableDescThree.addFamily(fam1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    ADMIN.disableTable(tableThree);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    deleteTable(tableThree);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    // wait for chore to complete<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      public boolean evaluate() throws Exception {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    });<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    restartMaster();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        .getTables().size(), after.getTables().size());<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      public boolean evaluate() throws Exception {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        if (master == null) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          return false;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    });<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void restartMaster() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    UTIL.getHBaseCluster().startMaster();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    waitForQuotaInitialize(UTIL);<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>  private NamespaceAuditor getQuotaManager() {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>    @Override<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return Optional.of(this);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>    @Override<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>        TableName tableName) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.565"></a>
+<span class="sourceLineNo">491</span>    @Override<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      return Optional.of(this);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  @Test<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public void testStatePreserve() throws Exception {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    ADMIN.createNamespace(nspDesc);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    tableDescOne.addFamily(fam1);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    tableDescTwo.addFamily(fam1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    tableDescThree.addFamily(fam1);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ADMIN.disableTable(tableThree);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    deleteTable(tableThree);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    // wait for chore to complete<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      @Override<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      public boolean evaluate() throws Exception {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    });<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    restartMaster();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        .getTables().size(), after.getTables().size());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      public boolean evaluate() throws Exception {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        if (master == null) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          return false;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    });<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  private void restartMaster() throws Exception {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    UTIL.getHBaseCluster().startMaster();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    waitForQuotaInitialize(UTIL);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  private NamespaceAuditor getQuotaManager() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      return Optional.of(this);<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>    @Override<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    public void postCompletedDeleteTableAction(<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        final TableName tableName) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      tableDeletionLatch.countDown();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    @Override<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    public void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        throw new IOException("Throw exception as it is demanded.");<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>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    // NOTE: We need a latch because admin is not sync,<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    ADMIN.deleteTable(tableName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    observer.tableDeletionLatch.await();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Test(expected = QuotaExceededException.class)<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    NamespaceDescriptor nspDesc =<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            .build();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    ADMIN.createNamespace(nspDesc);<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    HTableDescriptor tableDescOne =<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    tableDescOne.addFamily(fam1);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    HTableDescriptor tableDescTwo =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    tableDescTwo.addFamily(fam1);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ADMIN.createTable(tableDescOne);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  @Test(expected = QuotaExceededException.class)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    NamespaceDescriptor nspDesc =<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            .build();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    ADMIN.createNamespace(nspDesc);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    tableDescOne.addFamily(fam1);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    ADMIN.createTable(tableDescOne);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testCloneSnapshot() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    NamespaceDescriptor nspDesc =<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    ADMIN.createNamespace(nspDesc);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    tableDescOne.addFamily(fam1);<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>    int tableLength;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      tableLength = locator.getStartKeys().length;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.657"></a>
+<span class="sourceLineNo">569</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        TableName tableName) throws IOException {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void postCompletedDeleteTableAction(<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        final TableName tableName) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      tableDeletionLatch.countDown();<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 void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        throw new IOException("Throw exception as it is demanded.");<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>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    // NOTE: We need a latch because admin is not sync,<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    ADMIN.deleteTable(tableName);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    observer.tableDeletionLatch.await();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  @Test(expected = QuotaExceededException.class)<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    NamespaceDescriptor nspDesc =<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.603"></a>
+<span class="sourceLineNo">604</span>            .build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    ADMIN.createNamespace(nspDesc);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    HTableDescriptor tableDescOne =<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    tableDescOne.addFamily(fam1);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    HTableDescriptor tableDescTwo =<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    tableDescTwo.addFamily(fam1);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    ADMIN.createTable(tableDescOne);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>  @Test(expected = QuotaExceededException.class)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NamespaceDescriptor nspDesc =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            .build();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    ADMIN.createNamespace(nspDesc);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    tableDescOne.addFamily(fam1);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    ADMIN.createTable(tableDescOne);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.636"></a>
+<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCloneSnapshot() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    NamespaceDescriptor nspDesc =<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    ADMIN.createNamespace(nspDesc);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    tableDescOne.addFamily(fam1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.657"></a>
 <span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      tableLength = locator.getStartKeys().length;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  @Test<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  public void testRestoreSnapshot() throws Exception {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    NamespaceDescriptor nspDesc =<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        NamespaceDescriptor.create(nsp)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    ADMIN.createNamespace(nspDesc);<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    tableDescOne.addFamily(fam1);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.686"></a>
-<span class="sourceLineNo">687</span><a name="line.687"></a>
-<span class="sourceLineNo">688</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.689"></a>
+<span class="sourceLineNo">659</span>    int tableLength;<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      tableLength = locator.getStartKeys().length;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      tableLength = locator.getStartKeys().length;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Test<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public void testRestoreSnapshot() throws Exception {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    NamespaceDescriptor nspDesc =<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        NamespaceDescriptor.create(nsp)<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    ADMIN.createNamespace(nspDesc);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    tableDescOne.addFamily(fam1);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.689"></a>
 <span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    Collections.sort(regions);<a name="line.692"></a>
+<span class="sourceLineNo">691</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.692"></a>
 <span class="sourceLineNo">693</span><a name="line.693"></a>
-<span class="sourceLineNo">694</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    Thread.sleep(2000);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    ADMIN.disableTable(tableName1);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    ADMIN.enableTable(tableName1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>  }<a name="line.705"></a>
+<span class="sourceLineNo">694</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    Collections.sort(regions);<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    Thread.sleep(2000);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    ADMIN.disableTable(tableName1);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.705"></a>
 <span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Test<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    NamespaceDescriptor nspDesc =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        NamespaceDescriptor.create(nsp)<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    ADMIN.createNamespace(nspDesc);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    tableDescOne.addFamily(fam1);<a name="line.719"></a>
-<span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    // snapshot has 4 regions<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    ADMIN.disableTable(tableName1);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    ADMIN.deleteTable(tableName1);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ADMIN.createTable(tableDescOne);<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    ADMIN.modifyNamespace(ndesc);<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">707</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.707"></a>
+<span class="sourceLineNo">708</span><a name="line.708"></a>
+<span class="sourceLineNo">709</span>    ADMIN.enableTable(tableName1);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  @Test<a name="line.713"></a>
+<span class="sourceLineNo">714</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    NamespaceDescriptor nspDesc =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        NamespaceDescriptor.create(nsp)<a name="line.717"></a>
+<span class="sourceLineNo">718</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    ADMIN.createNamespace(nspDesc);<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    tableDescOne.addFamily(fam1);<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.730"></a>
+<span class="sourceLineNo">731</span><a name="line.731"></a>
+<span class="sourceLineNo">732</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    // snapshot has 4 regions<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.735"></a>
 <span class="sourceLineNo">736</span>    ADMIN.disableTable(tableName1);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    try {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.739"></a>
-<span class="sourceLineNo">740</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    } catch (RestoreSnapshotException ignore) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    ADMIN.enableTable(tableName1);<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>}<a name="line.748"></a>
+<span class="sourceLineNo">737</span>    ADMIN.deleteTable(tableName1);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    ADMIN.createTable(tableDescOne);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    ADMIN.modifyNamespace(ndesc);<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>    ADMIN.disableTable(tableName1);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    try {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    } catch (RestoreSnapshotException ignore) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    ADMIN.enableTable(tableName1);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span>}<a name="line.754"></a>
 
 
 


[15/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
index edf22fb..0dce659 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
@@ -61,607 +61,615 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.net.DNS;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.util.StringUtils;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * A base for {@link TableInputFormat}s. Receives a {@link Connection}, a {@link TableName},<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * an {@link Scan} instance that defines the input columns etc. Subclasses may use<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * other TableRecordReader implementations.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * Subclasses MUST ensure initializeTable(Connection, TableName) is called for an instance to<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * function properly. Each of the entry points to this class used by the MapReduce framework,<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * {@link #createRecordReader(InputSplit, TaskAttemptContext)} and {@link #getSplits(JobContext)},<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * will call {@link #initialize(JobContext)} as a convenient centralized location to handle<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * retrieving the necessary configuration information. If your subclass overrides either of these<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * methods, either call the parent version or call initialize yourself.<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;p&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * An example of a subclass:<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * &lt;pre&gt;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> *   class ExampleTIF extends TableInputFormatBase {<a name="line.72"></a>
-<span class="sourceLineNo">073</span> *<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *     {@literal @}Override<a name="line.74"></a>
-<span class="sourceLineNo">075</span> *     protected void initialize(JobContext context) throws IOException {<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *       // We are responsible for the lifecycle of this connection until we hand it over in<a name="line.76"></a>
-<span class="sourceLineNo">077</span> *       // initializeTable.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> *       Connection connection = ConnectionFactory.createConnection(HBaseConfiguration.create(<a name="line.78"></a>
-<span class="sourceLineNo">079</span> *              job.getConfiguration()));<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *       TableName tableName = TableName.valueOf("exampleTable");<a name="line.80"></a>
-<span class="sourceLineNo">081</span> *       // mandatory. once passed here, TableInputFormatBase will handle closing the connection.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *       initializeTable(connection, tableName);<a name="line.82"></a>
-<span class="sourceLineNo">083</span> *       byte[][] inputColumns = new byte [][] { Bytes.toBytes("columnA"),<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *         Bytes.toBytes("columnB") };<a name="line.84"></a>
-<span class="sourceLineNo">085</span> *       // optional, by default we'll get everything for the table.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> *       Scan scan = new Scan();<a name="line.86"></a>
-<span class="sourceLineNo">087</span> *       for (byte[] family : inputColumns) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *         scan.addFamily(family);<a name="line.88"></a>
-<span class="sourceLineNo">089</span> *       }<a name="line.89"></a>
-<span class="sourceLineNo">090</span> *       Filter exampleFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("aa.*"));<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *       scan.setFilter(exampleFilter);<a name="line.91"></a>
-<span class="sourceLineNo">092</span> *       setScan(scan);<a name="line.92"></a>
-<span class="sourceLineNo">093</span> *     }<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *   }<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/pre&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>/**<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * A base for {@link TableInputFormat}s. Receives a {@link Connection}, a {@link TableName},<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * an {@link Scan} instance that defines the input columns etc. Subclasses may use<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * other TableRecordReader implementations.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * Subclasses MUST ensure initializeTable(Connection, TableName) is called for an instance to<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * function properly. Each of the entry points to this class used by the MapReduce framework,<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * {@link #createRecordReader(InputSplit, TaskAttemptContext)} and {@link #getSplits(JobContext)},<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * will call {@link #initialize(JobContext)} as a convenient centralized location to handle<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * retrieving the necessary configuration information. If your subclass overrides either of these<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * methods, either call the parent version or call initialize yourself.<a name="line.68"></a>
+<span class="sourceLineNo">069</span> *<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * &lt;p&gt;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * An example of a subclass:<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * &lt;pre&gt;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *   class ExampleTIF extends TableInputFormatBase {<a name="line.73"></a>
+<span class="sourceLineNo">074</span> *<a name="line.74"></a>
+<span class="sourceLineNo">075</span> *     {@literal @}Override<a name="line.75"></a>
+<span class="sourceLineNo">076</span> *     protected void initialize(JobContext context) throws IOException {<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *       // We are responsible for the lifecycle of this connection until we hand it over in<a name="line.77"></a>
+<span class="sourceLineNo">078</span> *       // initializeTable.<a name="line.78"></a>
+<span class="sourceLineNo">079</span> *       Connection connection = ConnectionFactory.createConnection(HBaseConfiguration.create(<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *              job.getConfiguration()));<a name="line.80"></a>
+<span class="sourceLineNo">081</span> *       TableName tableName = TableName.valueOf("exampleTable");<a name="line.81"></a>
+<span class="sourceLineNo">082</span> *       // mandatory. once passed here, TableInputFormatBase will handle closing the connection.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *       initializeTable(connection, tableName);<a name="line.83"></a>
+<span class="sourceLineNo">084</span> *       byte[][] inputColumns = new byte [][] { Bytes.toBytes("columnA"),<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *         Bytes.toBytes("columnB") };<a name="line.85"></a>
+<span class="sourceLineNo">086</span> *       // optional, by default we'll get everything for the table.<a name="line.86"></a>
+<span class="sourceLineNo">087</span> *       Scan scan = new Scan();<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *       for (byte[] family : inputColumns) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span> *         scan.addFamily(family);<a name="line.89"></a>
+<span class="sourceLineNo">090</span> *       }<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *       Filter exampleFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("aa.*"));<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *       scan.setFilter(exampleFilter);<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *       setScan(scan);<a name="line.93"></a>
+<span class="sourceLineNo">094</span> *     }<a name="line.94"></a>
+<span class="sourceLineNo">095</span> *   }<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * &lt;/pre&gt;<a name="line.96"></a>
 <span class="sourceLineNo">097</span> *<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * The number of InputSplits(mappers) match the number of regions in a table by default.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * Set "hbase.mapreduce.tableinput.mappers.per.region" to specify how many mappers per region, set<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * this property will disable autobalance below.\<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * Set "hbase.mapreduce.tif.input.autobalance" to enable autobalance, hbase will assign mappers<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * based on average region size; For regions, whose size larger than average region size may assigned<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * more mappers, and for smaller one, they may group together to use one mapper. If actual average<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * region size is too big, like 50G, it is not good to only assign 1 mapper for those large regions.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * Use "hbase.mapreduce.tif.ave.regionsize" to set max average region size when enable "autobalanece",<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * default mas average region size is 8G.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>@InterfaceAudience.Public<a name="line.108"></a>
-<span class="sourceLineNo">109</span>public abstract class TableInputFormatBase<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    extends InputFormat&lt;ImmutableBytesWritable, Result&gt; {<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private static final Logger LOG = LoggerFactory.getLogger(TableInputFormatBase.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final String NOT_INITIALIZED = "The input format instance has not been properly " +<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      "initialized. Ensure you call initializeTable either in your constructor or initialize " +<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      "method";<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final String INITIALIZATION_ERROR = "Cannot create a record reader because of a" +<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      " previous error. Please look at the previous logs lines from" +<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      " the task's full log for more details.";<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  /** Specify if we enable auto-balance to set number of mappers in M/R jobs. */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final String MAPREDUCE_INPUT_AUTOBALANCE = "hbase.mapreduce.tif.input.autobalance";<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  /** In auto-balance, we split input by ave region size, if calculated region size is too big, we can set it. */<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static final String MAX_AVERAGE_REGION_SIZE = "hbase.mapreduce.tif.ave.regionsize";<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /** Set the number of Mappers for each region, all regions have same number of Mappers */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String NUM_MAPPERS_PER_REGION = "hbase.mapreduce.tableinput.mappers.per.region";<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">098</span> *<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * The number of InputSplits(mappers) match the number of regions in a table by default.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * Set "hbase.mapreduce.tableinput.mappers.per.region" to specify how many mappers per region, set<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * this property will disable autobalance below.\<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Set "hbase.mapreduce.tif.input.autobalance" to enable autobalance, hbase will assign mappers<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * based on average region size; For regions, whose size larger than average region size may assigned<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * more mappers, and for smaller one, they may group together to use one mapper. If actual average<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * region size is too big, like 50G, it is not good to only assign 1 mapper for those large regions.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * Use "hbase.mapreduce.tif.ave.regionsize" to set max average region size when enable "autobalanece",<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * default mas average region size is 8G.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> */<a name="line.108"></a>
+<span class="sourceLineNo">109</span>@InterfaceAudience.Public<a name="line.109"></a>
+<span class="sourceLineNo">110</span>public abstract class TableInputFormatBase<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    extends InputFormat&lt;ImmutableBytesWritable, Result&gt; {<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static final Logger LOG = LoggerFactory.getLogger(TableInputFormatBase.class);<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String NOT_INITIALIZED = "The input format instance has not been properly " +<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      "initialized. Ensure you call initializeTable either in your constructor or initialize " +<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      "method";<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String INITIALIZATION_ERROR = "Cannot create a record reader because of a" +<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      " previous error. Please look at the previous logs lines from" +<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      " the task's full log for more details.";<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /** Specify if we enable auto-balance to set number of mappers in M/R jobs. */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public static final String MAPREDUCE_INPUT_AUTOBALANCE = "hbase.mapreduce.tif.input.autobalance";<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  /** In auto-balance, we split input by ave region size, if calculated region size is too big, we can set it. */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final String MAX_AVERAGE_REGION_SIZE = "hbase.mapreduce.tif.ave.regionsize";<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  /** Set the number of Mappers for each region, all regions have same number of Mappers */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public static final String NUM_MAPPERS_PER_REGION = "hbase.mapreduce.tableinput.mappers.per.region";<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  /** Holds the details for the internal scanner.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   *<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @see Scan */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private Scan scan = null;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /** The {@link Admin}. */<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private Admin admin;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  /** The {@link Table} to scan. */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private Table table;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /** The {@link RegionLocator} of the table. */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private RegionLocator regionLocator;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  /** The reader scanning the table, can be a custom one. */<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private TableRecordReader tableRecordReader = null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /** The underlying {@link Connection} of the table. */<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private Connection connection;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  /** Holds the details for the internal scanner.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   *<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @see Scan */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private Scan scan = null;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  /** The {@link Admin}. */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private Admin admin;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /** The {@link Table} to scan. */<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private Table table;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /** The {@link RegionLocator} of the table. */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RegionLocator regionLocator;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  /** The reader scanning the table, can be a custom one. */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private TableRecordReader tableRecordReader = null;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /** The underlying {@link Connection} of the table. */<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private Connection connection;<a name="line.144"></a>
 <span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  /** The reverse DNS lookup cache mapping: IPAddress =&gt; HostName */<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private HashMap&lt;InetAddress, String&gt; reverseDNSCacheMap =<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      new HashMap&lt;&gt;();<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * Builds a {@link TableRecordReader}. If no {@link TableRecordReader} was provided, uses<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * the default.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   *<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param split  The split to work with.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @param context  The current context.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @return The newly created record reader.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @throws IOException When creating the reader fails.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @see org.apache.hadoop.mapreduce.InputFormat#createRecordReader(<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *   org.apache.hadoop.mapreduce.InputSplit,<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   *   org.apache.hadoop.mapreduce.TaskAttemptContext)<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      InputSplit split, TaskAttemptContext context)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    if (table == null) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      initialize(context);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // null check in case our child overrides getTable to not throw.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    try {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      if (getTable() == null) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        // initialize() must not have been implemented in the subclass.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } catch (IllegalStateException exception) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    TableSplit tSplit = (TableSplit) split;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    LOG.info("Input split length: " + StringUtils.humanReadableInt(tSplit.getLength()) + " bytes.");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    final TableRecordReader trr =<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        this.tableRecordReader != null ? this.tableRecordReader : new TableRecordReader();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    Scan sc = new Scan(this.scan);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    sc.setStartRow(tSplit.getStartRow());<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    sc.setStopRow(tSplit.getEndRow());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    trr.setScan(sc);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    trr.setTable(getTable());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return new RecordReader&lt;ImmutableBytesWritable, Result&gt;() {<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void close() throws IOException {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        trr.close();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        closeTable();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>      @Override<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        return trr.getCurrentKey();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        return trr.getCurrentValue();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      @Override<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      public float getProgress() throws IOException, InterruptedException {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        return trr.getProgress();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>      @Override<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws IOException,<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          InterruptedException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        trr.initialize(inputsplit, context);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @Override<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        return trr.nextKeyValue();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    };<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  protected Pair&lt;byte[][],byte[][]&gt; getStartEndKeys() throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return getRegionLocator().getStartEndKeys();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * Calculates the splits that will serve as input for the map tasks.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param context  The current job context.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @return The list of input splits.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @throws IOException When creating the list of splits fails.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   *   org.apache.hadoop.mapreduce.JobContext)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    boolean closeOnFinish = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    if (table == null) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      initialize(context);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      closeOnFinish = true;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // null check in case our child overrides getTable to not throw.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (getTable() == null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        // initialize() must not have been implemented in the subclass.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } catch (IllegalStateException exception) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    try {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      List&lt;InputSplit&gt; splits = oneInputSplitPerRegion();<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      // set same number of mappers for each region<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (context.getConfiguration().get(NUM_MAPPERS_PER_REGION) != null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        int nSplitsPerRegion = context.getConfiguration().getInt(NUM_MAPPERS_PER_REGION, 1);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        for (int i = 0; i &lt; splits.size(); i++) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          List&lt;InputSplit&gt; tmp = createNInputSplitsUniform(splits.get(i), nSplitsPerRegion);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          res.addAll(tmp);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        return res;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>      //The default value of "hbase.mapreduce.input.autobalance" is false.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (context.getConfiguration().getBoolean(MAPREDUCE_INPUT_AUTOBALANCE, false)) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        long maxAveRegionSize = context.getConfiguration()<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            .getLong(MAX_AVERAGE_REGION_SIZE, 8L*1073741824); //8GB<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return calculateAutoBalancedSplits(splits, maxAveRegionSize);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      // return one mapper per region<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      return splits;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    } finally {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      if (closeOnFinish) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        closeTable();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * Create one InputSplit per region<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   *<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @return The list of InputSplit for all the regions<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @throws IOException<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private List&lt;InputSplit&gt; oneInputSplitPerRegion() throws IOException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    RegionSizeCalculator sizeCalculator =<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        new RegionSizeCalculator(getRegionLocator(), getAdmin());<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    TableName tableName = getTable().getName();<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Pair&lt;byte[][], byte[][]&gt; keys = getStartEndKeys();<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (keys == null || keys.getFirst() == null ||<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        keys.getFirst().length == 0) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      HRegionLocation regLoc =<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          getRegionLocator().getRegionLocation(HConstants.EMPTY_BYTE_ARRAY, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (null == regLoc) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("Expecting at least one region.");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(1);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      long regionSize = sizeCalculator.getRegionSize(regLoc.getRegionInfo().getRegionName());<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      TableSplit split = new TableSplit(tableName, scan,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, regLoc<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          .getHostnamePort().split(Addressing.HOSTNAME_PORT_SEPARATOR)[0], regionSize);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      splits.add(split);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return splits;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(keys.getFirst().length);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    for (int i = 0; i &lt; keys.getFirst().length; i++) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      if (!includeRegionInSplit(keys.getFirst()[i], keys.getSecond()[i])) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        continue;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>      byte[] startRow = scan.getStartRow();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] stopRow = scan.getStopRow();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      // determine if the given start an stop key fall into the region<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      if ((startRow.length == 0 || keys.getSecond()[i].length == 0 ||<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          Bytes.compareTo(startRow, keys.getSecond()[i]) &lt; 0) &amp;&amp;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          (stopRow.length == 0 ||<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              Bytes.compareTo(stopRow, keys.getFirst()[i]) &gt; 0)) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        byte[] splitStart = startRow.length == 0 ||<a name="line.327"></a>
-<span class="sourceLineNo">328</span>            Bytes.compareTo(keys.getFirst()[i], startRow) &gt;= 0 ?<a name="line.328"></a>
-<span class="sourceLineNo">329</span>            keys.getFirst()[i] : startRow;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        byte[] splitStop = (stopRow.length == 0 ||<a name="line.330"></a>
-<span class="sourceLineNo">331</span>            Bytes.compareTo(keys.getSecond()[i], stopRow) &lt;= 0) &amp;&amp;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>            keys.getSecond()[i].length &gt; 0 ?<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            keys.getSecond()[i] : stopRow;<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>        HRegionLocation location = getRegionLocator().getRegionLocation(keys.getFirst()[i], false);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        // The below InetSocketAddress creation does a name resolution.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        InetSocketAddress isa = new InetSocketAddress(location.getHostname(), location.getPort());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        if (isa.isUnresolved()) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          LOG.warn("Failed resolve " + isa);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        InetAddress regionAddress = isa.getAddress();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        String regionLocation;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        regionLocation = reverseDNS(regionAddress);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>        byte[] regionName = location.getRegionInfo().getRegionName();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        String encodedRegionName = location.getRegionInfo().getEncodedName();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        long regionSize = sizeCalculator.getRegionSize(regionName);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        TableSplit split = new TableSplit(tableName, scan,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>            splitStart, splitStop, regionLocation, encodedRegionName, regionSize);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        splits.add(split);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        if (LOG.isDebugEnabled()) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          LOG.debug("getSplits: split -&gt; " + i + " -&gt; " + split);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return splits;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  /**<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * Create n splits for one InputSplit, For now only support uniform distribution<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * @param split A TableSplit corresponding to a range of rowkeys<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @param n     Number of ranges after splitting.  Pass 1 means no split for the range<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *              Pass 2 if you want to split the range in two;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @return A list of TableSplit, the size of the list is n<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @throws IllegalArgumentIOException<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  protected List&lt;InputSplit&gt; createNInputSplitsUniform(InputSplit split, int n)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      throws IllegalArgumentIOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    if (split == null || !(split instanceof TableSplit)) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      throw new IllegalArgumentIOException(<a name="line.370"></a>
-<span class="sourceLineNo">371</span>          "InputSplit for CreateNSplitsPerRegion can not be null + "<a name="line.371"></a>
-<span class="sourceLineNo">372</span>              + "and should be instance of TableSplit");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    //if n &lt; 1, then still continue using n = 1<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    n = n &lt; 1 ? 1 : n;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;(n);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    if (n == 1) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      res.add(split);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      return res;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    // Collect Region related information<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    TableSplit ts = (TableSplit) split;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    TableName tableName = ts.getTable();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    String regionLocation = ts.getRegionLocation();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    String encodedRegionName = ts.getEncodedRegionName();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    long regionSize = ts.getLength();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    byte[] startRow = ts.getStartRow();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    byte[] endRow = ts.getEndRow();<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // For special case: startRow or endRow is empty<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (startRow.length == 0 &amp;&amp; endRow.length == 0){<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      startRow = new byte[1];<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      endRow = new byte[1];<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      startRow[0] = 0;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      endRow[0] = -1;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    if (startRow.length == 0 &amp;&amp; endRow.length != 0){<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      startRow = new byte[1];<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      startRow[0] = 0;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    if (startRow.length != 0 &amp;&amp; endRow.length == 0){<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      endRow =new byte[startRow.length];<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      for (int k = 0; k &lt; startRow.length; k++){<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        endRow[k] = -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Split Region into n chunks evenly<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    byte[][] splitKeys = Bytes.split(startRow, endRow, true, n-1);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    for (int i = 0; i &lt; splitKeys.length - 1; i++) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      //notice that the regionSize parameter may be not very accurate<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      TableSplit tsplit =<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          new TableSplit(tableName, scan, splitKeys[i], splitKeys[i + 1], regionLocation,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>              encodedRegionName, regionSize / n);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      res.add(tsplit);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    return res;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Calculates the number of MapReduce input splits for the map tasks. The number of<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * MapReduce input splits depends on the average region size.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * Make it 'public' for testing<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   *<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @param splits The list of input splits before balance.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param maxAverageRegionSize max Average region size for one mapper<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @return The list of input splits.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @throws IOException When creating the list of splits fails.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *org.apache.hadoop.mapreduce.JobContext)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public List&lt;InputSplit&gt; calculateAutoBalancedSplits(List&lt;InputSplit&gt; splits, long maxAverageRegionSize)<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    if (splits.size() == 0) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      return splits;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    List&lt;InputSplit&gt; resultList = new ArrayList&lt;&gt;();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    long totalRegionSize = 0;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      TableSplit ts = (TableSplit) splits.get(i);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      totalRegionSize += ts.getLength();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    long averageRegionSize = totalRegionSize / splits.size();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // totalRegionSize might be overflow, and the averageRegionSize must be positive.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (averageRegionSize &lt;= 0) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      LOG.warn("The averageRegionSize is not positive: " + averageRegionSize + ", " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          "set it to Long.MAX_VALUE " + splits.size());<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      averageRegionSize = Long.MAX_VALUE / splits.size();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    //if averageRegionSize is too big, change it to default as 1 GB,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    if (averageRegionSize &gt; maxAverageRegionSize) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      averageRegionSize = maxAverageRegionSize;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // if averageRegionSize is too small, we do not need to allocate more mappers for those 'large' region<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // set default as 16M = (default hdfs block size) / 4;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (averageRegionSize &lt; 16 * 1048576) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      return splits;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      TableSplit ts = (TableSplit) splits.get(i);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      TableName tableName = ts.getTable();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      String regionLocation = ts.getRegionLocation();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String encodedRegionName = ts.getEncodedRegionName();<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      long regionSize = ts.getLength();<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (regionSize &gt;= averageRegionSize) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        // make this region as multiple MapReduce input split.<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        int n = (int) Math.round(Math.log(((double) regionSize) / ((double) averageRegionSize)) + 1.0);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        List&lt;InputSplit&gt; temp = createNInputSplitsUniform(ts, n);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        resultList.addAll(temp);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      } else {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        // if the total size of several small continuous regions less than the average region size,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        // combine them into one MapReduce input split.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        long totalSize = regionSize;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        byte[] splitStartKey = ts.getStartRow();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        byte[] splitEndKey = ts.getEndRow();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        int j = i + 1;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        while (j &lt; splits.size()) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          TableSplit nextRegion = (TableSplit) splits.get(j);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          long nextRegionSize = nextRegion.getLength();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          if (totalSize + nextRegionSize &lt;= averageRegionSize) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>            totalSize = totalSize + nextRegionSize;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>            splitEndKey = nextRegion.getEndRow();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>            j++;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          } else {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            break;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        i = j - 1;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        TableSplit t = new TableSplit(tableName, scan, splitStartKey, splitEndKey, regionLocation,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            encodedRegionName, totalSize);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        resultList.add(t);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return resultList;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  String reverseDNS(InetAddress ipAddress) throws UnknownHostException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    String hostName = this.reverseDNSCacheMap.get(ipAddress);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    if (hostName == null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      String ipAddressString = null;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      try {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        ipAddressString = DNS.reverseDns(ipAddress, null);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      } catch (Exception e) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        // We can use InetAddress in case the jndi failed to pull up the reverse DNS entry from the<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        // name service. Also, in case of ipv6, we need to use the InetAddress since resolving<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        // reverse DNS using jndi doesn't work well with ipv6 addresses.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        ipAddressString = InetAddress.getByName(ipAddress.getHostAddress()).getHostName();<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      if (ipAddressString == null) throw new UnknownHostException("No host found for " + ipAddress);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      hostName = Strings.domainNamePointerToHostName(ipAddressString);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.reverseDNSCacheMap.put(ipAddress, hostName);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return hostName;<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>   * Test if the given region is to be included in the InputSplit while splitting<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * the regions of a table.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * &lt;p&gt;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * This optimization is effective when there is a specific reasoning to exclude an entire region from the M-R job,<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * (and hence, not contributing to the InputSplit), given the start and end keys of the same. &lt;br&gt;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * Useful when we need to remember the last-processed top record and revisit the [last, current) interval for M-R processing,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * continuously. In addition to reducing InputSplits, reduces the load on the region server as well, due to the ordering of the keys.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * &lt;br&gt;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * &lt;br&gt;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Note: It is possible that &lt;code&gt;endKey.length() == 0 &lt;/code&gt; , for the last (recent) region.<a name="line.527"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /** The reverse DNS lookup cache mapping: IPAddress =&gt; HostName */<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  private HashMap&lt;InetAddress, String&gt; reverseDNSCacheMap =<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      new HashMap&lt;&gt;();<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  /**<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * Builds a {@link TableRecordReader}. If no {@link TableRecordReader} was provided, uses<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * the default.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   *<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @param split  The split to work with.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @param context  The current context.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @return The newly created record reader.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws IOException When creating the reader fails.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * @see org.apache.hadoop.mapreduce.InputFormat#createRecordReader(<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   *   org.apache.hadoop.mapreduce.InputSplit,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   *   org.apache.hadoop.mapreduce.TaskAttemptContext)<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @Override<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      InputSplit split, TaskAttemptContext context)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (table == null) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      initialize(context);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    // null check in case our child overrides getTable to not throw.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      if (getTable() == null) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        // initialize() must not have been implemented in the subclass.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } catch (IllegalStateException exception) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    TableSplit tSplit = (TableSplit) split;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    LOG.info("Input split length: " + StringUtils.humanReadableInt(tSplit.getLength()) + " bytes.");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    final TableRecordReader trr =<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        this.tableRecordReader != null ? this.tableRecordReader : new TableRecordReader();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    Scan sc = new Scan(this.scan);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    sc.setStartRow(tSplit.getStartRow());<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    sc.setStopRow(tSplit.getEndRow());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    trr.setScan(sc);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    trr.setTable(getTable());<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    return new RecordReader&lt;ImmutableBytesWritable, Result&gt;() {<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>      @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      public void close() throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        trr.close();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        closeTable();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>      @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        return trr.getCurrentKey();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>      @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        return trr.getCurrentValue();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>      @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      public float getProgress() throws IOException, InterruptedException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        return trr.getProgress();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      }<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>      @Override<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws IOException,<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          InterruptedException {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        trr.initialize(inputsplit, context);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        return trr.nextKeyValue();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    };<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  protected Pair&lt;byte[][],byte[][]&gt; getStartEndKeys() throws IOException {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return getRegionLocator().getStartEndKeys();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /**<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * Calculates the splits that will serve as input for the map tasks.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param context  The current job context.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @return The list of input splits.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @throws IOException When creating the list of splits fails.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   *   org.apache.hadoop.mapreduce.JobContext)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    boolean closeOnFinish = false;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    if (table == null) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      initialize(context);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      closeOnFinish = true;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // null check in case our child overrides getTable to not throw.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      if (getTable() == null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        // initialize() must not have been implemented in the subclass.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    } catch (IllegalStateException exception) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    try {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      List&lt;InputSplit&gt; splits = oneInputSplitPerRegion();<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // set same number of mappers for each region<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (context.getConfiguration().get(NUM_MAPPERS_PER_REGION) != null) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        int nSplitsPerRegion = context.getConfiguration().getInt(NUM_MAPPERS_PER_REGION, 1);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        for (int i = 0; i &lt; splits.size(); i++) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          List&lt;InputSplit&gt; tmp = createNInputSplitsUniform(splits.get(i), nSplitsPerRegion);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          res.addAll(tmp);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        return res;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>      //The default value of "hbase.mapreduce.input.autobalance" is false.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      if (context.getConfiguration().getBoolean(MAPREDUCE_INPUT_AUTOBALANCE, false)) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        long maxAveRegionSize = context.getConfiguration()<a name="line.273"></a>
+<span class="sourceLineNo">274</span>            .getLong(MAX_AVERAGE_REGION_SIZE, 8L*1073741824); //8GB<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        return calculateAutoBalancedSplits(splits, maxAveRegionSize);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>      // return one mapper per region<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      return splits;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    } finally {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      if (closeOnFinish) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        closeTable();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  /**<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Create one InputSplit per region<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   *<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * @return The list of InputSplit for all the regions<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @throws IOException<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  private List&lt;InputSplit&gt; oneInputSplitPerRegion() throws IOException {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    RegionSizeCalculator sizeCalculator =<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        createRegionSizeCalculator(getRegionLocator(), getAdmin());<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    TableName tableName = getTable().getName();<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    Pair&lt;byte[][], byte[][]&gt; keys = getStartEndKeys();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (keys == null || keys.getFirst() == null ||<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        keys.getFirst().length == 0) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      HRegionLocation regLoc =<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          getRegionLocator().getRegionLocation(HConstants.EMPTY_BYTE_ARRAY, false);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      if (null == regLoc) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        throw new IOException("Expecting at least one region.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(1);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      long regionSize = sizeCalculator.getRegionSize(regLoc.getRegionInfo().getRegionName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      TableSplit split = new TableSplit(tableName, scan,<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, regLoc<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          .getHostnamePort().split(Addressing.HOSTNAME_PORT_SEPARATOR)[0], regionSize);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      splits.add(split);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return splits;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(keys.getFirst().length);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    for (int i = 0; i &lt; keys.getFirst().length; i++) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      if (!includeRegionInSplit(keys.getFirst()[i], keys.getSecond()[i])) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        continue;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>      byte[] startRow = scan.getStartRow();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      byte[] stopRow = scan.getStopRow();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      // determine if the given start an stop key fall into the region<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      if ((startRow.length == 0 || keys.getSecond()[i].length == 0 ||<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          Bytes.compareTo(startRow, keys.getSecond()[i]) &lt; 0) &amp;&amp;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          (stopRow.length == 0 ||<a name="line.326"></a>
+<span class="sourceLineNo">327</span>              Bytes.compareTo(stopRow, keys.getFirst()[i]) &gt; 0)) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        byte[] splitStart = startRow.length == 0 ||<a name="line.328"></a>
+<span class="sourceLineNo">329</span>            Bytes.compareTo(keys.getFirst()[i], startRow) &gt;= 0 ?<a name="line.329"></a>
+<span class="sourceLineNo">330</span>            keys.getFirst()[i] : startRow;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        byte[] splitStop = (stopRow.length == 0 ||<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            Bytes.compareTo(keys.getSecond()[i], stopRow) &lt;= 0) &amp;&amp;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            keys.getSecond()[i].length &gt; 0 ?<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            keys.getSecond()[i] : stopRow;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>        HRegionLocation location = getRegionLocator().getRegionLocation(keys.getFirst()[i], false);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        // The below InetSocketAddress creation does a name resolution.<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        InetSocketAddress isa = new InetSocketAddress(location.getHostname(), location.getPort());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (isa.isUnresolved()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          LOG.warn("Failed resolve " + isa);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        InetAddress regionAddress = isa.getAddress();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        String regionLocation;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        regionLocation = reverseDNS(regionAddress);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>        byte[] regionName = location.getRegionInfo().getRegionName();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        String encodedRegionName = location.getRegionInfo().getEncodedName();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        long regionSize = sizeCalculator.getRegionSize(regionName);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        TableSplit split = new TableSplit(tableName, scan,<a name="line.349"></a>
+<span class="sourceLineNo">350</span>            splitStart, splitStop, regionLocation, encodedRegionName, regionSize);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        splits.add(split);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (LOG.isDebugEnabled()) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          LOG.debug("getSplits: split -&gt; " + i + " -&gt; " + split);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return splits;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /**<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * Create n splits for one InputSplit, For now only support uniform distribution<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * @param split A TableSplit corresponding to a range of rowkeys<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * @param n     Number of ranges after splitting.  Pass 1 means no split for the range<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   *              Pass 2 if you want to split the range in two;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @return A list of TableSplit, the size of the list is n<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @throws IllegalArgumentIOException<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  protected List&lt;InputSplit&gt; createNInputSplitsUniform(InputSplit split, int n)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      throws IllegalArgumentIOException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (split == null || !(split instanceof TableSplit)) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      throw new IllegalArgumentIOException(<a name="line.371"></a>
+<span class="sourceLineNo">372</span>          "InputSplit for CreateNSplitsPerRegion can not be null + "<a name="line.372"></a>
+<span class="sourceLineNo">373</span>              + "and should be instance of TableSplit");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    //if n &lt; 1, then still continue using n = 1<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    n = n &lt; 1 ? 1 : n;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;(n);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    if (n == 1) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      res.add(split);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      return res;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>    // Collect Region related information<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    TableSplit ts = (TableSplit) split;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    TableName tableName = ts.getTable();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String regionLocation = ts.getRegionLocation();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    String encodedRegionName = ts.getEncodedRegionName();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    long regionSize = ts.getLength();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    byte[] startRow = ts.getStartRow();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    byte[] endRow = ts.getEndRow();<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // For special case: startRow or endRow is empty<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    if (startRow.length == 0 &amp;&amp; endRow.length == 0){<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      startRow = new byte[1];<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      endRow = new byte[1];<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      startRow[0] = 0;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      endRow[0] = -1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    if (startRow.length == 0 &amp;&amp; endRow.length != 0){<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      startRow = new byte[1];<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      startRow[0] = 0;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    if (startRow.length != 0 &amp;&amp; endRow.length == 0){<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      endRow =new byte[startRow.length];<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      for (int k = 0; k &lt; startRow.length; k++){<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        endRow[k] = -1;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Split Region into n chunks evenly<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    byte[][] splitKeys = Bytes.split(startRow, endRow, true, n-1);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; splitKeys.length - 1; i++) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      //notice that the regionSize parameter may be not very accurate<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      TableSplit tsplit =<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          new TableSplit(tableName, scan, splitKeys[i], splitKeys[i + 1], regionLocation,<a name="line.415"></a>
+<span class="sourceLineNo">416</span>              encodedRegionName, regionSize / n);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      res.add(tsplit);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return res;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  /**<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * Calculates the number of MapReduce input splits for the map tasks. The number of<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * MapReduce input splits depends on the average region size.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Make it 'public' for testing<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   *<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param splits The list of input splits before balance.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param maxAverageRegionSize max Average region size for one mapper<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @return The list of input splits.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IOException When creating the list of splits fails.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   *org.apache.hadoop.mapreduce.JobContext)<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public List&lt;InputSplit&gt; calculateAutoBalancedSplits(List&lt;InputSplit&gt; splits, long maxAverageRegionSize)<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      throws IOException {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (splits.size() == 0) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return splits;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    List&lt;InputSplit&gt; resultList = new ArrayList&lt;&gt;();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    long totalRegionSize = 0;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      TableSplit ts = (TableSplit) splits.get(i);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      totalRegionSize += ts.getLength();<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    long averageRegionSize = totalRegionSize / splits.size();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // totalRegionSize might be overflow, and the averageRegionSize must be positive.<a name="line

<TRUNCATED>

[10/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
index edf22fb..0dce659 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
@@ -61,607 +61,615 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.net.DNS;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.util.StringUtils;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * A base for {@link TableInputFormat}s. Receives a {@link Connection}, a {@link TableName},<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * an {@link Scan} instance that defines the input columns etc. Subclasses may use<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * other TableRecordReader implementations.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * Subclasses MUST ensure initializeTable(Connection, TableName) is called for an instance to<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * function properly. Each of the entry points to this class used by the MapReduce framework,<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * {@link #createRecordReader(InputSplit, TaskAttemptContext)} and {@link #getSplits(JobContext)},<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * will call {@link #initialize(JobContext)} as a convenient centralized location to handle<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * retrieving the necessary configuration information. If your subclass overrides either of these<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * methods, either call the parent version or call initialize yourself.<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;p&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * An example of a subclass:<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * &lt;pre&gt;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> *   class ExampleTIF extends TableInputFormatBase {<a name="line.72"></a>
-<span class="sourceLineNo">073</span> *<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *     {@literal @}Override<a name="line.74"></a>
-<span class="sourceLineNo">075</span> *     protected void initialize(JobContext context) throws IOException {<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *       // We are responsible for the lifecycle of this connection until we hand it over in<a name="line.76"></a>
-<span class="sourceLineNo">077</span> *       // initializeTable.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> *       Connection connection = ConnectionFactory.createConnection(HBaseConfiguration.create(<a name="line.78"></a>
-<span class="sourceLineNo">079</span> *              job.getConfiguration()));<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *       TableName tableName = TableName.valueOf("exampleTable");<a name="line.80"></a>
-<span class="sourceLineNo">081</span> *       // mandatory. once passed here, TableInputFormatBase will handle closing the connection.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *       initializeTable(connection, tableName);<a name="line.82"></a>
-<span class="sourceLineNo">083</span> *       byte[][] inputColumns = new byte [][] { Bytes.toBytes("columnA"),<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *         Bytes.toBytes("columnB") };<a name="line.84"></a>
-<span class="sourceLineNo">085</span> *       // optional, by default we'll get everything for the table.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> *       Scan scan = new Scan();<a name="line.86"></a>
-<span class="sourceLineNo">087</span> *       for (byte[] family : inputColumns) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *         scan.addFamily(family);<a name="line.88"></a>
-<span class="sourceLineNo">089</span> *       }<a name="line.89"></a>
-<span class="sourceLineNo">090</span> *       Filter exampleFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("aa.*"));<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *       scan.setFilter(exampleFilter);<a name="line.91"></a>
-<span class="sourceLineNo">092</span> *       setScan(scan);<a name="line.92"></a>
-<span class="sourceLineNo">093</span> *     }<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *   }<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/pre&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>/**<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * A base for {@link TableInputFormat}s. Receives a {@link Connection}, a {@link TableName},<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * an {@link Scan} instance that defines the input columns etc. Subclasses may use<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * other TableRecordReader implementations.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * Subclasses MUST ensure initializeTable(Connection, TableName) is called for an instance to<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * function properly. Each of the entry points to this class used by the MapReduce framework,<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * {@link #createRecordReader(InputSplit, TaskAttemptContext)} and {@link #getSplits(JobContext)},<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * will call {@link #initialize(JobContext)} as a convenient centralized location to handle<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * retrieving the necessary configuration information. If your subclass overrides either of these<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * methods, either call the parent version or call initialize yourself.<a name="line.68"></a>
+<span class="sourceLineNo">069</span> *<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * &lt;p&gt;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * An example of a subclass:<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * &lt;pre&gt;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *   class ExampleTIF extends TableInputFormatBase {<a name="line.73"></a>
+<span class="sourceLineNo">074</span> *<a name="line.74"></a>
+<span class="sourceLineNo">075</span> *     {@literal @}Override<a name="line.75"></a>
+<span class="sourceLineNo">076</span> *     protected void initialize(JobContext context) throws IOException {<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *       // We are responsible for the lifecycle of this connection until we hand it over in<a name="line.77"></a>
+<span class="sourceLineNo">078</span> *       // initializeTable.<a name="line.78"></a>
+<span class="sourceLineNo">079</span> *       Connection connection = ConnectionFactory.createConnection(HBaseConfiguration.create(<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *              job.getConfiguration()));<a name="line.80"></a>
+<span class="sourceLineNo">081</span> *       TableName tableName = TableName.valueOf("exampleTable");<a name="line.81"></a>
+<span class="sourceLineNo">082</span> *       // mandatory. once passed here, TableInputFormatBase will handle closing the connection.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *       initializeTable(connection, tableName);<a name="line.83"></a>
+<span class="sourceLineNo">084</span> *       byte[][] inputColumns = new byte [][] { Bytes.toBytes("columnA"),<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *         Bytes.toBytes("columnB") };<a name="line.85"></a>
+<span class="sourceLineNo">086</span> *       // optional, by default we'll get everything for the table.<a name="line.86"></a>
+<span class="sourceLineNo">087</span> *       Scan scan = new Scan();<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *       for (byte[] family : inputColumns) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span> *         scan.addFamily(family);<a name="line.89"></a>
+<span class="sourceLineNo">090</span> *       }<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *       Filter exampleFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("aa.*"));<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *       scan.setFilter(exampleFilter);<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *       setScan(scan);<a name="line.93"></a>
+<span class="sourceLineNo">094</span> *     }<a name="line.94"></a>
+<span class="sourceLineNo">095</span> *   }<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * &lt;/pre&gt;<a name="line.96"></a>
 <span class="sourceLineNo">097</span> *<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * The number of InputSplits(mappers) match the number of regions in a table by default.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * Set "hbase.mapreduce.tableinput.mappers.per.region" to specify how many mappers per region, set<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * this property will disable autobalance below.\<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * Set "hbase.mapreduce.tif.input.autobalance" to enable autobalance, hbase will assign mappers<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * based on average region size; For regions, whose size larger than average region size may assigned<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * more mappers, and for smaller one, they may group together to use one mapper. If actual average<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * region size is too big, like 50G, it is not good to only assign 1 mapper for those large regions.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * Use "hbase.mapreduce.tif.ave.regionsize" to set max average region size when enable "autobalanece",<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * default mas average region size is 8G.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>@InterfaceAudience.Public<a name="line.108"></a>
-<span class="sourceLineNo">109</span>public abstract class TableInputFormatBase<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    extends InputFormat&lt;ImmutableBytesWritable, Result&gt; {<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private static final Logger LOG = LoggerFactory.getLogger(TableInputFormatBase.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final String NOT_INITIALIZED = "The input format instance has not been properly " +<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      "initialized. Ensure you call initializeTable either in your constructor or initialize " +<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      "method";<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final String INITIALIZATION_ERROR = "Cannot create a record reader because of a" +<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      " previous error. Please look at the previous logs lines from" +<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      " the task's full log for more details.";<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  /** Specify if we enable auto-balance to set number of mappers in M/R jobs. */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final String MAPREDUCE_INPUT_AUTOBALANCE = "hbase.mapreduce.tif.input.autobalance";<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  /** In auto-balance, we split input by ave region size, if calculated region size is too big, we can set it. */<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static final String MAX_AVERAGE_REGION_SIZE = "hbase.mapreduce.tif.ave.regionsize";<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /** Set the number of Mappers for each region, all regions have same number of Mappers */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String NUM_MAPPERS_PER_REGION = "hbase.mapreduce.tableinput.mappers.per.region";<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">098</span> *<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * The number of InputSplits(mappers) match the number of regions in a table by default.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * Set "hbase.mapreduce.tableinput.mappers.per.region" to specify how many mappers per region, set<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * this property will disable autobalance below.\<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Set "hbase.mapreduce.tif.input.autobalance" to enable autobalance, hbase will assign mappers<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * based on average region size; For regions, whose size larger than average region size may assigned<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * more mappers, and for smaller one, they may group together to use one mapper. If actual average<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * region size is too big, like 50G, it is not good to only assign 1 mapper for those large regions.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * Use "hbase.mapreduce.tif.ave.regionsize" to set max average region size when enable "autobalanece",<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * default mas average region size is 8G.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> */<a name="line.108"></a>
+<span class="sourceLineNo">109</span>@InterfaceAudience.Public<a name="line.109"></a>
+<span class="sourceLineNo">110</span>public abstract class TableInputFormatBase<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    extends InputFormat&lt;ImmutableBytesWritable, Result&gt; {<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static final Logger LOG = LoggerFactory.getLogger(TableInputFormatBase.class);<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String NOT_INITIALIZED = "The input format instance has not been properly " +<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      "initialized. Ensure you call initializeTable either in your constructor or initialize " +<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      "method";<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String INITIALIZATION_ERROR = "Cannot create a record reader because of a" +<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      " previous error. Please look at the previous logs lines from" +<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      " the task's full log for more details.";<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /** Specify if we enable auto-balance to set number of mappers in M/R jobs. */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public static final String MAPREDUCE_INPUT_AUTOBALANCE = "hbase.mapreduce.tif.input.autobalance";<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  /** In auto-balance, we split input by ave region size, if calculated region size is too big, we can set it. */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final String MAX_AVERAGE_REGION_SIZE = "hbase.mapreduce.tif.ave.regionsize";<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  /** Set the number of Mappers for each region, all regions have same number of Mappers */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public static final String NUM_MAPPERS_PER_REGION = "hbase.mapreduce.tableinput.mappers.per.region";<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  /** Holds the details for the internal scanner.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   *<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @see Scan */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private Scan scan = null;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /** The {@link Admin}. */<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private Admin admin;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  /** The {@link Table} to scan. */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private Table table;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /** The {@link RegionLocator} of the table. */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private RegionLocator regionLocator;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  /** The reader scanning the table, can be a custom one. */<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private TableRecordReader tableRecordReader = null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /** The underlying {@link Connection} of the table. */<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private Connection connection;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  /** Holds the details for the internal scanner.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   *<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @see Scan */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private Scan scan = null;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  /** The {@link Admin}. */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private Admin admin;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /** The {@link Table} to scan. */<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private Table table;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /** The {@link RegionLocator} of the table. */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RegionLocator regionLocator;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  /** The reader scanning the table, can be a custom one. */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private TableRecordReader tableRecordReader = null;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /** The underlying {@link Connection} of the table. */<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private Connection connection;<a name="line.144"></a>
 <span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  /** The reverse DNS lookup cache mapping: IPAddress =&gt; HostName */<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private HashMap&lt;InetAddress, String&gt; reverseDNSCacheMap =<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      new HashMap&lt;&gt;();<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * Builds a {@link TableRecordReader}. If no {@link TableRecordReader} was provided, uses<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * the default.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   *<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param split  The split to work with.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @param context  The current context.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @return The newly created record reader.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @throws IOException When creating the reader fails.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @see org.apache.hadoop.mapreduce.InputFormat#createRecordReader(<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *   org.apache.hadoop.mapreduce.InputSplit,<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   *   org.apache.hadoop.mapreduce.TaskAttemptContext)<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      InputSplit split, TaskAttemptContext context)<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      throws IOException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    if (table == null) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      initialize(context);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // null check in case our child overrides getTable to not throw.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    try {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      if (getTable() == null) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        // initialize() must not have been implemented in the subclass.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } catch (IllegalStateException exception) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    TableSplit tSplit = (TableSplit) split;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    LOG.info("Input split length: " + StringUtils.humanReadableInt(tSplit.getLength()) + " bytes.");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    final TableRecordReader trr =<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        this.tableRecordReader != null ? this.tableRecordReader : new TableRecordReader();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    Scan sc = new Scan(this.scan);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    sc.setStartRow(tSplit.getStartRow());<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    sc.setStopRow(tSplit.getEndRow());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    trr.setScan(sc);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    trr.setTable(getTable());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return new RecordReader&lt;ImmutableBytesWritable, Result&gt;() {<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void close() throws IOException {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        trr.close();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        closeTable();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>      @Override<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        return trr.getCurrentKey();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        return trr.getCurrentValue();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      @Override<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      public float getProgress() throws IOException, InterruptedException {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        return trr.getProgress();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>      @Override<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws IOException,<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          InterruptedException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        trr.initialize(inputsplit, context);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @Override<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        return trr.nextKeyValue();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    };<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  protected Pair&lt;byte[][],byte[][]&gt; getStartEndKeys() throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return getRegionLocator().getStartEndKeys();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * Calculates the splits that will serve as input for the map tasks.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param context  The current job context.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @return The list of input splits.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @throws IOException When creating the list of splits fails.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   *   org.apache.hadoop.mapreduce.JobContext)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    boolean closeOnFinish = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    if (table == null) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      initialize(context);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      closeOnFinish = true;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // null check in case our child overrides getTable to not throw.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (getTable() == null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        // initialize() must not have been implemented in the subclass.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } catch (IllegalStateException exception) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    try {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      List&lt;InputSplit&gt; splits = oneInputSplitPerRegion();<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      // set same number of mappers for each region<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (context.getConfiguration().get(NUM_MAPPERS_PER_REGION) != null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        int nSplitsPerRegion = context.getConfiguration().getInt(NUM_MAPPERS_PER_REGION, 1);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        for (int i = 0; i &lt; splits.size(); i++) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          List&lt;InputSplit&gt; tmp = createNInputSplitsUniform(splits.get(i), nSplitsPerRegion);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          res.addAll(tmp);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        return res;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>      //The default value of "hbase.mapreduce.input.autobalance" is false.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (context.getConfiguration().getBoolean(MAPREDUCE_INPUT_AUTOBALANCE, false)) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        long maxAveRegionSize = context.getConfiguration()<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            .getLong(MAX_AVERAGE_REGION_SIZE, 8L*1073741824); //8GB<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        return calculateAutoBalancedSplits(splits, maxAveRegionSize);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      // return one mapper per region<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      return splits;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    } finally {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      if (closeOnFinish) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        closeTable();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * Create one InputSplit per region<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   *<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @return The list of InputSplit for all the regions<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @throws IOException<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private List&lt;InputSplit&gt; oneInputSplitPerRegion() throws IOException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    RegionSizeCalculator sizeCalculator =<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        new RegionSizeCalculator(getRegionLocator(), getAdmin());<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    TableName tableName = getTable().getName();<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Pair&lt;byte[][], byte[][]&gt; keys = getStartEndKeys();<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (keys == null || keys.getFirst() == null ||<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        keys.getFirst().length == 0) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      HRegionLocation regLoc =<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          getRegionLocator().getRegionLocation(HConstants.EMPTY_BYTE_ARRAY, false);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (null == regLoc) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("Expecting at least one region.");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(1);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      long regionSize = sizeCalculator.getRegionSize(regLoc.getRegionInfo().getRegionName());<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      TableSplit split = new TableSplit(tableName, scan,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, regLoc<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          .getHostnamePort().split(Addressing.HOSTNAME_PORT_SEPARATOR)[0], regionSize);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      splits.add(split);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return splits;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(keys.getFirst().length);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    for (int i = 0; i &lt; keys.getFirst().length; i++) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      if (!includeRegionInSplit(keys.getFirst()[i], keys.getSecond()[i])) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        continue;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>      byte[] startRow = scan.getStartRow();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] stopRow = scan.getStopRow();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      // determine if the given start an stop key fall into the region<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      if ((startRow.length == 0 || keys.getSecond()[i].length == 0 ||<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          Bytes.compareTo(startRow, keys.getSecond()[i]) &lt; 0) &amp;&amp;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          (stopRow.length == 0 ||<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              Bytes.compareTo(stopRow, keys.getFirst()[i]) &gt; 0)) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        byte[] splitStart = startRow.length == 0 ||<a name="line.327"></a>
-<span class="sourceLineNo">328</span>            Bytes.compareTo(keys.getFirst()[i], startRow) &gt;= 0 ?<a name="line.328"></a>
-<span class="sourceLineNo">329</span>            keys.getFirst()[i] : startRow;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        byte[] splitStop = (stopRow.length == 0 ||<a name="line.330"></a>
-<span class="sourceLineNo">331</span>            Bytes.compareTo(keys.getSecond()[i], stopRow) &lt;= 0) &amp;&amp;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>            keys.getSecond()[i].length &gt; 0 ?<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            keys.getSecond()[i] : stopRow;<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>        HRegionLocation location = getRegionLocator().getRegionLocation(keys.getFirst()[i], false);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        // The below InetSocketAddress creation does a name resolution.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        InetSocketAddress isa = new InetSocketAddress(location.getHostname(), location.getPort());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        if (isa.isUnresolved()) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          LOG.warn("Failed resolve " + isa);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        InetAddress regionAddress = isa.getAddress();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        String regionLocation;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        regionLocation = reverseDNS(regionAddress);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>        byte[] regionName = location.getRegionInfo().getRegionName();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        String encodedRegionName = location.getRegionInfo().getEncodedName();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        long regionSize = sizeCalculator.getRegionSize(regionName);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        TableSplit split = new TableSplit(tableName, scan,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>            splitStart, splitStop, regionLocation, encodedRegionName, regionSize);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        splits.add(split);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        if (LOG.isDebugEnabled()) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          LOG.debug("getSplits: split -&gt; " + i + " -&gt; " + split);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return splits;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  /**<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * Create n splits for one InputSplit, For now only support uniform distribution<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * @param split A TableSplit corresponding to a range of rowkeys<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @param n     Number of ranges after splitting.  Pass 1 means no split for the range<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *              Pass 2 if you want to split the range in two;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @return A list of TableSplit, the size of the list is n<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @throws IllegalArgumentIOException<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  protected List&lt;InputSplit&gt; createNInputSplitsUniform(InputSplit split, int n)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      throws IllegalArgumentIOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    if (split == null || !(split instanceof TableSplit)) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      throw new IllegalArgumentIOException(<a name="line.370"></a>
-<span class="sourceLineNo">371</span>          "InputSplit for CreateNSplitsPerRegion can not be null + "<a name="line.371"></a>
-<span class="sourceLineNo">372</span>              + "and should be instance of TableSplit");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    //if n &lt; 1, then still continue using n = 1<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    n = n &lt; 1 ? 1 : n;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;(n);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    if (n == 1) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      res.add(split);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      return res;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    // Collect Region related information<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    TableSplit ts = (TableSplit) split;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    TableName tableName = ts.getTable();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    String regionLocation = ts.getRegionLocation();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    String encodedRegionName = ts.getEncodedRegionName();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    long regionSize = ts.getLength();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    byte[] startRow = ts.getStartRow();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    byte[] endRow = ts.getEndRow();<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // For special case: startRow or endRow is empty<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (startRow.length == 0 &amp;&amp; endRow.length == 0){<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      startRow = new byte[1];<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      endRow = new byte[1];<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      startRow[0] = 0;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      endRow[0] = -1;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    if (startRow.length == 0 &amp;&amp; endRow.length != 0){<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      startRow = new byte[1];<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      startRow[0] = 0;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    if (startRow.length != 0 &amp;&amp; endRow.length == 0){<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      endRow =new byte[startRow.length];<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      for (int k = 0; k &lt; startRow.length; k++){<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        endRow[k] = -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Split Region into n chunks evenly<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    byte[][] splitKeys = Bytes.split(startRow, endRow, true, n-1);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    for (int i = 0; i &lt; splitKeys.length - 1; i++) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      //notice that the regionSize parameter may be not very accurate<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      TableSplit tsplit =<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          new TableSplit(tableName, scan, splitKeys[i], splitKeys[i + 1], regionLocation,<a name="line.414"></a>
-<span class="sourceLineNo">415</span>              encodedRegionName, regionSize / n);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      res.add(tsplit);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    return res;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Calculates the number of MapReduce input splits for the map tasks. The number of<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * MapReduce input splits depends on the average region size.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * Make it 'public' for testing<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   *<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @param splits The list of input splits before balance.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param maxAverageRegionSize max Average region size for one mapper<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @return The list of input splits.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @throws IOException When creating the list of splits fails.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *org.apache.hadoop.mapreduce.JobContext)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public List&lt;InputSplit&gt; calculateAutoBalancedSplits(List&lt;InputSplit&gt; splits, long maxAverageRegionSize)<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    if (splits.size() == 0) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      return splits;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    List&lt;InputSplit&gt; resultList = new ArrayList&lt;&gt;();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    long totalRegionSize = 0;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      TableSplit ts = (TableSplit) splits.get(i);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      totalRegionSize += ts.getLength();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    long averageRegionSize = totalRegionSize / splits.size();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // totalRegionSize might be overflow, and the averageRegionSize must be positive.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (averageRegionSize &lt;= 0) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      LOG.warn("The averageRegionSize is not positive: " + averageRegionSize + ", " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          "set it to Long.MAX_VALUE " + splits.size());<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      averageRegionSize = Long.MAX_VALUE / splits.size();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    //if averageRegionSize is too big, change it to default as 1 GB,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    if (averageRegionSize &gt; maxAverageRegionSize) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      averageRegionSize = maxAverageRegionSize;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // if averageRegionSize is too small, we do not need to allocate more mappers for those 'large' region<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // set default as 16M = (default hdfs block size) / 4;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (averageRegionSize &lt; 16 * 1048576) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      return splits;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      TableSplit ts = (TableSplit) splits.get(i);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      TableName tableName = ts.getTable();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      String regionLocation = ts.getRegionLocation();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String encodedRegionName = ts.getEncodedRegionName();<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      long regionSize = ts.getLength();<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (regionSize &gt;= averageRegionSize) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        // make this region as multiple MapReduce input split.<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        int n = (int) Math.round(Math.log(((double) regionSize) / ((double) averageRegionSize)) + 1.0);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        List&lt;InputSplit&gt; temp = createNInputSplitsUniform(ts, n);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        resultList.addAll(temp);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      } else {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        // if the total size of several small continuous regions less than the average region size,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        // combine them into one MapReduce input split.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        long totalSize = regionSize;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        byte[] splitStartKey = ts.getStartRow();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        byte[] splitEndKey = ts.getEndRow();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        int j = i + 1;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        while (j &lt; splits.size()) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          TableSplit nextRegion = (TableSplit) splits.get(j);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          long nextRegionSize = nextRegion.getLength();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          if (totalSize + nextRegionSize &lt;= averageRegionSize) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>            totalSize = totalSize + nextRegionSize;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>            splitEndKey = nextRegion.getEndRow();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>            j++;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          } else {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            break;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        i = j - 1;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        TableSplit t = new TableSplit(tableName, scan, splitStartKey, splitEndKey, regionLocation,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            encodedRegionName, totalSize);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        resultList.add(t);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return resultList;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  String reverseDNS(InetAddress ipAddress) throws UnknownHostException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    String hostName = this.reverseDNSCacheMap.get(ipAddress);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    if (hostName == null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      String ipAddressString = null;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      try {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        ipAddressString = DNS.reverseDns(ipAddress, null);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      } catch (Exception e) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        // We can use InetAddress in case the jndi failed to pull up the reverse DNS entry from the<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        // name service. Also, in case of ipv6, we need to use the InetAddress since resolving<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        // reverse DNS using jndi doesn't work well with ipv6 addresses.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        ipAddressString = InetAddress.getByName(ipAddress.getHostAddress()).getHostName();<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      if (ipAddressString == null) throw new UnknownHostException("No host found for " + ipAddress);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      hostName = Strings.domainNamePointerToHostName(ipAddressString);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.reverseDNSCacheMap.put(ipAddress, hostName);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return hostName;<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>   * Test if the given region is to be included in the InputSplit while splitting<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * the regions of a table.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * &lt;p&gt;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * This optimization is effective when there is a specific reasoning to exclude an entire region from the M-R job,<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * (and hence, not contributing to the InputSplit), given the start and end keys of the same. &lt;br&gt;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * Useful when we need to remember the last-processed top record and revisit the [last, current) interval for M-R processing,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * continuously. In addition to reducing InputSplits, reduces the load on the region server as well, due to the ordering of the keys.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * &lt;br&gt;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * &lt;br&gt;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Note: It is possible that &lt;code&gt;endKey.length() == 0 &lt;/code&gt; , for the last (recent) region.<a name="line.527"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /** The reverse DNS lookup cache mapping: IPAddress =&gt; HostName */<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  private HashMap&lt;InetAddress, String&gt; reverseDNSCacheMap =<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      new HashMap&lt;&gt;();<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  /**<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * Builds a {@link TableRecordReader}. If no {@link TableRecordReader} was provided, uses<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * the default.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   *<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @param split  The split to work with.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @param context  The current context.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @return The newly created record reader.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws IOException When creating the reader fails.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * @see org.apache.hadoop.mapreduce.InputFormat#createRecordReader(<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   *   org.apache.hadoop.mapreduce.InputSplit,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   *   org.apache.hadoop.mapreduce.TaskAttemptContext)<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @Override<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      InputSplit split, TaskAttemptContext context)<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (table == null) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      initialize(context);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    // null check in case our child overrides getTable to not throw.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      if (getTable() == null) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        // initialize() must not have been implemented in the subclass.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } catch (IllegalStateException exception) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    TableSplit tSplit = (TableSplit) split;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    LOG.info("Input split length: " + StringUtils.humanReadableInt(tSplit.getLength()) + " bytes.");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    final TableRecordReader trr =<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        this.tableRecordReader != null ? this.tableRecordReader : new TableRecordReader();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    Scan sc = new Scan(this.scan);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    sc.setStartRow(tSplit.getStartRow());<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    sc.setStopRow(tSplit.getEndRow());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    trr.setScan(sc);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    trr.setTable(getTable());<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    return new RecordReader&lt;ImmutableBytesWritable, Result&gt;() {<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>      @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      public void close() throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        trr.close();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        closeTable();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>      @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        return trr.getCurrentKey();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>      @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        return trr.getCurrentValue();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>      @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      public float getProgress() throws IOException, InterruptedException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        return trr.getProgress();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      }<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>      @Override<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws IOException,<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          InterruptedException {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        trr.initialize(inputsplit, context);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        return trr.nextKeyValue();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    };<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  protected Pair&lt;byte[][],byte[][]&gt; getStartEndKeys() throws IOException {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return getRegionLocator().getStartEndKeys();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /**<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * Calculates the splits that will serve as input for the map tasks.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param context  The current job context.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @return The list of input splits.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @throws IOException When creating the list of splits fails.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   *   org.apache.hadoop.mapreduce.JobContext)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    boolean closeOnFinish = false;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // Just in case a subclass is relying on JobConfigurable magic.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    if (table == null) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      initialize(context);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      closeOnFinish = true;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // null check in case our child overrides getTable to not throw.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      if (getTable() == null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        // initialize() must not have been implemented in the subclass.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        throw new IOException(INITIALIZATION_ERROR);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    } catch (IllegalStateException exception) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      throw new IOException(INITIALIZATION_ERROR, exception);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    try {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      List&lt;InputSplit&gt; splits = oneInputSplitPerRegion();<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // set same number of mappers for each region<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (context.getConfiguration().get(NUM_MAPPERS_PER_REGION) != null) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        int nSplitsPerRegion = context.getConfiguration().getInt(NUM_MAPPERS_PER_REGION, 1);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        for (int i = 0; i &lt; splits.size(); i++) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          List&lt;InputSplit&gt; tmp = createNInputSplitsUniform(splits.get(i), nSplitsPerRegion);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          res.addAll(tmp);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        return res;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>      //The default value of "hbase.mapreduce.input.autobalance" is false.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      if (context.getConfiguration().getBoolean(MAPREDUCE_INPUT_AUTOBALANCE, false)) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        long maxAveRegionSize = context.getConfiguration()<a name="line.273"></a>
+<span class="sourceLineNo">274</span>            .getLong(MAX_AVERAGE_REGION_SIZE, 8L*1073741824); //8GB<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        return calculateAutoBalancedSplits(splits, maxAveRegionSize);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>      // return one mapper per region<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      return splits;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    } finally {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      if (closeOnFinish) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        closeTable();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  /**<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Create one InputSplit per region<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   *<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * @return The list of InputSplit for all the regions<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @throws IOException<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  private List&lt;InputSplit&gt; oneInputSplitPerRegion() throws IOException {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    RegionSizeCalculator sizeCalculator =<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        createRegionSizeCalculator(getRegionLocator(), getAdmin());<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    TableName tableName = getTable().getName();<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    Pair&lt;byte[][], byte[][]&gt; keys = getStartEndKeys();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (keys == null || keys.getFirst() == null ||<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        keys.getFirst().length == 0) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      HRegionLocation regLoc =<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          getRegionLocator().getRegionLocation(HConstants.EMPTY_BYTE_ARRAY, false);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      if (null == regLoc) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        throw new IOException("Expecting at least one region.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(1);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      long regionSize = sizeCalculator.getRegionSize(regLoc.getRegionInfo().getRegionName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      TableSplit split = new TableSplit(tableName, scan,<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, regLoc<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          .getHostnamePort().split(Addressing.HOSTNAME_PORT_SEPARATOR)[0], regionSize);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      splits.add(split);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return splits;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(keys.getFirst().length);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    for (int i = 0; i &lt; keys.getFirst().length; i++) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      if (!includeRegionInSplit(keys.getFirst()[i], keys.getSecond()[i])) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        continue;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>      byte[] startRow = scan.getStartRow();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      byte[] stopRow = scan.getStopRow();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      // determine if the given start an stop key fall into the region<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      if ((startRow.length == 0 || keys.getSecond()[i].length == 0 ||<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          Bytes.compareTo(startRow, keys.getSecond()[i]) &lt; 0) &amp;&amp;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          (stopRow.length == 0 ||<a name="line.326"></a>
+<span class="sourceLineNo">327</span>              Bytes.compareTo(stopRow, keys.getFirst()[i]) &gt; 0)) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        byte[] splitStart = startRow.length == 0 ||<a name="line.328"></a>
+<span class="sourceLineNo">329</span>            Bytes.compareTo(keys.getFirst()[i], startRow) &gt;= 0 ?<a name="line.329"></a>
+<span class="sourceLineNo">330</span>            keys.getFirst()[i] : startRow;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        byte[] splitStop = (stopRow.length == 0 ||<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            Bytes.compareTo(keys.getSecond()[i], stopRow) &lt;= 0) &amp;&amp;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            keys.getSecond()[i].length &gt; 0 ?<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            keys.getSecond()[i] : stopRow;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>        HRegionLocation location = getRegionLocator().getRegionLocation(keys.getFirst()[i], false);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        // The below InetSocketAddress creation does a name resolution.<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        InetSocketAddress isa = new InetSocketAddress(location.getHostname(), location.getPort());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (isa.isUnresolved()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          LOG.warn("Failed resolve " + isa);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        InetAddress regionAddress = isa.getAddress();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        String regionLocation;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        regionLocation = reverseDNS(regionAddress);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>        byte[] regionName = location.getRegionInfo().getRegionName();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        String encodedRegionName = location.getRegionInfo().getEncodedName();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        long regionSize = sizeCalculator.getRegionSize(regionName);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        TableSplit split = new TableSplit(tableName, scan,<a name="line.349"></a>
+<span class="sourceLineNo">350</span>            splitStart, splitStop, regionLocation, encodedRegionName, regionSize);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        splits.add(split);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (LOG.isDebugEnabled()) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          LOG.debug("getSplits: split -&gt; " + i + " -&gt; " + split);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return splits;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /**<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * Create n splits for one InputSplit, For now only support uniform distribution<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * @param split A TableSplit corresponding to a range of rowkeys<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * @param n     Number of ranges after splitting.  Pass 1 means no split for the range<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   *              Pass 2 if you want to split the range in two;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @return A list of TableSplit, the size of the list is n<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @throws IllegalArgumentIOException<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  protected List&lt;InputSplit&gt; createNInputSplitsUniform(InputSplit split, int n)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      throws IllegalArgumentIOException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (split == null || !(split instanceof TableSplit)) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      throw new IllegalArgumentIOException(<a name="line.371"></a>
+<span class="sourceLineNo">372</span>          "InputSplit for CreateNSplitsPerRegion can not be null + "<a name="line.372"></a>
+<span class="sourceLineNo">373</span>              + "and should be instance of TableSplit");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    //if n &lt; 1, then still continue using n = 1<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    n = n &lt; 1 ? 1 : n;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    List&lt;InputSplit&gt; res = new ArrayList&lt;&gt;(n);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    if (n == 1) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      res.add(split);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      return res;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>    // Collect Region related information<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    TableSplit ts = (TableSplit) split;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    TableName tableName = ts.getTable();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String regionLocation = ts.getRegionLocation();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    String encodedRegionName = ts.getEncodedRegionName();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    long regionSize = ts.getLength();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    byte[] startRow = ts.getStartRow();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    byte[] endRow = ts.getEndRow();<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // For special case: startRow or endRow is empty<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    if (startRow.length == 0 &amp;&amp; endRow.length == 0){<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      startRow = new byte[1];<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      endRow = new byte[1];<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      startRow[0] = 0;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      endRow[0] = -1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    if (startRow.length == 0 &amp;&amp; endRow.length != 0){<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      startRow = new byte[1];<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      startRow[0] = 0;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    if (startRow.length != 0 &amp;&amp; endRow.length == 0){<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      endRow =new byte[startRow.length];<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      for (int k = 0; k &lt; startRow.length; k++){<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        endRow[k] = -1;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Split Region into n chunks evenly<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    byte[][] splitKeys = Bytes.split(startRow, endRow, true, n-1);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; splitKeys.length - 1; i++) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      //notice that the regionSize parameter may be not very accurate<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      TableSplit tsplit =<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          new TableSplit(tableName, scan, splitKeys[i], splitKeys[i + 1], regionLocation,<a name="line.415"></a>
+<span class="sourceLineNo">416</span>              encodedRegionName, regionSize / n);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      res.add(tsplit);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return res;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  /**<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * Calculates the number of MapReduce input splits for the map tasks. The number of<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * MapReduce input splits depends on the average region size.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Make it 'public' for testing<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   *<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param splits The list of input splits before balance.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param maxAverageRegionSize max Average region size for one mapper<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @return The list of input splits.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IOException When creating the list of splits fails.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @see org.apache.hadoop.mapreduce.InputFormat#getSplits(<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   *org.apache.hadoop.mapreduce.JobContext)<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public List&lt;InputSplit&gt; calculateAutoBalancedSplits(List&lt;InputSplit&gt; splits, long maxAverageRegionSize)<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      throws IOException {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (splits.size() == 0) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return splits;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    List&lt;InputSplit&gt; resultList = new ArrayList&lt;&gt;();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    long totalRegionSize = 0;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      TableSplit ts = (TableSplit) splits.get(i);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      totalRegionSize += ts.getLength();<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    long averageRegionSize = totalRegionSize / splits.size();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // totalRegionSize might be overflow, and the averageRegionSize must be positiv

<TRUNCATED>

[03/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
index 676ae61..c658da2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
@@ -369,391 +369,397 @@
 <span class="sourceLineNo">361</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.362"></a>
 <span class="sourceLineNo">363</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    UTIL.compact(tableTwo, true);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    ADMIN.splitRegionAsync(hris.get(0).getRegionName(), Bytes.toBytes("3")).get(10,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TimeUnit.SECONDS);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    assertEquals(initialRegions, hris.size());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // Fail region merge through Coprocessor hook<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    masterObserver.failMerge(true);<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    f = ADMIN.mergeRegionsAsync(<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      false);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      f.get(10, TimeUnit.SECONDS);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      fail("Merge was supposed to fail!");<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    } catch (ExecutionException ee) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Expected.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, hris.size());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // verify that we cannot split<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      fail();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } catch (DoNotRetryRegionException e) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // Expected<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    Thread.sleep(2000);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * HBASE-13394<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Test<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    NamespaceDescriptor nspDesc =<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        NamespaceDescriptor.create(nsp1)<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ADMIN.createNamespace(nspDesc);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        ADMIN.createTable(tableDescOne);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } catch (Exception exp) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        LOG.error(exp.toString(), exp);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        ADMIN.createTable(tableDescOne);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      } catch (Exception e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        LOG.error(e.toString(), e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      nstate = getNamespaceState(nsp1);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    } finally {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        ADMIN.disableTable(tableOne);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        deleteTable(tableOne);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      ADMIN.deleteNamespace(nsp1);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      IOException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return getQuotaManager().getState(namespace);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    String skey = Bytes.toString(startKey);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    int key;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (StringUtils.isBlank(skey)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    } else {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return Bytes.toBytes("" + key);<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>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    volatile CountDownLatch postCompact;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        throws IOException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      postCompact.countDown();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      postCompact = new CountDownLatch(1);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>    @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return Optional.of(this);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">364</span>    byte[] splitKey = Bytes.toBytes("3");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    HRegion regionToSplit = UTIL.getMiniHBaseCluster().getRegions(tableTwo).stream()<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      .filter(r -&gt; r.getRegionInfo().containsRow(splitKey)).findFirst().get();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    regionToSplit.compact(true);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // the above compact may quit immediately if there is a compaction ongoing, so here we need to<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // wait a while to let the ongoing compaction finish.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    UTIL.waitFor(10000, regionToSplit::isSplittable);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ADMIN.splitRegionAsync(regionToSplit.getRegionInfo().getRegionName(), splitKey).get(10,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      TimeUnit.SECONDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    assertEquals(initialRegions, hris.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // Fail region merge through Coprocessor hook<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    masterObserver.failMerge(true);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    f = ADMIN.mergeRegionsAsync(<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      false);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      f.get(10, TimeUnit.SECONDS);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      fail("Merge was supposed to fail!");<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    } catch (ExecutionException ee) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // Expected.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertEquals(initialRegions, hris.size());<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    // verify that we cannot split<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      fail();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    } catch (DoNotRetryRegionException e) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Expected<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    Thread.sleep(2000);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * HBASE-13394<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  @Test<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    NamespaceDescriptor nspDesc =<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        NamespaceDescriptor.create(nsp1)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ADMIN.createNamespace(nspDesc);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    try {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        ADMIN.createTable(tableDescOne);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      } catch (Exception exp) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        LOG.error(exp.toString(), exp);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        ADMIN.createTable(tableDescOne);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      } catch (Exception e) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        LOG.error(e.toString(), e);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      nstate = getNamespaceState(nsp1);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    } finally {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        ADMIN.disableTable(tableOne);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        deleteTable(tableOne);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      ADMIN.deleteNamespace(nsp1);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      IOException {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return getQuotaManager().getState(namespace);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    String skey = Bytes.toString(startKey);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    int key;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    if (StringUtils.isBlank(skey)) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    } else {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return Bytes.toBytes("" + key);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    volatile CountDownLatch postCompact;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        throws IOException {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      postCompact.countDown();<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      postCompact = new CountDownLatch(1);<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>  @Test<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public void testStatePreserve() throws Exception {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ADMIN.createNamespace(nspDesc);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    tableDescOne.addFamily(fam1);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    tableDescTwo.addFamily(fam1);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    tableDescThree.addFamily(fam1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    ADMIN.disableTable(tableThree);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    deleteTable(tableThree);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    // wait for chore to complete<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      public boolean evaluate() throws Exception {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    });<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    restartMaster();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        .getTables().size(), after.getTables().size());<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      public boolean evaluate() throws Exception {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        if (master == null) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          return false;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    });<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void restartMaster() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    UTIL.getHBaseCluster().startMaster();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    waitForQuotaInitialize(UTIL);<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>  private NamespaceAuditor getQuotaManager() {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>    @Override<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return Optional.of(this);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>    @Override<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>        TableName tableName) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.565"></a>
+<span class="sourceLineNo">491</span>    @Override<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      return Optional.of(this);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  @Test<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public void testStatePreserve() throws Exception {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    ADMIN.createNamespace(nspDesc);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    tableDescOne.addFamily(fam1);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    tableDescTwo.addFamily(fam1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    tableDescThree.addFamily(fam1);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ADMIN.disableTable(tableThree);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    deleteTable(tableThree);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    // wait for chore to complete<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      @Override<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      public boolean evaluate() throws Exception {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    });<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    restartMaster();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        .getTables().size(), after.getTables().size());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      public boolean evaluate() throws Exception {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        if (master == null) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          return false;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    });<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  private void restartMaster() throws Exception {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    UTIL.getHBaseCluster().startMaster();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    waitForQuotaInitialize(UTIL);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  private NamespaceAuditor getQuotaManager() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      return Optional.of(this);<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>    @Override<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    public void postCompletedDeleteTableAction(<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        final TableName tableName) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      tableDeletionLatch.countDown();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    @Override<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    public void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        throw new IOException("Throw exception as it is demanded.");<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>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    // NOTE: We need a latch because admin is not sync,<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    ADMIN.deleteTable(tableName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    observer.tableDeletionLatch.await();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Test(expected = QuotaExceededException.class)<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    NamespaceDescriptor nspDesc =<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            .build();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    ADMIN.createNamespace(nspDesc);<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    HTableDescriptor tableDescOne =<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    tableDescOne.addFamily(fam1);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    HTableDescriptor tableDescTwo =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    tableDescTwo.addFamily(fam1);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ADMIN.createTable(tableDescOne);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  @Test(expected = QuotaExceededException.class)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    NamespaceDescriptor nspDesc =<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            .build();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    ADMIN.createNamespace(nspDesc);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    tableDescOne.addFamily(fam1);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    ADMIN.createTable(tableDescOne);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testCloneSnapshot() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    NamespaceDescriptor nspDesc =<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    ADMIN.createNamespace(nspDesc);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    tableDescOne.addFamily(fam1);<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>    int tableLength;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      tableLength = locator.getStartKeys().length;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.657"></a>
+<span class="sourceLineNo">569</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        TableName tableName) throws IOException {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void postCompletedDeleteTableAction(<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        final TableName tableName) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      tableDeletionLatch.countDown();<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 void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        throw new IOException("Throw exception as it is demanded.");<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>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    // NOTE: We need a latch because admin is not sync,<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    ADMIN.deleteTable(tableName);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    observer.tableDeletionLatch.await();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  @Test(expected = QuotaExceededException.class)<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    NamespaceDescriptor nspDesc =<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.603"></a>
+<span class="sourceLineNo">604</span>            .build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    ADMIN.createNamespace(nspDesc);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    HTableDescriptor tableDescOne =<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    tableDescOne.addFamily(fam1);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    HTableDescriptor tableDescTwo =<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    tableDescTwo.addFamily(fam1);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    ADMIN.createTable(tableDescOne);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>  @Test(expected = QuotaExceededException.class)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NamespaceDescriptor nspDesc =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            .build();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    ADMIN.createNamespace(nspDesc);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    tableDescOne.addFamily(fam1);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    ADMIN.createTable(tableDescOne);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.636"></a>
+<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCloneSnapshot() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    NamespaceDescriptor nspDesc =<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    ADMIN.createNamespace(nspDesc);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    tableDescOne.addFamily(fam1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.657"></a>
 <span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      tableLength = locator.getStartKeys().length;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  @Test<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  public void testRestoreSnapshot() throws Exception {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    NamespaceDescriptor nspDesc =<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        NamespaceDescriptor.create(nsp)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    ADMIN.createNamespace(nspDesc);<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    tableDescOne.addFamily(fam1);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.686"></a>
-<span class="sourceLineNo">687</span><a name="line.687"></a>
-<span class="sourceLineNo">688</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.689"></a>
+<span class="sourceLineNo">659</span>    int tableLength;<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      tableLength = locator.getStartKeys().length;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      tableLength = locator.getStartKeys().length;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Test<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public void testRestoreSnapshot() throws Exception {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    NamespaceDescriptor nspDesc =<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        NamespaceDescriptor.create(nsp)<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    ADMIN.createNamespace(nspDesc);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    tableDescOne.addFamily(fam1);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.689"></a>
 <span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    Collections.sort(regions);<a name="line.692"></a>
+<span class="sourceLineNo">691</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.692"></a>
 <span class="sourceLineNo">693</span><a name="line.693"></a>
-<span class="sourceLineNo">694</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    Thread.sleep(2000);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    ADMIN.disableTable(tableName1);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    ADMIN.enableTable(tableName1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>  }<a name="line.705"></a>
+<span class="sourceLineNo">694</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    Collections.sort(regions);<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    Thread.sleep(2000);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    ADMIN.disableTable(tableName1);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.705"></a>
 <span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Test<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    NamespaceDescriptor nspDesc =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        NamespaceDescriptor.create(nsp)<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    ADMIN.createNamespace(nspDesc);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    tableDescOne.addFamily(fam1);<a name="line.719"></a>
-<span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    // snapshot has 4 regions<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    ADMIN.disableTable(tableName1);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    ADMIN.deleteTable(tableName1);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ADMIN.createTable(tableDescOne);<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    ADMIN.modifyNamespace(ndesc);<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">707</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.707"></a>
+<span class="sourceLineNo">708</span><a name="line.708"></a>
+<span class="sourceLineNo">709</span>    ADMIN.enableTable(tableName1);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  @Test<a name="line.713"></a>
+<span class="sourceLineNo">714</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    NamespaceDescriptor nspDesc =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        NamespaceDescriptor.create(nsp)<a name="line.717"></a>
+<span class="sourceLineNo">718</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    ADMIN.createNamespace(nspDesc);<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    tableDescOne.addFamily(fam1);<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.730"></a>
+<span class="sourceLineNo">731</span><a name="line.731"></a>
+<span class="sourceLineNo">732</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    // snapshot has 4 regions<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.735"></a>
 <span class="sourceLineNo">736</span>    ADMIN.disableTable(tableName1);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    try {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.739"></a>
-<span class="sourceLineNo">740</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    } catch (RestoreSnapshotException ignore) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    ADMIN.enableTable(tableName1);<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>}<a name="line.748"></a>
+<span class="sourceLineNo">737</span>    ADMIN.deleteTable(tableName1);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    ADMIN.createTable(tableDescOne);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    ADMIN.modifyNamespace(ndesc);<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>    ADMIN.disableTable(tableName1);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    try {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    } catch (RestoreSnapshotException ignore) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    ADMIN.enableTable(tableName1);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span>}<a name="line.754"></a>
 
 
 


[08/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html
new file mode 100644
index 0000000..432d6a7
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html
@@ -0,0 +1,603 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestTableInputFormatBase.ConnectionForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestTableInputFormatBase.ConnectionForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatBase.ConnectionForMergeTesting" class="title">Class TestTableInputFormatBase.ConnectionForMergeTesting</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.ConnectionForMergeTesting</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>, org.apache.hadoop.hbase.Abortable, org.apache.hadoop.hbase.client.Connection</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.150">TestTableInputFormatBase.ConnectionForMergeTesting</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.client.Connection</pre>
+<div class="block">Connection class to use in <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>TestTableInputFormatBase.testNonSuccessiveSplitsAreNotMerged()</code></a>.
+ This class returns mocked <code>Table</code>, <code>RegionLocator</code>, <code>RegionSizeCalculator</code>,
+ and <code>Admin</code>.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static byte[][]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#END_KEYS">END_KEYS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#SIZE_MAP">SIZE_MAP</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static byte[][]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#SPLITS">SPLITS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static byte[][]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#START_KEYS">START_KEYS</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#ConnectionForMergeTesting-org.apache.hadoop.conf.Configuration-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.security.User-">ConnectionForMergeTesting</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool,
+                         org.apache.hadoop.hbase.security.User&nbsp;user)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#abort-java.lang.String-java.lang.Throwable-">abort</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;why,
+     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#close--">close</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.Admin</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getAdmin--">getAdmin</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.BufferedMutator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getBufferedMutator-org.apache.hadoop.hbase.client.BufferedMutatorParams-">getBufferedMutator</a></span>(org.apache.hadoop.hbase.client.BufferedMutatorParams&nbsp;params)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.BufferedMutator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getBufferedMutator-org.apache.hadoop.hbase.TableName-">getBufferedMutator</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getConfiguration--">getConfiguration</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.RegionLocator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getRegionLocator-org.apache.hadoop.hbase.TableName-">getRegionLocator</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getRegionSizeCalculator--">getRegionSizeCalculator</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" 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/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getTable-org.apache.hadoop.hbase.TableName-">getTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr id="i9" 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/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getTable-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">getTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool)</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.client.TableBuilder</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getTableBuilder-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">getTableBuilder</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool)</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#isAborted--">isAborted</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#isClosed--">isClosed</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="SPLITS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SPLITS</h4>
+<pre>public static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.151">SPLITS</a></pre>
+</li>
+</ul>
+<a name="START_KEYS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>START_KEYS</h4>
+<pre>public static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.161">START_KEYS</a></pre>
+</li>
+</ul>
+<a name="END_KEYS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>END_KEYS</h4>
+<pre>public static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.162">END_KEYS</a></pre>
+</li>
+</ul>
+<a name="SIZE_MAP">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SIZE_MAP</h4>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.177">SIZE_MAP</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ConnectionForMergeTesting-org.apache.hadoop.conf.Configuration-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.security.User-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ConnectionForMergeTesting</h4>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.189">ConnectionForMergeTesting</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool,
+                          org.apache.hadoop.hbase.security.User&nbsp;user)
+                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="abort-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>abort</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.194">abort</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;why,
+                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>abort</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Abortable</code></dd>
+</dl>
+</li>
+</ul>
+<a name="isAborted--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isAborted</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.198">isAborted</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>isAborted</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Abortable</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getConfiguration--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getConfiguration</h4>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.203">getConfiguration</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getConfiguration</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getTable-org.apache.hadoop.hbase.TableName-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTable</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.208">getTable</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="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getTable</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getTable-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTable</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.215">getTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+                                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool)
+                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getTable</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getBufferedMutator-org.apache.hadoop.hbase.TableName-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBufferedMutator</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.BufferedMutator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.220">getBufferedMutator</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="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getBufferedMutator</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getBufferedMutator-org.apache.hadoop.hbase.client.BufferedMutatorParams-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBufferedMutator</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.BufferedMutator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.225">getBufferedMutator</a>(org.apache.hadoop.hbase.client.BufferedMutatorParams&nbsp;params)
+                                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getBufferedMutator</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getRegionLocator-org.apache.hadoop.hbase.TableName-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRegionLocator</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.RegionLocator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.230">getRegionLocator</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="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getRegionLocator</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getRegionSizeCalculator--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRegionSizeCalculator</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.254">getRegionSizeCalculator</a>()</pre>
+</li>
+</ul>
+<a name="getAdmin--">
+<!--   -->
+</a>
+<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/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.270">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>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getAdmin</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="close--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>close</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.277">close</a>()
+           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>close</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="isClosed--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isClosed</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.281">isClosed</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>isClosed</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getTableBuilder-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getTableBuilder</h4>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.TableBuilder&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.286">getTableBuilder</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+                                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getTableBuilder</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.client.Connection</code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
new file mode 100644
index 0000000..79dc827
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
@@ -0,0 +1,443 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestTableInputFormatBase.TableInputFormatForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestTableInputFormatBase.TableInputFormatForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatBase.TableInputFormatForMergeTesting" class="title">Class TestTableInputFormatBase.TableInputFormatForMergeTesting</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.mapreduce.InputFormat&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.client.Result&gt;</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TableInputFormat</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.TableInputFormatForMergeTesting</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.conf.Configurable</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.112">TestTableInputFormatBase.TableInputFormatForMergeTesting</a>
+extends org.apache.hadoop.hbase.mapreduce.TableInputFormat</pre>
+<div class="block">Subclass of <code>TableInputFormat</code> to use in <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>TestTableInputFormatBase.testNonSuccessiveSplitsAreNotMerged()</code></a>.
+ This class overrides <code>TableInputFormatBase.includeRegionInSplit(byte[], byte[])</code>
+ to exclude specific splits.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#prefixEndKey">prefixEndKey</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#prefixStartKey">prefixStartKey</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#sizeCalculator">sizeCalculator</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TableInputFormat">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormat</h3>
+<code>INPUT_TABLE, SCAN, SCAN_BATCHSIZE, SCAN_CACHEBLOCKS, SCAN_CACHEDROWS, SCAN_COLUMN_FAMILY, SCAN_COLUMNS, SCAN_MAXVERSIONS, SCAN_ROW_START, SCAN_ROW_STOP, SCAN_TIMERANGE_END, SCAN_TIMERANGE_START, SCAN_TIMESTAMP, SHUFFLE_MAPS</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TableInputFormatBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</h3>
+<code>MAPREDUCE_INPUT_AUTOBALANCE, MAX_AVERAGE_REGION_SIZE, NUM_MAPPERS_PER_REGION</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#TableInputFormatForMergeTesting--">TableInputFormatForMergeTesting</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(org.apache.hadoop.hbase.client.RegionLocator&nbsp;locator,
+                          org.apache.hadoop.hbase.client.Admin&nbsp;admin)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a></span>(byte[]&nbsp;startKey,
+                    byte[]&nbsp;endKey)</code>
+<div class="block">Exclude regions which contain rows starting with "b".</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a></span>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+               org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TableInputFormat">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormat</h3>
+<code>addColumns, configureSplitTable, createScanFromConfiguration, getConf, getSplits, getStartEndKeys, initialize, setConf</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TableInputFormatBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</h3>
+<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, getAdmin, getRegionLocator, getScan, getTable, reverseDNS, setScan, setTableRecordReader</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="prefixStartKey">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prefixStartKey</h4>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.113">prefixStartKey</a></pre>
+</li>
+</ul>
+<a name="prefixEndKey">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prefixEndKey</h4>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.114">prefixEndKey</a></pre>
+</li>
+</ul>
+<a name="sizeCalculator">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>sizeCalculator</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.115">sizeCalculator</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TableInputFormatForMergeTesting--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TableInputFormatForMergeTesting</h4>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.112">TableInputFormatForMergeTesting</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="includeRegionInSplit-byte:A-byte:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>includeRegionInSplit</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.121">includeRegionInSplit</a>(byte[]&nbsp;startKey,
+                                       byte[]&nbsp;endKey)</pre>
+<div class="block">Exclude regions which contain rows starting with "b".</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>includeRegionInSplit</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</code></dd>
+</dl>
+</li>
+</ul>
+<a name="initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>initializeTable</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.132">initializeTable</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+                               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="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>initializeTable</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>createRegionSizeCalculator</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.139">createRegionSizeCalculator</a>(org.apache.hadoop.hbase.client.RegionLocator&nbsp;locator,
+                                                                                            org.apache.hadoop.hbase.client.Admin&nbsp;admin)
+                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>createRegionSizeCalculator</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
index ae803fe..64a9506 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" target="_top">Frames</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.32">TestTableInputFormatBase</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.62">TestTableInputFormatBase</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>
@@ -117,6 +117,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></span></code>
+<div class="block">Connection class to use in <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>testNonSuccessiveSplitsAreNotMerged()</code></a>.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></span></code>
+<div class="block">Subclass of <code>TableInputFormat</code> to use in <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>testNonSuccessiveSplitsAreNotMerged()</code></a>.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -167,6 +194,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--">testNonSuccessiveSplitsAreNotMerged</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testTableInputFormatBaseReverseDNSForIPv6--">testTableInputFormatBaseReverseDNSForIPv6</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -197,7 +228,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.35">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.65">CLASS_RULE</a></pre>
 </li>
 </ul>
 </li>
@@ -214,7 +245,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestTableInputFormatBase</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.32">TestTableInputFormatBase</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.62">TestTableInputFormatBase</a>()</pre>
 </li>
 </ul>
 </li>
@@ -228,10 +259,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testTableInputFormatBaseReverseDNSForIPv6--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testTableInputFormatBaseReverseDNSForIPv6</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.39">testTableInputFormatBaseReverseDNSForIPv6</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.69">testTableInputFormatBaseReverseDNSForIPv6</a>()
                                                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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -239,6 +270,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testNonSuccessiveSplitsAreNotMerged--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testNonSuccessiveSplitsAreNotMerged</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.90">testNonSuccessiveSplitsAreNotMerged</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>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>
@@ -268,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" target="_top">Frames</a></li>
@@ -292,7 +337,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
index ac91d9c..81629bb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -484,7 +484,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInput
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html
new file mode 100644
index 0000000..3c94c93
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.ConnectionForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.ConnectionForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.ConnectionForMergeTesting" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.ConnectionForMergeTesting</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.ConnectionForMergeTesting</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.ConnectionForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
new file mode 100644
index 0000000..bec2b48
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.TableInputFormatForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.TableInputFormatForMergeTesting (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.TableInputFormatForMergeTesting" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.TableInputFormatForMergeTesting</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.TableInputFormatForMergeTesting</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html
index 714f077..316369e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html
@@ -77,6 +77,8 @@
 <li><a href="TestTableInputFormat.ExampleTIF.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormat.ExampleTIF</a></li>
 <li><a href="TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormat.ExampleVerifier</a></li>
 <li><a href="TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatBase</a></li>
+<li><a href="TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatBase.ConnectionForMergeTesting</a></li>
+<li><a href="TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></li>
 <li><a href="TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScan1</a></li>
 <li><a href="TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScan2</a></li>
 <li><a href="TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
index 1cce566..0b8da8c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
@@ -413,6 +413,18 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></td>
+<td class="colLast">
+<div class="block">Connection class to use in <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>TestTableInputFormatBase.testNonSuccessiveSplitsAreNotMerged()</code></a>.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></td>
+<td class="colLast">
+<div class="block">Subclass of <code>TableInputFormat</code> to use in <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>TestTableInputFormatBase.testNonSuccessiveSplitsAreNotMerged()</code></a>.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></td>
 <td class="colLast">
 <div class="block">TestTableInputFormatScan part 1.</div>


[13/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index e4329a7..a457767 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -274,7 +274,7 @@
 <td>3601</td>
 <td>0</td>
 <td>0</td>
-<td>15907</td></tr></table></div>
+<td>15906</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -5642,7 +5642,7 @@
 <td><a href="#org.apache.hadoop.hbase.namespace.TestNamespaceAuditor.java">org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>3</td></tr>
+<td>2</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.net.Address.java">org/apache/hadoop/hbase/net/Address.java</a></td>
 <td>0</td>
@@ -10289,7 +10289,7 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>123</td>
+<td>122</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>indentation</td>
@@ -10307,12 +10307,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>784</td>
+<td>798</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3845</td>
+<td>3831</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -14521,7 +14521,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 26 has parse error. Missed HTML close tag 'arg'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>44</td></tr></table></div>
 <div class="section">
@@ -15157,7 +15157,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 4 has parse error. Missed HTML close tag 'pre'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>59</td></tr></table></div>
 <div class="section">
@@ -16912,7 +16912,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 19 has parse error. Details: no viable alternative at input '&lt;code&gt;\n   *   List&lt;Future&lt;' while parsing HTML_TAG</td>
 <td>167</td></tr></table></div>
 <div class="section">
@@ -19834,7 +19834,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>83</td></tr>
 <tr class="b">
@@ -33817,7 +33817,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 37 has parse error. Details: no viable alternative at input '&lt;ColumnFamily,' while parsing HTML_ELEMENT</td>
 <td>29</td></tr></table></div>
 <div class="section">
@@ -50113,7 +50113,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 24 has parse error. Details: no viable alternative at input '&lt;key,' while parsing HTML_ELEMENT</td>
 <td>25</td></tr>
 <tr class="a">
@@ -53701,7 +53701,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>587</td></tr>
 <tr class="b">
@@ -57615,109 +57615,109 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>102</td></tr>
+<td>103</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 102).</td>
-<td>105</td></tr>
+<td>106</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 113).</td>
-<td>123</td></tr>
+<td>124</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 102).</td>
-<td>127</td></tr>
+<td>128</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>290</td></tr>
+<td>291</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>365</td></tr>
+<td>366</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 105).</td>
-<td>432</td></tr>
+<td>433</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 106).</td>
-<td>454</td></tr>
+<td>455</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 103).</td>
-<td>468</td></tr>
+<td>469</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>510</td></tr>
+<td>512</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 116).</td>
-<td>521</td></tr>
+<td>523</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 127).</td>
-<td>523</td></tr>
+<td>525</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 135).</td>
-<td>524</td></tr>
+<td>526</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 150).</td>
-<td>529</td></tr>
+<td>531</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>576</td></tr>
+<td>578</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>595</td></tr>
+<td>603</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>640</td></tr>
+<td>648</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 21 should have line break after.</td>
-<td>652</td></tr></table></div>
+<td>660</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.java">org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java</h3>
 <table border="0" class="table table-striped">
@@ -73424,48 +73424,42 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
-<td>Unused import - org.apache.hadoop.hbase.regionserver.HRegion.</td>
-<td>75</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.util.Threads.</td>
 <td>84</td></tr>
-<tr class="b">
+<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 have incorrect indentation level 7, expected level should be one of the following: 8, 10.</td>
-<td>517</td></tr></table></div>
+<td>523</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.net.Address.java">org/apache/hadoop/hbase/net/Address.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 60 has parse error. Missed HTML close tag 'Comparable'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class Address should be declared as final.</td>
 <td>33</td></tr>
-<tr class="b">
+<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>65</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73474,19 +73468,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.net.TestAddress.java">org/apache/hadoop/hbase/net/TestAddress.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.junit.Assert.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -73495,151 +73489,151 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.nio.ByteBuff.java">org/apache/hadoop/hbase/nio/ByteBuff.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<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>50</td></tr>
-<tr class="a">
+<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>80</td></tr>
-<tr class="b">
+<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>177</td></tr>
-<tr class="a">
+<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>186</td></tr>
-<tr class="b">
+<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>193</td></tr>
-<tr class="a">
+<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>200</td></tr>
-<tr class="b">
+<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>201</td></tr>
-<tr class="a">
+<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>209</td></tr>
-<tr class="b">
+<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>228</td></tr>
-<tr class="a">
+<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>234</td></tr>
-<tr class="b">
+<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>243</td></tr>
-<tr class="a">
+<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>278</td></tr>
-<tr class="b">
+<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>287</td></tr>
-<tr class="a">
+<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>313</td></tr>
-<tr class="b">
+<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>322</td></tr>
-<tr class="a">
+<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>349</td></tr>
-<tr class="b">
+<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>358</td></tr>
-<tr class="a">
+<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>389</td></tr>
-<tr class="b">
+<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>407</td></tr>
-<tr class="a">
+<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>409</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>489</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>489</td></tr>
-<tr class="b">
+<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>553</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73648,181 +73642,181 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.nio.MultiByteBuff.java">org/apache/hadoop/hbase/nio/MultiByteBuff.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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>91</td></tr>
-<tr class="b">
+<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>100</td></tr>
-<tr class="a">
+<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>129</td></tr>
-<tr class="b">
+<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>177</td></tr>
-<tr class="a">
+<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>208</td></tr>
-<tr class="b">
+<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>317</td></tr>
-<tr class="a">
+<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>356</td></tr>
-<tr class="b">
+<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>417</td></tr>
-<tr class="a">
+<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>532</td></tr>
-<tr class="b">
+<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>542</td></tr>
-<tr class="a">
+<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>554</td></tr>
-<tr class="b">
+<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>571</td></tr>
-<tr class="a">
+<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>581</td></tr>
-<tr class="b">
+<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>652</td></tr>
-<tr class="a">
+<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>670</td></tr>
-<tr class="b">
+<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>671</td></tr>
-<tr class="a">
+<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>705</td></tr>
-<tr class="b">
+<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>770</td></tr>
-<tr class="a">
+<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>780</td></tr>
-<tr class="b">
+<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>859</td></tr>
-<tr class="a">
+<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>881</td></tr>
-<tr class="b">
+<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>924</td></tr>
-<tr class="a">
+<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>970</td></tr>
-<tr class="b">
+<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>985</td></tr>
-<tr class="a">
+<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>1021</td></tr>
-<tr class="b">
+<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>1028</td></tr>
-<tr class="a">
+<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>1038</td></tr>
-<tr class="b">
+<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>1039</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73831,13 +73825,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.nio.SingleByteBuff.java">org/apache/hadoop/hbase/nio/SingleByteBuff.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73846,61 +73840,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.MasterProcedureManager.java">org/apache/hadoop/hbase/procedure/MasterProcedureManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.yetus.audience.InterfaceStability.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Stoppable' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.zookeeper.KeeperException' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<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>63</td></tr>
-<tr class="a">
+<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>64</td></tr>
-<tr class="b">
+<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>65</td></tr>
-<tr class="a">
+<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>74</td></tr>
-<tr class="b">
+<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>83</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -73909,91 +73903,91 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.Procedure.java">org/apache/hadoop/hbase/procedure/Procedure.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.errorhandling.ForeignException' import.</td>
 <td>31</td></tr>
-<tr class="b">
+<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>243</td></tr>
-<tr class="a">
+<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 102).</td>
 <td>251</td></tr>
-<tr class="b">
+<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>264</td></tr>
-<tr class="a">
+<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>295</td></tr>
-<tr class="b">
+<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 104).</td>
 <td>307</td></tr>
-<tr class="a">
+<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>317</td></tr>
-<tr class="b">
+<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>318</td></tr>
-<tr class="a">
+<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>343</td></tr>
-<tr class="b">
+<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>344</td></tr>
-<tr class="a">
+<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>355</td></tr>
-<tr class="b">
+<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>356</td></tr>
-<tr class="a">
+<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 106).</td>
 <td>358</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74002,73 +73996,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/ProcedureCoordinator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.DaemonThreadFactory' import.</td>
 <td>35</td></tr>
-<tr class="a">
+<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>70</td></tr>
-<tr class="b">
+<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>83</td></tr>
-<tr class="a">
+<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>85</td></tr>
-<tr class="b">
+<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>99</td></tr>
-<tr class="a">
+<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>109</td></tr>
-<tr class="b">
+<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>122</td></tr>
-<tr class="a">
+<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 103).</td>
 <td>181</td></tr>
-<tr class="b">
+<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>235</td></tr>
-<tr class="a">
+<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>236</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74077,19 +74071,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs.java">org/apache/hadoop/hbase/procedure/ProcedureCoordinatorRpcs.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.errorhandling.ForeignException' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74098,25 +74092,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ProcedureManagerHost.java">org/apache/hadoop/hbase/procedure/ProcedureManagerHost.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.List' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<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>36</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74125,103 +74119,103 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ProcedureMember.java">org/apache/hadoop/hbase/procedure/ProcedureMember.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.DaemonThreadFactory' import.</td>
 <td>32</td></tr>
-<tr class="b">
+<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>72</td></tr>
-<tr class="a">
+<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>82</td></tr>
-<tr class="b">
+<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>107</td></tr>
-<tr class="a">
+<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>108</td></tr>
-<tr class="b">
+<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' have incorrect indentation level 3, expected level should be 2.</td>
 <td>176</td></tr>
-<tr class="a">
+<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 have incorrect indentation level 5, expected level should be 4.</td>
 <td>177</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' have incorrect indentation level 5, expected level should be 4.</td>
 <td>178</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 7, expected level should be 6.</td>
 <td>179</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 7, expected level should be 6.</td>
 <td>180</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' have incorrect indentation level 5, expected level should be 4.</td>
 <td>181</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' have incorrect indentation level 5, expected level should be 4.</td>
 <td>182</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' have incorrect indentation level 5, expected level should be 4.</td>
 <td>184</td></tr>
-<tr class="b">
+<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 have incorrect indentation level 5, expected level should be 4.</td>
 <td>185</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 3, expected level should be 2.</td>
 <td>186</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74230,25 +74224,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs.java">org/apache/hadoop/hbase/procedure/ProcedureMemberRpcs.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.errorhandling.ForeignException' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<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>50</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -74257,25 +74251,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.RegionServerProcedureManager.java">org/apache/hadoop/hbase/procedure/RegionServerProcedureManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.RegionServerServices' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<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>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74284,13 +74278,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -74299,31 +74293,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.SimpleRSProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleRSProcedureManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.errorhandling.ForeignException' import.</td>
 <td>37</td></tr>
-<tr class="a">
+<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>145</td></tr>
-<tr class="b">
+<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>156</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74332,61 +74326,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.Subprocedure.java">org/apache/hadoop/hbase/procedure/Subprocedure.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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 have incorrect indentation level 5, expected level should be 4.</td>
 <td>135</td></tr>
-<tr class="b">
+<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>245</td></tr>
-<tr class="a">
+<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>258</td></tr>
-<tr class="b">
+<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>266</td></tr>
-<tr class="a">
+<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>272</td></tr>
-<tr class="b">
+<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>302</td></tr>
-<tr class="a">
+<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>303</td></tr>
-<tr class="b">
+<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>312</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74395,73 +74389,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.TestProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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>92</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>115</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
 <td>146</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>EmptyStatement</td>
 <td>Empty statement.</td>
 <td>146</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>167</td></tr>
-<tr class="b">
+<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>176</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
 <td>178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>EmptyStatement</td>
 <td>Empty statement.</td>
 <td>178</td></tr>
-<tr class="a">
+<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 101).</td>
 <td>285</td></tr>
-<tr class="b">
+<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>330</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74470,13 +74464,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.TestProcedureDescriber.java">org/apache/hadoop/hbase/procedure/TestProcedureDescriber.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
@@ -74485,43 +74479,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.TestProcedureMember.java">org/apache/hadoop/hbase/procedure/TestProcedureMember.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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>82</td></tr>
-<tr class="b">
+<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 102).</td>
 <td>108</td></tr>
-<tr class="a">
+<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 102).</td>
 <td>233</td></tr>
-<tr class="b">
+<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 106).</td>
 <td>234</td></tr>
-<tr class="a">
+<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 119).</td>
 <td>411</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -74530,181 +74524,181 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.TestZKProcedure.java">org/apache/hadoop/hbase/procedure/TestZKProcedure.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>121</td></tr>
-<tr class="a">
+<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 109).</td>
 <td>138</td></tr>
-<tr class="b">
+<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 104).</td>
 <td>141</td></tr>
-<tr class="a">
+<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 101).</td>
 <td>150</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' have incorrect indentation level 6, expected level should be 8.</td>
 <td>166</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>175</td></tr>
-<tr class="b">
+<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' have incorrect indentation level 8, expected level should be one of the following: 12, 14.</td>
 <td>176</td></tr>
-<tr class="a">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>178</td></tr>
-<tr class="b">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>179</td></tr>
-<tr class="a">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>180</td></tr>
-<tr class="b">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>181</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 8, expected level should be one of the following: 12, 14.</td>
 <td>182</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 6, expected level should be one of the following: 10, 12.</td>
 <td>183</td></tr>
-<tr class="a">
+<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 101).</td>
 <td>186</td></tr>
-<tr class="b">
+<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 106).</td>
 <td>190</td></tr>
-<tr class="a">
+<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 109).</td>
 <td>219</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'.' have incorrect indentation level 6, expected level should be 8.</td>
 <td>241</td></tr>
-<tr class="a">
+<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 101).</td>
 <td>258</td></tr>
-<tr class="b">
+<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 111).</td>
 <td>261</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>278</td></tr>
-<tr class="b">
+<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' have incorrect indentation level 8, expected level should be one of the following: 12, 14.</td>
 <td>279</td></tr>
-<tr class="a">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>281</td></tr>
-<tr class="b">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>282</td></tr>
-<tr class="a">
+<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 have incorrect indentation level 10, expected level should be one of the following: 14, 16.</td>
 <td>283</td></tr>
-<tr class="b">
+<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' have incorrect indentation level 8, expected level should be one of the following: 12, 14.</td>
 <td>284</td></tr>
-<tr class="a">
+<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' have incorrect indentation level 6, expected level should be one of the following: 10, 12.</td>
 <td>285</td></tr>
-<tr class="b">
+<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>311</td></tr>
-<tr class="a">
+<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 101).</td>
 <td>341</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -74713,49 +74707,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.TestZKProcedureControllers.java">org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<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 104).</td>
 <td>127</td></tr>
-<tr class="a">
+<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 103).</td>
 <td>133</td></tr>
-<tr class="b">
+<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 104).</td>
 <td>214</td></tr>
-<tr class="a">
+<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>228</td></tr>
-<tr class="b">
+<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 104).</td>
 <td>295</td></tr>
-<tr class="a">
+<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>309</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74764,19 +74758,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ZKProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/ZKProcedureCoordinator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<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>197</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -74785,25 +74779,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs.java">org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.errorhandling.ForeignException' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -74812,37 +74806,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.zookeeper.ZKUtil' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'baseZNode' must be private and have accessor methods.</td>
 <td>61</td></tr>
-<tr class="a">
+<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>242</td></tr>
-<tr class="b">
+<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>245</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74851,13 +74845,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -74866,19 +74860,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/MasterFlushTableProcedureManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.security.access.Permission.</td>
 <td>46</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74887,67 +74881,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure.flush.RegionServerFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/RegionServerFlushTableProcedureManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>90</td></tr>
-<tr class="b">
+<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>111</td></tr>
-<tr class="a">
+<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>131</td></tr>
-<tr class="b">
+<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>174</td></tr>
-<tr class="a">
+<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>176</td></tr>
-<tr class="b">
+<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>242</td></tr>
-<tr class="a">
+<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>287</td></tr>
-<tr class="b">
+<tr class="a">
 <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>298</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74956,25 +74950,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.AbstractProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.concurrent.TimeUnit' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<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>271</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74983,13 +74977,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.BadProcedureException.java">org/apache/hadoop/hbase/procedure2/BadProcedureException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -74998,25 +74992,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.LockAndQueue.java">org/apache/hadoop/hbase/procedure2/LockAndQueue.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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 106).</td>
 <td>73</td></tr>
-<tr class="b">
+<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>105</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -75025,19 +75019,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.LockedResource.java">org/apache/hadoop/hbase/procedure2/LockedResource.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.procedure2.LockedResourceType' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
@@ -75046,67 +75040,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.Procedure.java">org/apache/hadoop/hbase/procedure2/Procedure.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.TimeoutIOException' import.</td>
 <td>30</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.security.User' import.</td>
 <td>35</td></tr>
-<tr class="b">
+<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>126</td></tr>
-<tr class="a">
+<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 101).</td>
 <td>127</td></tr>
-<tr class="b">
+<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 103).</td>
 <td>129</td></tr>
-<tr class="a">
+<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>130</td></tr>
-<tr class="b">
+<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>654</td></tr>
-<tr class="a">
+<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>769</td></tr>
-<tr class="b">
+<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>838</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -75115,25 +75109,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.ProcedureDeque.java">org/apache/hadoop/hbase/procedure2/ProcedureDeque.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.procedure2.Procedure' import.</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Redundant import from the same package - org.apache.hadoop.hbase.procedure2.Procedure.</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -75142,13 +75136,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.ProcedureException.java">org/apache/hadoop/hbase/procedure2/ProcedureException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -75157,127 +75151,127 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.ProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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 103).</td>
 <td>208</td></tr>
-<tr class="b">
+<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 106).</td>
 <td>243</td></tr>
-<tr class="a">
+<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 102).</td>
 <td>250</td></tr>
-<tr class="b">
+<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 105).</td>
 <td>264</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 151 lines (max allowed is 150).</td>
 <td>337</td></tr>
-<tr class="b">
+<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>446</td></tr>
-<tr class="a">
+<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>452</td></tr>
-<tr class="b">
+<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>686</td></tr>
-<tr class="a">
+<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>687</td></tr>
-<tr class="b">
+<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>706</td></tr>
-<tr class="a">
+<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>715</td></tr>
-<tr class="b">
+<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>737</td></tr>
-<tr class="a">
+<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>740</td></tr>
-<tr class="b">
+<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>812</td></tr>
-<tr class="a">
+<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>815</td></tr>
-<tr class="b">
+<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>1040</td></tr>
-<tr class="a">
+<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>1131</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 16, expected level should be 14.</td>
 <td>1180</td></tr>
-<tr class="a">
+<tr class="b">
 <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>1303</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -75286,13 +75280,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.ProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/ProcedureScheduler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -75301,31 +75295,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.ProcedureTestingUtility.java">org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.NonceKey' import.</td>
 <td>43</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class ProcedureTestingUtility should be declared as final.</td>
 <td>48</td></tr>
-<tr class="b">
+<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>173</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -75334,25 +75328,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.ProcedureUtil.java">org/apache/hadoop/hbase/procedure2/ProcedureUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.NonceKey' import.</td>
 <td>35</td></tr>
-<tr class="b">
+<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 104).</td>
 <td>217</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -75361,31 +75355,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.procedure2.util.DelayedUtil' import.</td>
 <td>39</td></tr>
-<tr class="b">
+<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>191</td></tr>
-<tr class="a">
+<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>256</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -75394,31 +75388,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.RemoteProcedureException.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.ForeignExceptionUtil' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<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>52</td></tr>
-<tr class="b">
+<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>53</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -75427,31 +75421,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.RootProcedureState.java">org/apache/hadoop/hbase/procedure2/RootProcedureState.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<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>94</td></tr>
-<tr class="b">
+<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>122</td></tr>
-<tr class="a">
+<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>157</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -75460,43 +75454,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.StateMachineProcedure.java">org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<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>146</td></tr>
-<tr class="a">
+<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>148</td></tr>
-<tr class="b">
+<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>154</td></tr>
-<tr class="a">
+<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>166</td></tr>
-<tr class="b">
+<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>185</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -75505,19 +75499,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.TestProcedureExecution.java">org/apache/hadoop/hbase/procedure2/TestProcedureExecution.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 47 should have line break after.</td>
 <td>87</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -75526,13 +75520,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.TestProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/TestProcedureExecutor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
@@ -75541,13 +75535,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.TestProcedureMetrics.java">org/apache/hadoop/hbase/procedure2/TestProcedureMetrics.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -75556,31 +75550,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.TestProcedureNonce.java">org/apache/hadoop/hbase/procedure2/TestProcedureNonce.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
 <td>128</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>242</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>243</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -75589,13 +75583,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.TestProcedureRecovery.java">org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -75604,13 +75598,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.procedure2.TestProcedureReplayOrder.java">org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurl

<TRUNCATED>

[14/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 687e6f4..d74d824 100644
--- a/book.html
+++ b/book.html
@@ -37631,7 +37631,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-04-08 14:30:01 UTC
+Last updated 2018-04-09 14:29:54 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index b680bed..98665e2 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -296,7 +296,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 


[09/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 0b92511..d19d4b1 100644
--- a/export_control.html
+++ b/export_control.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -321,7 +321,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 45723fb..302262c 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -425,7 +425,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index f78f761..6068342 100644
--- a/integration.html
+++ b/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -281,7 +281,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 33a2ca9..e2656d8 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -278,7 +278,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index b0d01f4..5938530 100644
--- a/license.html
+++ b/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -481,7 +481,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 99d0af3..e92e99f 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index b762ce3..4bbf580 100644
--- a/metrics.html
+++ b/metrics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -449,7 +449,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index d1f0ee3..6fe5042 100644
--- a/old_news.html
+++ b/old_news.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -404,7 +404,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 896b87f..c42193f 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 86c0fe6..5ef7c07 100644
--- a/plugins.html
+++ b/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -365,7 +365,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 242efb3..cb23b35 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -759,7 +759,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 6145718..9eb11fb 100644
--- a/project-info.html
+++ b/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -325,7 +325,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index abdfc7b..51934f1 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -295,7 +295,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 449530e..b85925b 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -321,7 +321,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 8011ed8..5b33f69 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -298,7 +298,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 9d60f9f..d38c072 100644
--- a/replication.html
+++ b/replication.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -293,7 +293,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 6c18104..dce79e4 100644
--- a/resources.html
+++ b/resources.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -321,7 +321,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index de8c615..606aae1 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -289,7 +289,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 8396bcc..85c427c 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -323,7 +323,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 796c9ce..e688b00 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -510,7 +510,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index ea82e67..b95ebd5 100644
--- a/team-list.html
+++ b/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -720,7 +720,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 162eb18..fdb2b9c 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -2124,6 +2124,8 @@
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapred" target="classFrame">TestTableInputFormat.ExampleVerifier</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormat.ExampleVerifier</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatBase</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatBase.ConnectionForMergeTesting</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScan1</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScan2</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 868e3db..b19abf8 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -2124,6 +2124,8 @@
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapred">TestTableInputFormat.ExampleVerifier</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormat.ExampleVerifier</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 3606867..2cdac27 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -100,6 +100,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#abort-java.lang.String-java.lang.Throwable-">abort(String, Throwable)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#abort-java.lang.String-java.lang.Throwable-">abort(String, Throwable)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.DummyServer.html#abort-java.lang.String-java.lang.Throwable-">abort(String, Throwable)</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.DummyServer.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileCleaner.DummyServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.DummyServer.html#abort-java.lang.String-java.lang.Throwable-">abort(String, Throwable)</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.DummyServer.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileLinkCleaner.DummyServer</a></dt>
@@ -6759,6 +6761,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#close--">close()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#close--">close()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MockRegionServer.html#close-long-">close(long)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MockRegionServer.html" title="class in org.apache.hadoop.hbase.master">MockRegionServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MiniHBaseCluster.html#close--">close()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></dt>
@@ -8424,6 +8428,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncProcess.html#CONNECTION_CONFIG">CONNECTION_CONFIG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncProcess.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcess</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#ConnectionForMergeTesting-org.apache.hadoop.conf.Configuration-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.security.User-">ConnectionForMergeTesting(Configuration, ExecutorService, User)</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestJMXListener.html#connectorPort">connectorPort</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestJMXListener.html" title="class in org.apache.hadoop.hbase">TestJMXListener</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestStochasticBalancerJmxMetrics.html#connectorPort">connectorPort</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestStochasticBalancerJmxMetrics.html" title="class in org.apache.hadoop.hbase">TestStochasticBalancerJmxMetrics</a></dt>
@@ -9732,6 +9738,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub(boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.MyRegionServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator(RegionLocator, Admin)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/TestRegionSnapshotTask.html#createRegionVisitorWithDelay-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.fs.Path-">createRegionVisitorWithDelay(SnapshotProtos.SnapshotDescription, Path)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/TestRegionSnapshotTask.html" title="class in org.apache.hadoop.hbase.snapshot">TestRegionSnapshotTask</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestNamespace.html#createRemoveTest--">createRemoveTest()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestNamespace.html" title="class in org.apache.hadoop.hbase">TestNamespace</a></dt>
@@ -12521,6 +12529,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestTableRegionModel.html#END_KEY">END_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestTableRegionModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestTableRegionModel</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#END_KEYS">END_KEYS</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#END_ROW">END_ROW</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestTableSnapshotInputFormat</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html#END_ROW">END_ROW</a></span> - Static variable in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestScannerModel</a></dt>
@@ -15104,6 +15114,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#getAdmin--">getAdmin()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getAdmin--">getAdmin()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html#getAdmin--">getAdmin()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntrySinkFilter.DevNullConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.html#getAdminBuilder">getAdminBuilder</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBuilder</a></dt>
@@ -15288,6 +15300,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#getBufferedMutator-org.apache.hadoop.hbase.client.BufferedMutatorParams-">getBufferedMutator(BufferedMutatorParams)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getBufferedMutator-org.apache.hadoop.hbase.TableName-">getBufferedMutator(TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getBufferedMutator-org.apache.hadoop.hbase.client.BufferedMutatorParams-">getBufferedMutator(BufferedMutatorParams)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html#getBufferedMutator-org.apache.hadoop.hbase.TableName-">getBufferedMutator(TableName)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntrySinkFilter.DevNullConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html#getBufferedMutator-org.apache.hadoop.hbase.client.BufferedMutatorParams-">getBufferedMutator(BufferedMutatorParams)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntrySinkFilter.DevNullConnection</a></dt>
@@ -15620,6 +15636,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#getConfiguration--">getConfiguration()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getConfiguration--">getConfiguration()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.DummyServer.html#getConfiguration--">getConfiguration()</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.DummyServer.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileCleaner.DummyServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.DummyServer.html#getConfiguration--">getConfiguration()</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.DummyServer.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileLinkCleaner.DummyServer</a></dt>
@@ -17350,6 +17368,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#getRegionLocator-org.apache.hadoop.hbase.TableName-">getRegionLocator(TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getRegionLocator-org.apache.hadoop.hbase.TableName-">getRegionLocator(TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html#getRegionLocator-org.apache.hadoop.hbase.TableName-">getRegionLocator(TableName)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntrySinkFilter.DevNullConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/locking/TestLockProcedure.html#getRegionLock-java.util.List-java.lang.String-">getRegionLock(List&lt;RegionInfo&gt;, String)</a></span> - Method in class org.apache.hadoop.hbase.master.locking.<a href="org/apache/hadoop/hbase/master/locking/TestLockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">TestLockProcedure</a></dt>
@@ -17558,6 +17578,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MockRegionServerServices.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MockRegionServerServices.html" title="class in org.apache.hadoop.hbase">MockRegionServerServices</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getRegionSizeCalculator--">getRegionSizeCalculator()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.MockCluster.html#getRegionSizeMB-int-">getRegionSizeMB(int)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.MockCluster.html" title="class in org.apache.hadoop.hbase.master.balancer">TestStochasticLoadBalancer.MockCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestSpaceQuotasWithSnapshots.html#getRegionSizeReportForTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getRegionSizeReportForTable(Connection, TableName)</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestSpaceQuotasWithSnapshots.html" title="class in org.apache.hadoop.hbase.quotas">TestSpaceQuotasWithSnapshots</a></dt>
@@ -18257,10 +18279,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#getTable-org.apache.hadoop.hbase.TableName-">getTable(TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getTable-org.apache.hadoop.hbase.TableName-">getTable(TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getTable-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">getTable(TableName, ExecutorService)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html#getTableAndScanCreatorParams--">getTableAndScanCreatorParams()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">AbstractTestAsyncTableScan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#getTableBuilder-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">getTableBuilder(TableName, ExecutorService)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#getTableBuilder-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">getTableBuilder(TableName, ExecutorService)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html#getTableBuilder-org.apache.hadoop.hbase.TableName-java.util.concurrent.ExecutorService-">getTableBuilder(TableName, ExecutorService)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntrySinkFilter.DevNullConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html#getTableCreator--">getTableCreator()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">AbstractTestAsyncTableScan</a></dt>
@@ -19815,6 +19843,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#incCounter">incCounter</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.Incrementer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit(byte[], byte[])</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>
+<div class="block">Exclude regions which contain rows starting with "b".</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html#includesMemstoreTS">includesMemstoreTS</a></span> - Variable in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding">TestDataBlockEncoders</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.html#includesMemstoreTS">includesMemstoreTS</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheTestUtils</a></dt>
@@ -20230,6 +20262,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/TestServletFilter.SimpleFilter.Initializer.html#Initializer--">Initializer()</a></span> - Constructor for class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/TestServletFilter.SimpleFilter.Initializer.html" title="class in org.apache.hadoop.hbase.http">TestServletFilter.SimpleFilter.Initializer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable(Connection, TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html#initialRegionCount">initialRegionCount</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestMergeTableRegionsProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html#initialRegionCount">initialRegionCount</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRogueRSAssignment</a></dt>
@@ -20999,6 +21033,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#isAborted--">isAborted()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#isAborted--">isAborted()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.DummyServer.html#isAborted--">isAborted()</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.DummyServer.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileCleaner.DummyServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.DummyServer.html#isAborted--">isAborted()</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.DummyServer.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileLinkCleaner.DummyServer</a></dt>
@@ -21089,6 +21125,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html#isClosed--">isClosed()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.MRSplitsConnection.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableInputFormatBase.MRSplitsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#isClosed--">isClosed()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.TestScanner.html#isClosed--">isClosed()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap.TestScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html#isClosed--">isClosed()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntrySinkFilter.DevNullConnection.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntrySinkFilter.DevNullConnection</a></dt>
@@ -29483,6 +29521,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.SeqShardedDataGenerator.html#PREFIX_PAD_TO">PREFIX_PAD_TO</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.SeqShardedDataGenerator.html" title="class in org.apache.hadoop.hbase">StripeCompactionsPerformanceEvaluation.SeqShardedDataGenerator</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#prefixEndKey">prefixEndKey</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestOperation.html#PREFIXES">PREFIXES</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.html#prefixLengthVariance">prefixLengthVariance</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator</a></dt>
@@ -29491,6 +29531,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestPrefixFilter.html#prefixRowTests-org.apache.hadoop.hbase.filter.Filter-boolean-">prefixRowTests(Filter, boolean)</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestPrefixFilter.html" title="class in org.apache.hadoop.hbase.filter">TestPrefixFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#prefixStartKey">prefixStartKey</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClient.DelayFlushCoprocessor.html#preFlush-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">preFlush(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, FlushLifeCycleTracker)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClient.DelayFlushCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClient.DelayFlushCoprocessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html#preFlush-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">preFlush(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Store, InternalScanner, FlushLifeCycleTracker)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">SimpleRegionObserver</a></dt>
@@ -37620,12 +37662,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ConstantDelayQueue.html#size--">size()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ConstantDelayQueue.html" title="class in org.apache.hadoop.hbase.util">ConstantDelayQueue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#SIZE_MAP">SIZE_MAP</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.html#SIZE_PER_FILE">SIZE_PER_FILE</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">TestFileIOEngine</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.html#SIZE_PER_VALUE">SIZE_PER_VALUE</a></span> - Static variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaHelperForTests</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestRegionSizeUse.html#SIZE_PER_VALUE">SIZE_PER_VALUE</a></span> - Static variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestRegionSizeUse.html" title="class in org.apache.hadoop.hbase.quotas">TestRegionSizeUse</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#sizeCalculator">sizeCalculator</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo1Type1.html#skip-org.apache.hadoop.hbase.util.PositionedByteRange-">skip(PositionedByteRange)</a></span> - Method in class org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo1Type1.html" title="class in org.apache.hadoop.hbase.types">TestStruct.SpecializedPojo1Type1</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo2Type1.html#skip-org.apache.hadoop.hbase.util.PositionedByteRange-">skip(PositionedByteRange)</a></span> - Method in class org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo2Type1.html" title="class in org.apache.hadoop.hbase.types">TestStruct.SpecializedPojo2Type1</a></dt>
@@ -38208,6 +38254,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFlushFromClient.html#SPLITS">SPLITS</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFlushFromClient.html" title="class in org.apache.hadoop.hbase.client">TestFlushFromClient</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#SPLITS">SPLITS</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BaseTestHBaseFsck.html#SPLITS">SPLITS</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BaseTestHBaseFsck.html" title="class in org.apache.hadoop.hbase.util">BaseTestHBaseFsck</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html#splits">splits</a></span> - Static variable in class org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html" title="class in org.apache.hadoop.hbase.util.hbck">OfflineMetaRebuildTestCore</a></dt>
@@ -38408,6 +38456,8 @@
 &nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#START_KEY_BYTES">START_KEY_BYTES</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>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#START_KEYS">START_KEYS</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.ConnectionForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/chaos/actions/Action.html#START_MASTER_TIMEOUT_DEFAULT">START_MASTER_TIMEOUT_DEFAULT</a></span> - Static variable in class org.apache.hadoop.hbase.chaos.actions.<a href="org/apache/hadoop/hbase/chaos/actions/Action.html" title="class in org.apache.hadoop.hbase.chaos.actions">Action</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/chaos/actions/Action.html#START_MASTER_TIMEOUT_KEY">START_MASTER_TIMEOUT_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.chaos.actions.<a href="org/apache/hadoop/hbase/chaos/actions/Action.html" title="class in org.apache.hadoop.hbase.chaos.actions">Action</a></dt>
@@ -40134,6 +40184,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html#tableIdx">tableIdx</a></span> - Static variable in class org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html" title="class in org.apache.hadoop.hbase.util.hbck">OfflineMetaRebuildTestCore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#TableInputFormatForMergeTesting--">TableInputFormatForMergeTesting()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase.TableInputFormatForMergeTesting</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancer.html#tableMap">tableMap</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestRSGroupBasedLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/TestBackupHFileCleaner.html#tableName">tableName</a></span> - Static variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestBackupHFileCleaner.html" title="class in org.apache.hadoop.hbase.backup">TestBackupHFileCleaner</a></dt>
@@ -54272,6 +54324,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.html#testNoNormalizationOnNormalizedCluster--">testNoNormalizationOnNormalizedCluster()</a></span> - Method in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.html" title="class in org.apache.hadoop.hbase.master.normalizer">TestSimpleRegionNormalizer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--">testNonSuccessiveSplitsAreNotMerged()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#testNonUserMajorCompactionRequest--">testNonUserMajorCompactionRequest()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMajorCompaction</a></dt>
 <dd>
 <div class="block">Test for HBASE-5920 - Test user requested major compactions always occurring</div>
@@ -60955,6 +61009,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#TestTableInputFormatBase--">TestTableInputFormatBase()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase.ConnectionForMergeTesting</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>
+<div class="block">Connection class to use in <a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>TestTableInputFormatBase.testNonSuccessiveSplitsAreNotMerged()</code></a>.</div>
+</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase.TableInputFormatForMergeTesting</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>
+<div class="block">Subclass of <code>TableInputFormat</code> to use in <a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testNonSuccessiveSplitsAreNotMerged--"><code>TestTableInputFormatBase.testNonSuccessiveSplitsAreNotMerged()</code></a>.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testTableInputFormatBaseReverseDNSForIPv6--">testTableInputFormatBaseReverseDNSForIPv6()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan1</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 3168ee3..e159b3f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -145,8 +145,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index ec56445..4837d80 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -158,8 +158,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html
index d26e391..06637c1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html
@@ -190,7 +190,7 @@ implements org.apache.hadoop.mapred.JobConfigurable</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</h3>
-<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, getAdmin, getRegionLocator, getScan, getSplits, getStartEndKeys, getTable, includeRegionInSplit, initialize, initializeTable, reverseDNS, setScan, setTableRecordReader</code></li>
+<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, createRegionSizeCalculator, getAdmin, getRegionLocator, getScan, getSplits, getStartEndKeys, getTable, includeRegionInSplit, initialize, initializeTable, reverseDNS, setScan, setTableRecordReader</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html
index 475afe6..b696af0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html
@@ -190,7 +190,7 @@ implements org.apache.hadoop.mapred.JobConfigurable</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</h3>
-<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, getAdmin, getRegionLocator, getScan, getSplits, getStartEndKeys, getTable, includeRegionInSplit, initialize, initializeTable, reverseDNS, setScan, setTableRecordReader</code></li>
+<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, createRegionSizeCalculator, getAdmin, getRegionLocator, getScan, getSplits, getStartEndKeys, getTable, includeRegionInSplit, initialize, initializeTable, reverseDNS, setScan, setTableRecordReader</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html
index 29efea8..09fc82b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html
@@ -185,7 +185,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.TableInputFormatBase</h3>
-<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, getAdmin, getRegionLocator, getScan, getSplits, getStartEndKeys, getTable, includeRegionInSplit, initializeTable, reverseDNS, setScan, setTableRecordReader</code></li>
+<code>calculateAutoBalancedSplits, closeTable, createNInputSplitsUniform, createRecordReader, createRegionSizeCalculator, getAdmin, getRegionLocator, getScan, getSplits, getStartEndKeys, getTable, includeRegionInSplit, initializeTable, reverseDNS, setScan, setTableRecordReader</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">


[04/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
index 676ae61..c658da2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
@@ -369,391 +369,397 @@
 <span class="sourceLineNo">361</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.362"></a>
 <span class="sourceLineNo">363</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    UTIL.compact(tableTwo, true);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    ADMIN.splitRegionAsync(hris.get(0).getRegionName(), Bytes.toBytes("3")).get(10,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TimeUnit.SECONDS);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    assertEquals(initialRegions, hris.size());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // Fail region merge through Coprocessor hook<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    masterObserver.failMerge(true);<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    f = ADMIN.mergeRegionsAsync(<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      false);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      f.get(10, TimeUnit.SECONDS);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      fail("Merge was supposed to fail!");<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    } catch (ExecutionException ee) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Expected.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, hris.size());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // verify that we cannot split<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      fail();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } catch (DoNotRetryRegionException e) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // Expected<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    Thread.sleep(2000);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * HBASE-13394<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Test<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    NamespaceDescriptor nspDesc =<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        NamespaceDescriptor.create(nsp1)<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ADMIN.createNamespace(nspDesc);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        ADMIN.createTable(tableDescOne);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } catch (Exception exp) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        LOG.error(exp.toString(), exp);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        ADMIN.createTable(tableDescOne);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      } catch (Exception e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        LOG.error(e.toString(), e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      nstate = getNamespaceState(nsp1);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    } finally {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        ADMIN.disableTable(tableOne);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        deleteTable(tableOne);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      ADMIN.deleteNamespace(nsp1);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      IOException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return getQuotaManager().getState(namespace);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    String skey = Bytes.toString(startKey);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    int key;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (StringUtils.isBlank(skey)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    } else {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return Bytes.toBytes("" + key);<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>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    volatile CountDownLatch postCompact;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        throws IOException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      postCompact.countDown();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      postCompact = new CountDownLatch(1);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>    @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return Optional.of(this);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">364</span>    byte[] splitKey = Bytes.toBytes("3");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    HRegion regionToSplit = UTIL.getMiniHBaseCluster().getRegions(tableTwo).stream()<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      .filter(r -&gt; r.getRegionInfo().containsRow(splitKey)).findFirst().get();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    regionToSplit.compact(true);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // the above compact may quit immediately if there is a compaction ongoing, so here we need to<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // wait a while to let the ongoing compaction finish.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    UTIL.waitFor(10000, regionToSplit::isSplittable);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ADMIN.splitRegionAsync(regionToSplit.getRegionInfo().getRegionName(), splitKey).get(10,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      TimeUnit.SECONDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    assertEquals(initialRegions, hris.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // Fail region merge through Coprocessor hook<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    masterObserver.failMerge(true);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    f = ADMIN.mergeRegionsAsync(<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      false);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      f.get(10, TimeUnit.SECONDS);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      fail("Merge was supposed to fail!");<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    } catch (ExecutionException ee) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // Expected.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertEquals(initialRegions, hris.size());<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    // verify that we cannot split<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      fail();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    } catch (DoNotRetryRegionException e) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Expected<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    Thread.sleep(2000);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * HBASE-13394<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  @Test<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    NamespaceDescriptor nspDesc =<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        NamespaceDescriptor.create(nsp1)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ADMIN.createNamespace(nspDesc);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    try {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        ADMIN.createTable(tableDescOne);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      } catch (Exception exp) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        LOG.error(exp.toString(), exp);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        ADMIN.createTable(tableDescOne);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      } catch (Exception e) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        LOG.error(e.toString(), e);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      nstate = getNamespaceState(nsp1);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    } finally {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        ADMIN.disableTable(tableOne);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        deleteTable(tableOne);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      ADMIN.deleteNamespace(nsp1);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      IOException {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return getQuotaManager().getState(namespace);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    String skey = Bytes.toString(startKey);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    int key;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    if (StringUtils.isBlank(skey)) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    } else {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return Bytes.toBytes("" + key);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    volatile CountDownLatch postCompact;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        throws IOException {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      postCompact.countDown();<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      postCompact = new CountDownLatch(1);<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>  @Test<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public void testStatePreserve() throws Exception {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ADMIN.createNamespace(nspDesc);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    tableDescOne.addFamily(fam1);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    tableDescTwo.addFamily(fam1);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    tableDescThree.addFamily(fam1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    ADMIN.disableTable(tableThree);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    deleteTable(tableThree);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    // wait for chore to complete<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      public boolean evaluate() throws Exception {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    });<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    restartMaster();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        .getTables().size(), after.getTables().size());<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      public boolean evaluate() throws Exception {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        if (master == null) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          return false;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    });<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void restartMaster() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    UTIL.getHBaseCluster().startMaster();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    waitForQuotaInitialize(UTIL);<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>  private NamespaceAuditor getQuotaManager() {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>    @Override<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return Optional.of(this);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>    @Override<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>        TableName tableName) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.565"></a>
+<span class="sourceLineNo">491</span>    @Override<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      return Optional.of(this);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  @Test<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public void testStatePreserve() throws Exception {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    ADMIN.createNamespace(nspDesc);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    tableDescOne.addFamily(fam1);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    tableDescTwo.addFamily(fam1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    tableDescThree.addFamily(fam1);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ADMIN.disableTable(tableThree);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    deleteTable(tableThree);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    // wait for chore to complete<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      @Override<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      public boolean evaluate() throws Exception {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    });<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    restartMaster();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        .getTables().size(), after.getTables().size());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      public boolean evaluate() throws Exception {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        if (master == null) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          return false;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    });<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  private void restartMaster() throws Exception {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    UTIL.getHBaseCluster().startMaster();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    waitForQuotaInitialize(UTIL);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  private NamespaceAuditor getQuotaManager() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      return Optional.of(this);<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>    @Override<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    public void postCompletedDeleteTableAction(<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        final TableName tableName) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      tableDeletionLatch.countDown();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    @Override<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    public void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        throw new IOException("Throw exception as it is demanded.");<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>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    // NOTE: We need a latch because admin is not sync,<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    ADMIN.deleteTable(tableName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    observer.tableDeletionLatch.await();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Test(expected = QuotaExceededException.class)<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    NamespaceDescriptor nspDesc =<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            .build();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    ADMIN.createNamespace(nspDesc);<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    HTableDescriptor tableDescOne =<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    tableDescOne.addFamily(fam1);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    HTableDescriptor tableDescTwo =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    tableDescTwo.addFamily(fam1);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ADMIN.createTable(tableDescOne);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  @Test(expected = QuotaExceededException.class)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    NamespaceDescriptor nspDesc =<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            .build();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    ADMIN.createNamespace(nspDesc);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    tableDescOne.addFamily(fam1);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    ADMIN.createTable(tableDescOne);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testCloneSnapshot() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    NamespaceDescriptor nspDesc =<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    ADMIN.createNamespace(nspDesc);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    tableDescOne.addFamily(fam1);<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>    int tableLength;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      tableLength = locator.getStartKeys().length;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.657"></a>
+<span class="sourceLineNo">569</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        TableName tableName) throws IOException {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void postCompletedDeleteTableAction(<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        final TableName tableName) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      tableDeletionLatch.countDown();<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 void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        throw new IOException("Throw exception as it is demanded.");<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>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    // NOTE: We need a latch because admin is not sync,<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    ADMIN.deleteTable(tableName);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    observer.tableDeletionLatch.await();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  @Test(expected = QuotaExceededException.class)<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    NamespaceDescriptor nspDesc =<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.603"></a>
+<span class="sourceLineNo">604</span>            .build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    ADMIN.createNamespace(nspDesc);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    HTableDescriptor tableDescOne =<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    tableDescOne.addFamily(fam1);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    HTableDescriptor tableDescTwo =<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    tableDescTwo.addFamily(fam1);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    ADMIN.createTable(tableDescOne);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>  @Test(expected = QuotaExceededException.class)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NamespaceDescriptor nspDesc =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            .build();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    ADMIN.createNamespace(nspDesc);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    tableDescOne.addFamily(fam1);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    ADMIN.createTable(tableDescOne);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.636"></a>
+<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCloneSnapshot() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    NamespaceDescriptor nspDesc =<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    ADMIN.createNamespace(nspDesc);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    tableDescOne.addFamily(fam1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.657"></a>
 <span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      tableLength = locator.getStartKeys().length;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  @Test<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  public void testRestoreSnapshot() throws Exception {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    NamespaceDescriptor nspDesc =<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        NamespaceDescriptor.create(nsp)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    ADMIN.createNamespace(nspDesc);<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    tableDescOne.addFamily(fam1);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.686"></a>
-<span class="sourceLineNo">687</span><a name="line.687"></a>
-<span class="sourceLineNo">688</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.689"></a>
+<span class="sourceLineNo">659</span>    int tableLength;<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      tableLength = locator.getStartKeys().length;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      tableLength = locator.getStartKeys().length;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Test<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public void testRestoreSnapshot() throws Exception {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    NamespaceDescriptor nspDesc =<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        NamespaceDescriptor.create(nsp)<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    ADMIN.createNamespace(nspDesc);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    tableDescOne.addFamily(fam1);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.689"></a>
 <span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    Collections.sort(regions);<a name="line.692"></a>
+<span class="sourceLineNo">691</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.692"></a>
 <span class="sourceLineNo">693</span><a name="line.693"></a>
-<span class="sourceLineNo">694</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    Thread.sleep(2000);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    ADMIN.disableTable(tableName1);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    ADMIN.enableTable(tableName1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>  }<a name="line.705"></a>
+<span class="sourceLineNo">694</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    Collections.sort(regions);<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    Thread.sleep(2000);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    ADMIN.disableTable(tableName1);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.705"></a>
 <span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Test<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    NamespaceDescriptor nspDesc =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        NamespaceDescriptor.create(nsp)<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    ADMIN.createNamespace(nspDesc);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    tableDescOne.addFamily(fam1);<a name="line.719"></a>
-<span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    // snapshot has 4 regions<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    ADMIN.disableTable(tableName1);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    ADMIN.deleteTable(tableName1);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ADMIN.createTable(tableDescOne);<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    ADMIN.modifyNamespace(ndesc);<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">707</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.707"></a>
+<span class="sourceLineNo">708</span><a name="line.708"></a>
+<span class="sourceLineNo">709</span>    ADMIN.enableTable(tableName1);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  @Test<a name="line.713"></a>
+<span class="sourceLineNo">714</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    NamespaceDescriptor nspDesc =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        NamespaceDescriptor.create(nsp)<a name="line.717"></a>
+<span class="sourceLineNo">718</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    ADMIN.createNamespace(nspDesc);<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    tableDescOne.addFamily(fam1);<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.730"></a>
+<span class="sourceLineNo">731</span><a name="line.731"></a>
+<span class="sourceLineNo">732</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    // snapshot has 4 regions<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.735"></a>
 <span class="sourceLineNo">736</span>    ADMIN.disableTable(tableName1);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    try {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.739"></a>
-<span class="sourceLineNo">740</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    } catch (RestoreSnapshotException ignore) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    ADMIN.enableTable(tableName1);<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>}<a name="line.748"></a>
+<span class="sourceLineNo">737</span>    ADMIN.deleteTable(tableName1);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    ADMIN.createTable(tableDescOne);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    ADMIN.modifyNamespace(ndesc);<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>    ADMIN.disableTable(tableName1);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    try {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    } catch (RestoreSnapshotException ignore) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    ADMIN.enableTable(tableName1);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span>}<a name="line.754"></a>
 
 
 


[12/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index d755fff..80de3cf 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3601,
-             Errors: 15907,
+             Errors: 15906,
              Warnings: 0,
              Infos: 0
       </title>
@@ -27523,7 +27523,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  2
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index f5c1301..32de62f 100644
--- a/coc.html
+++ b/coc.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -365,7 +365,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index d4f96d9..3381092 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 311e7f1..4d9159b 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1095,7 +1095,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index bcb2720..472e352 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -303,7 +303,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 850045f..14b479e 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180408" />
+    <meta name="Date-Revision-yyyymmdd" content="20180409" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -959,7 +959,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-08</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-09</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 05d2282..2a7f11b 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3768,21 +3768,21 @@
 <!--   -->
 </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>"Sun Apr  8 14:41:43 UTC 2018"</code></td>
+<td class="colLast"><code>"Mon Apr  9 14:41:11 UTC 2018"</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>"f66343050f5157a5ade09ed219f3158141975f29"</code></td>
+<td class="colLast"><code>"bc35de597d07b41d7456a38fc2cb771c9292429a"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </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#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"0b15d26d8b733535fade85eac4662a2f"</code></td>
+<td class="colLast"><code>"6e1ea0c1e6c6f1e913b17d2af1f51b33"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 1e4bdcc..f362eb4 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -20257,6 +20257,8 @@
 <dd>
 <div class="block">Creates a <a href="org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html" title="class in org.apache.hadoop.hbase.util"><code>JVMClusterUtil.RegionServerThread</code></a>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator(RegionLocator, Admin)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableInputFormatBase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html#createRegionStateNode-org.apache.hadoop.hbase.client.RegionInfo-">createRegionStateNode(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotManifest.html#createRegionVisitor-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-">createRegionVisitor(SnapshotProtos.SnapshotDescription)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotManifest.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifest</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index eea9542..9046869 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
index 5b9a6d9..c6bee51 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
@@ -322,12 +322,17 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">ImportTsv.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/ImportTsv.html#createTable-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-java.lang.String:A-">createTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
            <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&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;columns)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionSizeCalculator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html#init-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">init</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator,
     <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
index 195c3ee..55903da 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionLocator.html
@@ -285,10 +285,15 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionSizeCalculator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html#getRegionServersOfTable-org.apache.hadoop.hbase.client.RegionLocator-">getRegionServersOfTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionSizeCalculator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html#init-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">init</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator,
     <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 2d2093a..bdc7e69 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -550,24 +550,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index a476040..5720735 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 4af3b5e..7978c6a 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
index 274ebb3..078f860 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
@@ -355,7 +355,7 @@ implements org.apache.hadoop.conf.Configurable</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableInputFormatBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#calculateAutoBalancedSplits-java.util.List-long-">calculateAutoBalancedSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#closeTable--">closeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createNInputSplitsUniform-org.apache.hadoop.mapreduce.InputSplit-int-">createNInputSplitsUniform</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRecordReader-org.apache.hadoop.mapreduce.InputSplit-org.apache.hadoop.mapreduce.TaskAttemptContext-">createRecordReader</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getAdmin--">getAdmin</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getRegionLocator--">getRegionLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputForma
 tBase.html#getScan--">getScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getTable--">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#reverseDNS-java.net.InetAddress-">reverseDNS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setScan-org.apache.hadoop.hbase.client.Scan-">setScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setTableRecordReader-org.apache.hadoop.hbase.mapreduce.TableRecordReader-">setTableRecordReader</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#calculateAutoBalancedSplits-java.util.List-long-">calculateAutoBalancedSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#closeTable--">closeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createNInputSplitsUniform-org.apache.hadoop.mapreduce.InputSplit-int-">createNInputSplitsUniform</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRecordReader-org.apache.hadoop.mapreduce.InputSplit-org.apache.hadoop.mapreduce.TaskAttemptContext-">createRecordReader</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.htm
 l#getAdmin--">getAdmin</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getRegionLocator--">getRegionLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getScan--">getScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getTable--">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#reverseDNS-java.net.InetAddress-">reverseDNS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setScan-org.apache.hadoop.hbase.client.Scan-">setScan</a>, <a
  href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setTableRecordReader-org.apache.hadoop.hbase.mapreduce.TableRecordReader-">setTableRecordReader</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
index b22ba3c..ed841fc 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.109">TableInputFormatBase</a>
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.110">TableInputFormatBase</a>
 extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;</pre>
 <div class="block">A base for <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableInputFormat</code></a>s. Receives a <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client"><code>Connection</code></a>, a <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase"><code>TableName</code></a>,
  an <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a> instance that defines the input columns etc. Subclasses may use
@@ -325,40 +325,45 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 </td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">createRegionSizeCalculator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                          <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getAdmin--">getAdmin</a></span>()</code>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><code>Admin</code></a>.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getRegionLocator--">getRegionLocator</a></span>()</code>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionLocator</code></a>.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getScan--">getScan</a></span>()</code>
 <div class="block">Gets the scan defining the actual details like columns etc.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><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.mapreduce.InputSplit&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getSplits-org.apache.hadoop.mapreduce.JobContext-">getSplits</a></span>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)</code>
 <div class="block">Calculates the splits that will serve as input for the map tasks.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[][],byte[][]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getStartEndKeys--">getStartEndKeys</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getTable--">getTable</a></span>()</code>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client"><code>Table</code></a>.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#includeRegionInSplit-byte:A-byte:A-">includeRegionInSplit</a></span>(byte[]&nbsp;startKey,
                     byte[]&nbsp;endKey)</code>
@@ -366,36 +371,36 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
  the regions of a table.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initialize-org.apache.hadoop.mapreduce.JobContext-">initialize</a></span>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)</code>
 <div class="block">Handle subclass specific set up.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">initializeTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Allows subclasses to initialize the table information.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private <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.mapreduce.InputSplit&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#oneInputSplitPerRegion--">oneInputSplitPerRegion</a></span>()</code>
 <div class="block">Create one InputSplit per region</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>(package private) <a href="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/mapreduce/TableInputFormatBase.html#reverseDNS-java.net.InetAddress-">reverseDNS</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;ipAddress)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setScan-org.apache.hadoop.hbase.client.Scan-">setScan</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
 <div class="block">Sets the scan defining the actual details like columns etc.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#setTableRecordReader-org.apache.hadoop.hbase.mapreduce.TableRecordReader-">setTableRecordReader</a></span>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>&nbsp;tableRecordReader)</code>
 <div class="block">Allows subclasses to set the <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a>.</div>
@@ -429,7 +434,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.112">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.113">LOG</a></pre>
 </li>
 </ul>
 <a name="NOT_INITIALIZED">
@@ -438,7 +443,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>NOT_INITIALIZED</h4>
-<pre>private 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/mapreduce/TableInputFormatBase.html#line.114">NOT_INITIALIZED</a></pre>
+<pre>private 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/mapreduce/TableInputFormatBase.html#line.115">NOT_INITIALIZED</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.NOT_INITIALIZED">Constant Field Values</a></dd>
@@ -451,7 +456,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>INITIALIZATION_ERROR</h4>
-<pre>private 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/mapreduce/TableInputFormatBase.html#line.117">INITIALIZATION_ERROR</a></pre>
+<pre>private 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/mapreduce/TableInputFormatBase.html#line.118">INITIALIZATION_ERROR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.INITIALIZATION_ERROR">Constant Field Values</a></dd>
@@ -464,7 +469,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>MAPREDUCE_INPUT_AUTOBALANCE</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/mapreduce/TableInputFormatBase.html#line.122">MAPREDUCE_INPUT_AUTOBALANCE</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/mapreduce/TableInputFormatBase.html#line.123">MAPREDUCE_INPUT_AUTOBALANCE</a></pre>
 <div class="block">Specify if we enable auto-balance to set number of mappers in M/R jobs.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -478,7 +483,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_AVERAGE_REGION_SIZE</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/mapreduce/TableInputFormatBase.html#line.124">MAX_AVERAGE_REGION_SIZE</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/mapreduce/TableInputFormatBase.html#line.125">MAX_AVERAGE_REGION_SIZE</a></pre>
 <div class="block">In auto-balance, we split input by ave region size, if calculated region size is too big, we can set it.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -492,7 +497,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_MAPPERS_PER_REGION</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/mapreduce/TableInputFormatBase.html#line.127">NUM_MAPPERS_PER_REGION</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/mapreduce/TableInputFormatBase.html#line.128">NUM_MAPPERS_PER_REGION</a></pre>
 <div class="block">Set the number of Mappers for each region, all regions have same number of Mappers</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -506,7 +511,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>scan</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.133">scan</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.134">scan</a></pre>
 <div class="block">Holds the details for the internal scanner.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -520,7 +525,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>admin</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.135">admin</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.136">admin</a></pre>
 <div class="block">The <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><code>Admin</code></a>.</div>
 </li>
 </ul>
@@ -530,7 +535,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>table</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.137">table</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.138">table</a></pre>
 <div class="block">The <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client"><code>Table</code></a> to scan.</div>
 </li>
 </ul>
@@ -540,7 +545,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>regionLocator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.139">regionLocator</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.140">regionLocator</a></pre>
 <div class="block">The <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionLocator</code></a> of the table.</div>
 </li>
 </ul>
@@ -550,7 +555,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>tableRecordReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.141">tableRecordReader</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.142">tableRecordReader</a></pre>
 <div class="block">The reader scanning the table, can be a custom one.</div>
 </li>
 </ul>
@@ -560,7 +565,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>connection</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.143">connection</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.144">connection</a></pre>
 <div class="block">The underlying <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client"><code>Connection</code></a> of the table.</div>
 </li>
 </ul>
@@ -570,7 +575,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>reverseDNSCacheMap</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</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>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.147">reverseDNSCacheMap</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</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>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.148">reverseDNSCacheMap</a></pre>
 <div class="block">The reverse DNS lookup cache mapping: IPAddress => HostName</div>
 </li>
 </ul>
@@ -588,7 +593,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableInputFormatBase</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.109">TableInputFormatBase</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.110">TableInputFormatBase</a>()</pre>
 </li>
 </ul>
 </li>
@@ -605,7 +610,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>createRecordReader</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.163">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.164">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                                   org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                            throws <a href="https://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">Builds a <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a>. If no <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a> was provided, uses
@@ -633,7 +638,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartEndKeys</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[][],byte[][]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.224">getStartEndKeys</a>()
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[][],byte[][]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.225">getStartEndKeys</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>
@@ -647,7 +652,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.237">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
+<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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.238">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
                                                        throws <a href="https://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">Calculates the splits that will serve as input for the map tasks.</div>
 <dl>
@@ -671,7 +676,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>oneInputSplitPerRegion</h4>
-<pre>private&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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.292">oneInputSplitPerRegion</a>()
+<pre>private&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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.293">oneInputSplitPerRegion</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 one InputSplit per region</div>
 <dl>
@@ -688,7 +693,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>createNInputSplitsUniform</h4>
-<pre>protected&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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.367">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>protected&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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.368">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                  int&nbsp;n)
                                                                           throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/IllegalArgumentIOException.html" title="class in org.apache.hadoop.hbase.exceptions">IllegalArgumentIOException</a></pre>
 <div class="block">Create n splits for one InputSplit, For now only support uniform distribution</div>
@@ -710,7 +715,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateAutoBalancedSplits</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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.432">calculateAutoBalancedSplits</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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;splits,
+<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.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.433">calculateAutoBalancedSplits</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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;splits,
                                                                                 long&nbsp;maxAverageRegionSize)
                                                                          throws <a href="https://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">Calculates the number of MapReduce input splits for the map tasks. The number of
@@ -736,7 +741,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>reverseDNS</h4>
-<pre><a href="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/mapreduce/TableInputFormatBase.html#line.498">reverseDNS</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;ipAddress)
+<pre><a href="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/mapreduce/TableInputFormatBase.html#line.500">reverseDNS</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;ipAddress)
            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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -750,7 +755,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>includeRegionInSplit</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.537">includeRegionInSplit</a>(byte[]&nbsp;startKey,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.539">includeRegionInSplit</a>(byte[]&nbsp;startKey,
                                        byte[]&nbsp;endKey)</pre>
 <div class="block">Test if the given region is to be included in the InputSplit while splitting
  the regions of a table.
@@ -779,7 +784,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocator</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.544">getRegionLocator</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.546">getRegionLocator</a>()</pre>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionLocator</code></a>.</div>
 </li>
 </ul>
@@ -789,7 +794,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.554">getTable</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.556">getTable</a>()</pre>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client"><code>Table</code></a>.</div>
 </li>
 </ul>
@@ -799,7 +804,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAdmin</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.564">getAdmin</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.566">getAdmin</a>()</pre>
 <div class="block">Allows subclasses to get the <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><code>Admin</code></a>.</div>
 </li>
 </ul>
@@ -809,7 +814,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeTable</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.578">initializeTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.580">initializeTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&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">Allows subclasses to initialize the table information.</div>
@@ -822,13 +827,28 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 </dl>
 </li>
 </ul>
+<a name="createRegionSizeCalculator-org.apache.hadoop.hbase.client.RegionLocator-org.apache.hadoop.hbase.client.Admin-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createRegionSizeCalculator</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.592">createRegionSizeCalculator</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;locator,
+                                                          <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)
+                                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getScan--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScan</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.594">getScan</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.602">getScan</a>()</pre>
 <div class="block">Gets the scan defining the actual details like columns etc.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -842,7 +862,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>setScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.604">setScan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.612">setScan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
 <div class="block">Sets the scan defining the actual details like columns etc.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -856,7 +876,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>setTableRecordReader</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.614">setTableRecordReader</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>&nbsp;tableRecordReader)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.622">setTableRecordReader</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableRecordReader</a>&nbsp;tableRecordReader)</pre>
 <div class="block">Allows subclasses to set the <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TableRecordReader</code></a>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -871,7 +891,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>initialize</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.633">initialize</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.641">initialize</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
                    throws <a href="https://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">Handle subclass specific set up.
  Each of the entry points used by the MapReduce framework,
@@ -897,7 +917,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockList">
 <li class="blockList">
 <h4>closeTable</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.642">closeTable</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.650">closeTable</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">Close the Table and related objects that were initialized via
  <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-"><code>initializeTable(Connection, TableName)</code></a>.</div>
@@ -913,7 +933,7 @@ org.apache.hadoop.mapreduce.JobContext)</code></dd>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>close</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.650">close</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>...&nbsp;closables)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.658">close</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>...&nbsp;closables)
             throws <a href="https://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>


[07/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index 773c7e2..cfb4083 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -102,6 +102,11 @@
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/NMapInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">NMapInputFormat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.TableInputFormatBase
 <ul>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.TableInputFormat (implements org.apache.hadoop.conf.Configurable)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase.TableInputFormatForMergeTesting</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat.ExampleDeprecatedTIF</span></a> (implements org.apache.hadoop.mapred.JobConfigurable)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat.ExampleJobConfigurableTIF</span></a> (implements org.apache.hadoop.mapred.JobConfigurable)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat.ExampleTIF</span></a></li>
@@ -209,6 +214,7 @@
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestSyncTable</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase.ConnectionForMergeTesting</span></a> (implements org.apache.hadoop.hbase.client.Connection)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanBase</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan1</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
index c681b58..61d2c52 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.470">TestNamespaceAuditor.CustomObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.476">TestNamespaceAuditor.CustomObserver</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 </li>
@@ -268,7 +268,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>postCompact</h4>
-<pre>volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.471">postCompact</a></pre>
+<pre>volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.477">postCompact</a></pre>
 </li>
 </ul>
 </li>
@@ -285,7 +285,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CustomObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.470">CustomObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.476">CustomObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -302,7 +302,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>postCompact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.474">postCompact</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.480">postCompact</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
                         org.apache.hadoop.hbase.regionserver.Store&nbsp;store,
                         org.apache.hadoop.hbase.regionserver.StoreFile&nbsp;resultFile,
                         org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker&nbsp;tracker,
@@ -322,7 +322,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.481">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.487">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -338,7 +338,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getRegionObserver</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.486">getRegionObserver</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.492">getRegionObserver</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getRegionObserver</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionCoprocessor</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
index 897347f..e1fb29f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.553">TestNamespaceAuditor.MasterSyncObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.559">TestNamespaceAuditor.MasterSyncObserver</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 </li>
@@ -262,7 +262,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>tableDeletionLatch</h4>
-<pre>volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.554">tableDeletionLatch</a></pre>
+<pre>volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.560">tableDeletionLatch</a></pre>
 </li>
 </ul>
 <a name="throwExceptionInPreCreateTableAction">
@@ -271,7 +271,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>throwExceptionInPreCreateTableAction</h4>
-<pre>static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.555">throwExceptionInPreCreateTableAction</a></pre>
+<pre>static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.561">throwExceptionInPreCreateTableAction</a></pre>
 </li>
 </ul>
 </li>
@@ -288,7 +288,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterSyncObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.553">MasterSyncObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.559">MasterSyncObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -305,7 +305,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterObserver</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.MasterObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.558">getMasterObserver</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.MasterObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.564">getMasterObserver</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterObserver</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.MasterCoprocessor</code></dd>
@@ -318,7 +318,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>preDeleteTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.563">preDeleteTable</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.569">preDeleteTable</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                            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>
@@ -335,7 +335,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>postCompletedDeleteTableAction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.569">postCompletedDeleteTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.575">postCompletedDeleteTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                                            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>
@@ -352,7 +352,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>preCreateTableAction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.576">preCreateTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.582">preCreateTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                                  org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                  org.apache.hadoop.hbase.client.RegionInfo[]&nbsp;regions)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
index 659c3e2..966a1e5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
@@ -491,7 +491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecreateTableWithSameNameAfterFirstTimeFailure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.408">testRecreateTableWithSameNameAfterFirstTimeFailure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.414">testRecreateTableWithSameNameAfterFirstTimeFailure</a>()
                                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -505,7 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceState</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.454">getNamespaceState</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;namespace)
+<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.460">getNamespaceState</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;namespace)
                                                                                  throws org.apache.zookeeper.KeeperException,
                                                                                         <a href="https://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>
@@ -521,7 +521,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitKey</h4>
-<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.459">getSplitKey</a>(byte[]&nbsp;startKey,
+<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.465">getSplitKey</a>(byte[]&nbsp;startKey,
                    byte[]&nbsp;endKey)</pre>
 </li>
 </ul>
@@ -531,7 +531,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testStatePreserve</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.492">testStatePreserve</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.498">testStatePreserve</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -545,7 +545,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForQuotaInitialize</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.527">waitForQuotaInitialize</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.533">waitForQuotaInitialize</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util)
                                    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>
@@ -559,7 +559,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>restartMaster</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.541">restartMaster</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.547">restartMaster</a>()
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -573,7 +573,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuotaManager</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceAuditor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.548">getQuotaManager</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceAuditor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.554">getQuotaManager</a>()</pre>
 </li>
 </ul>
 <a name="deleteTable-org.apache.hadoop.hbase.TableName-">
@@ -582,7 +582,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.584">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.590">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
                   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>
@@ -596,7 +596,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testExceedTableQuotaInNamespace</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.594">testExceedTableQuotaInNamespace</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.600">testExceedTableQuotaInNamespace</a>()
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -610,7 +610,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloneSnapshotQuotaExceed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.614">testCloneSnapshotQuotaExceed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.620">testCloneSnapshotQuotaExceed</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -624,7 +624,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloneSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.634">testCloneSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.640">testCloneSnapshot</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -638,7 +638,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRestoreSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.672">testRestoreSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.678">testRestoreSnapshot</a>()
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -652,7 +652,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testRestoreSnapshotQuotaExceed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.708">testRestoreSnapshotQuotaExceed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.714">testRestoreSnapshotQuotaExceed</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index 0f3bba6..79ed0e5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -570,14 +570,14 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index e9c1d93..b72e392 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -205,9 +205,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index aa8957d..fdd3a64 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -655,11 +655,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 1a43271..28ed7f0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 1a27e6b..f0750c4 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -1179,6 +1179,11 @@
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/NMapInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">NMapInputFormat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.TableInputFormatBase
 <ul>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.TableInputFormat (implements org.apache.hadoop.conf.Configurable)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase.TableInputFormatForMergeTesting</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleDeprecatedTIF.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat.ExampleDeprecatedTIF</span></a> (implements org.apache.hadoop.mapred.JobConfigurable)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleJobConfigurableTIF.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat.ExampleJobConfigurableTIF</span></a> (implements org.apache.hadoop.mapred.JobConfigurable)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.ExampleTIF.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat.ExampleTIF</span></a></li>
@@ -3535,6 +3540,7 @@
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapred.<a href="org/apache/hadoop/hbase/mapred/TestTableInputFormat.ExampleVerifier.html" title="class in org.apache.hadoop.hbase.mapred"><span class="typeNameLink">TestTableInputFormat.ExampleVerifier</span></a> (implements org.apache.hadoop.hbase.mapred.TableMap&lt;K,V&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatBase.ConnectionForMergeTesting</span></a> (implements org.apache.hadoop.hbase.client.Connection)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanBase</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan1</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html
new file mode 100644
index 0000000..68a4229
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html
@@ -0,0 +1,362 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.mapreduce;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.mockito.Mockito.any;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.mockito.Mockito.anyBoolean;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.mockito.Mockito.mock;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.mockito.Mockito.when;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.net.Inet6Address;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.InetAddress;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.UnknownHostException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Map;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.TreeMap;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ExecutorService;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HConstants;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.ServerName;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.BufferedMutator;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.BufferedMutatorParams;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.TableBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.User;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.ClassRule;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.Test;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.experimental.categories.Category;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.mockito.invocation.InvocationOnMock;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.mockito.stubbing.Answer;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>@Category({SmallTests.class})<a name="line.61"></a>
+<span class="sourceLineNo">062</span>public class TestTableInputFormatBase {<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  @ClassRule<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      HBaseClassTestRule.forClass(TestTableInputFormatBase.class);<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>  @Test<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public void testTableInputFormatBaseReverseDNSForIPv6()<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      throws UnknownHostException {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    String address = "ipv6.google.com";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    String localhost = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    InetAddress addr = null;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    TableInputFormat inputFormat = new TableInputFormat();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    try {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      localhost = InetAddress.getByName(address).getCanonicalHostName();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      addr = Inet6Address.getByName(address);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    } catch (UnknownHostException e) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      // google.com is down, we can probably forgive this test.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    System.out.println("Should retrun the hostname for this host " +<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        localhost + " addr : " + addr);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    String actualHostName = inputFormat.reverseDNS(addr);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    assertEquals("Should retrun the hostname for this host. Expected : " +<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        localhost + " Actual : " + actualHostName, localhost, actualHostName);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void testNonSuccessiveSplitsAreNotMerged() throws IOException {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    JobContext context = mock(JobContext.class);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Configuration conf = HBaseConfiguration.create();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    conf.set(ClusterConnection.HBASE_CLIENT_CONNECTION_IMPL,<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        ConnectionForMergeTesting.class.getName());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.set(TableInputFormat.INPUT_TABLE, "testTable");<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.setBoolean(TableInputFormatBase.MAPREDUCE_INPUT_AUTOBALANCE, true);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    when(context.getConfiguration()).thenReturn(conf);<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    TableInputFormat tifExclude = new TableInputFormatForMergeTesting();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tifExclude.setConf(conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // split["b", "c"] is excluded, split["o", "p"] and split["p", "q"] are merged,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    // but split["a", "b"] and split["c", "d"] are not merged.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(ConnectionForMergeTesting.START_KEYS.length - 1 - 1,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        tifExclude.getSplits(context).size());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * Subclass of {@link TableInputFormat} to use in {@link #testNonSuccessiveSplitsAreNotMerged}.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * This class overrides {@link TableInputFormatBase#includeRegionInSplit}<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * to exclude specific splits.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private static class TableInputFormatForMergeTesting extends TableInputFormat {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private byte[] prefixStartKey = Bytes.toBytes("b");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private byte[] prefixEndKey = Bytes.toBytes("c");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    private RegionSizeCalculator sizeCalculator;<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    /**<a name="line.117"></a>
+<span class="sourceLineNo">118</span>     * Exclude regions which contain rows starting with "b".<a name="line.118"></a>
+<span class="sourceLineNo">119</span>     */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    @Override<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    protected boolean includeRegionInSplit(final byte[] startKey, final byte [] endKey) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      if (Bytes.compareTo(startKey, prefixEndKey) &lt; 0<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          &amp;&amp; (Bytes.compareTo(prefixStartKey, endKey) &lt; 0<a name="line.123"></a>
+<span class="sourceLineNo">124</span>              || Bytes.equals(endKey, HConstants.EMPTY_END_ROW))) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return true;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    protected void initializeTable(Connection connection, TableName tableName) throws IOException {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      super.initializeTable(connection, tableName);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      ConnectionForMergeTesting cft = (ConnectionForMergeTesting) connection;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      sizeCalculator = cft.getRegionSizeCalculator();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    protected RegionSizeCalculator createRegionSizeCalculator(RegionLocator locator, Admin admin)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      return sizeCalculator;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * Connection class to use in {@link #testNonSuccessiveSplitsAreNotMerged}.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * This class returns mocked {@link Table}, {@link RegionLocator}, {@link RegionSizeCalculator},<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * and {@link Admin}.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static class ConnectionForMergeTesting implements Connection {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    public static final byte[][] SPLITS = new byte[][] {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"), Bytes.toBytes("d"),<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      Bytes.toBytes("e"), Bytes.toBytes("f"), Bytes.toBytes("g"), Bytes.toBytes("h"),<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      Bytes.toBytes("i"), Bytes.toBytes("j"), Bytes.toBytes("k"), Bytes.toBytes("l"),<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Bytes.toBytes("m"), Bytes.toBytes("n"), Bytes.toBytes("o"), Bytes.toBytes("p"),<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Bytes.toBytes("q"), Bytes.toBytes("r"), Bytes.toBytes("s"), Bytes.toBytes("t"),<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      Bytes.toBytes("u"), Bytes.toBytes("v"), Bytes.toBytes("w"), Bytes.toBytes("x"),<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      Bytes.toBytes("y"), Bytes.toBytes("z")<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    };<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    public static final byte[][] START_KEYS;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public static final byte[][] END_KEYS;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    static {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      START_KEYS = new byte[SPLITS.length + 1][];<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      START_KEYS[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      for (int i = 0; i &lt; SPLITS.length; i++) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        START_KEYS[i + 1] = SPLITS[i];<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>      END_KEYS = new byte[SPLITS.length + 1][];<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; SPLITS.length; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        END_KEYS[i] = SPLITS[i];<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      END_KEYS[SPLITS.length] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public static final Map&lt;byte[], Long&gt; SIZE_MAP = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    static {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      for (byte[] startKey : START_KEYS) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        SIZE_MAP.put(startKey, 1024L * 1024L * 1024L);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      SIZE_MAP.put(Bytes.toBytes("a"), 200L * 1024L * 1024L);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SIZE_MAP.put(Bytes.toBytes("b"), 200L * 1024L * 1024L);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      SIZE_MAP.put(Bytes.toBytes("c"), 200L * 1024L * 1024L);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      SIZE_MAP.put(Bytes.toBytes("o"), 200L * 1024L * 1024L);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      SIZE_MAP.put(Bytes.toBytes("p"), 200L * 1024L * 1024L);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    ConnectionForMergeTesting(Configuration conf, ExecutorService pool, User user)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        throws IOException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void abort(String why, Throwable e) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    public boolean isAborted() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      return false;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    public Configuration getConfiguration() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throw new UnsupportedOperationException();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      Table table = mock(Table.class);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      when(table.getName()).thenReturn(tableName);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return table;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>    @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      throw new UnsupportedOperationException();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    @Override<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    public BufferedMutator getBufferedMutator(TableName tableName) throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throw new UnsupportedOperationException();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    @Override<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public BufferedMutator getBufferedMutator(BufferedMutatorParams params) throws IOException {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      throw new UnsupportedOperationException();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>    @Override<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    public RegionLocator getRegionLocator(TableName tableName) throws IOException {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      final Map&lt;byte[], HRegionLocation&gt; locationMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      for (byte[] startKey : START_KEYS) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        HRegionLocation hrl = new HRegionLocation(<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).build(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            ServerName.valueOf("localhost", 0, 0));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        locationMap.put(startKey, hrl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>      RegionLocator locator = mock(RegionLocator.class);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      when(locator.getRegionLocation(any(byte [].class), anyBoolean())).<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        thenAnswer(new Answer&lt;HRegionLocation&gt;() {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          public HRegionLocation answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            Object [] args = invocationOnMock.getArguments();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            byte [] key = (byte [])args[0];<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            return locationMap.get(key);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        });<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      when(locator.getStartEndKeys()).<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        thenReturn(new Pair&lt;byte[][], byte[][]&gt;(START_KEYS, END_KEYS));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      return locator;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public RegionSizeCalculator getRegionSizeCalculator() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      RegionSizeCalculator sizeCalculator = mock(RegionSizeCalculator.class);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      when(sizeCalculator.getRegionSize(any(byte[].class))).<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        thenAnswer(new Answer&lt;Long&gt;() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          @Override<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          public Long answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            Object [] args = invocationOnMock.getArguments();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            byte [] regionId = (byte [])args[0];<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            byte[] startKey = RegionInfo.getStartKey(regionId);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            return SIZE_MAP.get(startKey);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        });<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sizeCalculator;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    @Override<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public Admin getAdmin() throws IOException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      Admin admin = mock(Admin.class);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      // return non-null admin to pass null checks<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return admin;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    public void close() throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    public boolean isClosed() {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      return false;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>    @Override<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    public TableBuilder getTableBuilder(TableName tableName, ExecutorService pool) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      throw new UnsupportedOperationException();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>}<a name="line.290"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[06/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
new file mode 100644
index 0000000..68a4229
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
@@ -0,0 +1,362 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.mapreduce;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.mockito.Mockito.any;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.mockito.Mockito.anyBoolean;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.mockito.Mockito.mock;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.mockito.Mockito.when;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.net.Inet6Address;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.InetAddress;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.UnknownHostException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Map;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.TreeMap;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ExecutorService;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HConstants;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.ServerName;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.BufferedMutator;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.BufferedMutatorParams;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.TableBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.User;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.ClassRule;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.Test;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.experimental.categories.Category;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.mockito.invocation.InvocationOnMock;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.mockito.stubbing.Answer;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>@Category({SmallTests.class})<a name="line.61"></a>
+<span class="sourceLineNo">062</span>public class TestTableInputFormatBase {<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  @ClassRule<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      HBaseClassTestRule.forClass(TestTableInputFormatBase.class);<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>  @Test<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public void testTableInputFormatBaseReverseDNSForIPv6()<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      throws UnknownHostException {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    String address = "ipv6.google.com";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    String localhost = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    InetAddress addr = null;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    TableInputFormat inputFormat = new TableInputFormat();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    try {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      localhost = InetAddress.getByName(address).getCanonicalHostName();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      addr = Inet6Address.getByName(address);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    } catch (UnknownHostException e) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      // google.com is down, we can probably forgive this test.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    System.out.println("Should retrun the hostname for this host " +<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        localhost + " addr : " + addr);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    String actualHostName = inputFormat.reverseDNS(addr);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    assertEquals("Should retrun the hostname for this host. Expected : " +<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        localhost + " Actual : " + actualHostName, localhost, actualHostName);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void testNonSuccessiveSplitsAreNotMerged() throws IOException {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    JobContext context = mock(JobContext.class);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Configuration conf = HBaseConfiguration.create();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    conf.set(ClusterConnection.HBASE_CLIENT_CONNECTION_IMPL,<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        ConnectionForMergeTesting.class.getName());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.set(TableInputFormat.INPUT_TABLE, "testTable");<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.setBoolean(TableInputFormatBase.MAPREDUCE_INPUT_AUTOBALANCE, true);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    when(context.getConfiguration()).thenReturn(conf);<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    TableInputFormat tifExclude = new TableInputFormatForMergeTesting();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tifExclude.setConf(conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // split["b", "c"] is excluded, split["o", "p"] and split["p", "q"] are merged,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    // but split["a", "b"] and split["c", "d"] are not merged.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(ConnectionForMergeTesting.START_KEYS.length - 1 - 1,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        tifExclude.getSplits(context).size());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * Subclass of {@link TableInputFormat} to use in {@link #testNonSuccessiveSplitsAreNotMerged}.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * This class overrides {@link TableInputFormatBase#includeRegionInSplit}<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * to exclude specific splits.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private static class TableInputFormatForMergeTesting extends TableInputFormat {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private byte[] prefixStartKey = Bytes.toBytes("b");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private byte[] prefixEndKey = Bytes.toBytes("c");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    private RegionSizeCalculator sizeCalculator;<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    /**<a name="line.117"></a>
+<span class="sourceLineNo">118</span>     * Exclude regions which contain rows starting with "b".<a name="line.118"></a>
+<span class="sourceLineNo">119</span>     */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    @Override<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    protected boolean includeRegionInSplit(final byte[] startKey, final byte [] endKey) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      if (Bytes.compareTo(startKey, prefixEndKey) &lt; 0<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          &amp;&amp; (Bytes.compareTo(prefixStartKey, endKey) &lt; 0<a name="line.123"></a>
+<span class="sourceLineNo">124</span>              || Bytes.equals(endKey, HConstants.EMPTY_END_ROW))) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return true;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    protected void initializeTable(Connection connection, TableName tableName) throws IOException {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      super.initializeTable(connection, tableName);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      ConnectionForMergeTesting cft = (ConnectionForMergeTesting) connection;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      sizeCalculator = cft.getRegionSizeCalculator();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    protected RegionSizeCalculator createRegionSizeCalculator(RegionLocator locator, Admin admin)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      return sizeCalculator;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * Connection class to use in {@link #testNonSuccessiveSplitsAreNotMerged}.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * This class returns mocked {@link Table}, {@link RegionLocator}, {@link RegionSizeCalculator},<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * and {@link Admin}.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static class ConnectionForMergeTesting implements Connection {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    public static final byte[][] SPLITS = new byte[][] {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"), Bytes.toBytes("d"),<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      Bytes.toBytes("e"), Bytes.toBytes("f"), Bytes.toBytes("g"), Bytes.toBytes("h"),<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      Bytes.toBytes("i"), Bytes.toBytes("j"), Bytes.toBytes("k"), Bytes.toBytes("l"),<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Bytes.toBytes("m"), Bytes.toBytes("n"), Bytes.toBytes("o"), Bytes.toBytes("p"),<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Bytes.toBytes("q"), Bytes.toBytes("r"), Bytes.toBytes("s"), Bytes.toBytes("t"),<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      Bytes.toBytes("u"), Bytes.toBytes("v"), Bytes.toBytes("w"), Bytes.toBytes("x"),<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      Bytes.toBytes("y"), Bytes.toBytes("z")<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    };<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    public static final byte[][] START_KEYS;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public static final byte[][] END_KEYS;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    static {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      START_KEYS = new byte[SPLITS.length + 1][];<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      START_KEYS[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      for (int i = 0; i &lt; SPLITS.length; i++) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        START_KEYS[i + 1] = SPLITS[i];<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>      END_KEYS = new byte[SPLITS.length + 1][];<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; SPLITS.length; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        END_KEYS[i] = SPLITS[i];<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      END_KEYS[SPLITS.length] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public static final Map&lt;byte[], Long&gt; SIZE_MAP = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    static {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      for (byte[] startKey : START_KEYS) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        SIZE_MAP.put(startKey, 1024L * 1024L * 1024L);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      SIZE_MAP.put(Bytes.toBytes("a"), 200L * 1024L * 1024L);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SIZE_MAP.put(Bytes.toBytes("b"), 200L * 1024L * 1024L);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      SIZE_MAP.put(Bytes.toBytes("c"), 200L * 1024L * 1024L);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      SIZE_MAP.put(Bytes.toBytes("o"), 200L * 1024L * 1024L);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      SIZE_MAP.put(Bytes.toBytes("p"), 200L * 1024L * 1024L);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    ConnectionForMergeTesting(Configuration conf, ExecutorService pool, User user)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        throws IOException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void abort(String why, Throwable e) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    public boolean isAborted() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      return false;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    public Configuration getConfiguration() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throw new UnsupportedOperationException();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      Table table = mock(Table.class);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      when(table.getName()).thenReturn(tableName);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return table;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>    @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      throw new UnsupportedOperationException();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    @Override<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    public BufferedMutator getBufferedMutator(TableName tableName) throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throw new UnsupportedOperationException();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    @Override<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public BufferedMutator getBufferedMutator(BufferedMutatorParams params) throws IOException {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      throw new UnsupportedOperationException();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>    @Override<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    public RegionLocator getRegionLocator(TableName tableName) throws IOException {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      final Map&lt;byte[], HRegionLocation&gt; locationMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      for (byte[] startKey : START_KEYS) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        HRegionLocation hrl = new HRegionLocation(<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).build(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            ServerName.valueOf("localhost", 0, 0));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        locationMap.put(startKey, hrl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>      RegionLocator locator = mock(RegionLocator.class);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      when(locator.getRegionLocation(any(byte [].class), anyBoolean())).<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        thenAnswer(new Answer&lt;HRegionLocation&gt;() {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          public HRegionLocation answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            Object [] args = invocationOnMock.getArguments();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            byte [] key = (byte [])args[0];<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            return locationMap.get(key);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        });<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      when(locator.getStartEndKeys()).<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        thenReturn(new Pair&lt;byte[][], byte[][]&gt;(START_KEYS, END_KEYS));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      return locator;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public RegionSizeCalculator getRegionSizeCalculator() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      RegionSizeCalculator sizeCalculator = mock(RegionSizeCalculator.class);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      when(sizeCalculator.getRegionSize(any(byte[].class))).<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        thenAnswer(new Answer&lt;Long&gt;() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          @Override<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          public Long answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            Object [] args = invocationOnMock.getArguments();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            byte [] regionId = (byte [])args[0];<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            byte[] startKey = RegionInfo.getStartKey(regionId);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            return SIZE_MAP.get(startKey);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        });<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sizeCalculator;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    @Override<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public Admin getAdmin() throws IOException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      Admin admin = mock(Admin.class);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      // return non-null admin to pass null checks<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return admin;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    public void close() throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    public boolean isClosed() {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      return false;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>    @Override<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    public TableBuilder getTableBuilder(TableName tableName, ExecutorService pool) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      throw new UnsupportedOperationException();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>}<a name="line.290"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
index e0edf44..68a4229 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html
@@ -26,44 +26,276 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.mapreduce;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.junit.Assert.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.net.Inet6Address;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.net.InetAddress;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.UnknownHostException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.junit.ClassRule;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.junit.Test;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.junit.experimental.categories.Category;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>@Category({SmallTests.class})<a name="line.31"></a>
-<span class="sourceLineNo">032</span>public class TestTableInputFormatBase {<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>  @ClassRule<a name="line.34"></a>
-<span class="sourceLineNo">035</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.35"></a>
-<span class="sourceLineNo">036</span>      HBaseClassTestRule.forClass(TestTableInputFormatBase.class);<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>  @Test<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  public void testTableInputFormatBaseReverseDNSForIPv6()<a name="line.39"></a>
-<span class="sourceLineNo">040</span>      throws UnknownHostException {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    String address = "ipv6.google.com";<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    String localhost = null;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    InetAddress addr = null;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    TableInputFormat inputFormat = new TableInputFormat();<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    try {<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      localhost = InetAddress.getByName(address).getCanonicalHostName();<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      addr = Inet6Address.getByName(address);<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    } catch (UnknownHostException e) {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      // google.com is down, we can probably forgive this test.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      return;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    }<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    System.out.println("Should retrun the hostname for this host " +<a name="line.52"></a>
-<span class="sourceLineNo">053</span>        localhost + " addr : " + addr);<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    String actualHostName = inputFormat.reverseDNS(addr);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    assertEquals("Should retrun the hostname for this host. Expected : " +<a name="line.55"></a>
-<span class="sourceLineNo">056</span>        localhost + " Actual : " + actualHostName, localhost, actualHostName);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  }<a name="line.57"></a>
-<span class="sourceLineNo">058</span>}<a name="line.58"></a>
+<span class="sourceLineNo">021</span>import static org.mockito.Mockito.any;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.mockito.Mockito.anyBoolean;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.mockito.Mockito.mock;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.mockito.Mockito.when;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.net.Inet6Address;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.InetAddress;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.UnknownHostException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Map;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.TreeMap;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ExecutorService;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HConstants;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.ServerName;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.BufferedMutator;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.BufferedMutatorParams;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.TableBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.User;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.ClassRule;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.Test;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.experimental.categories.Category;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.mockito.invocation.InvocationOnMock;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.mockito.stubbing.Answer;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>@Category({SmallTests.class})<a name="line.61"></a>
+<span class="sourceLineNo">062</span>public class TestTableInputFormatBase {<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  @ClassRule<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      HBaseClassTestRule.forClass(TestTableInputFormatBase.class);<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>  @Test<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public void testTableInputFormatBaseReverseDNSForIPv6()<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      throws UnknownHostException {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    String address = "ipv6.google.com";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    String localhost = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    InetAddress addr = null;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    TableInputFormat inputFormat = new TableInputFormat();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    try {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      localhost = InetAddress.getByName(address).getCanonicalHostName();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      addr = Inet6Address.getByName(address);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    } catch (UnknownHostException e) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      // google.com is down, we can probably forgive this test.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    System.out.println("Should retrun the hostname for this host " +<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        localhost + " addr : " + addr);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    String actualHostName = inputFormat.reverseDNS(addr);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    assertEquals("Should retrun the hostname for this host. Expected : " +<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        localhost + " Actual : " + actualHostName, localhost, actualHostName);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void testNonSuccessiveSplitsAreNotMerged() throws IOException {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    JobContext context = mock(JobContext.class);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Configuration conf = HBaseConfiguration.create();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    conf.set(ClusterConnection.HBASE_CLIENT_CONNECTION_IMPL,<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        ConnectionForMergeTesting.class.getName());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.set(TableInputFormat.INPUT_TABLE, "testTable");<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.setBoolean(TableInputFormatBase.MAPREDUCE_INPUT_AUTOBALANCE, true);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    when(context.getConfiguration()).thenReturn(conf);<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    TableInputFormat tifExclude = new TableInputFormatForMergeTesting();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tifExclude.setConf(conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // split["b", "c"] is excluded, split["o", "p"] and split["p", "q"] are merged,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    // but split["a", "b"] and split["c", "d"] are not merged.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(ConnectionForMergeTesting.START_KEYS.length - 1 - 1,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        tifExclude.getSplits(context).size());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * Subclass of {@link TableInputFormat} to use in {@link #testNonSuccessiveSplitsAreNotMerged}.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * This class overrides {@link TableInputFormatBase#includeRegionInSplit}<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * to exclude specific splits.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private static class TableInputFormatForMergeTesting extends TableInputFormat {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private byte[] prefixStartKey = Bytes.toBytes("b");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private byte[] prefixEndKey = Bytes.toBytes("c");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    private RegionSizeCalculator sizeCalculator;<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    /**<a name="line.117"></a>
+<span class="sourceLineNo">118</span>     * Exclude regions which contain rows starting with "b".<a name="line.118"></a>
+<span class="sourceLineNo">119</span>     */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    @Override<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    protected boolean includeRegionInSplit(final byte[] startKey, final byte [] endKey) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      if (Bytes.compareTo(startKey, prefixEndKey) &lt; 0<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          &amp;&amp; (Bytes.compareTo(prefixStartKey, endKey) &lt; 0<a name="line.123"></a>
+<span class="sourceLineNo">124</span>              || Bytes.equals(endKey, HConstants.EMPTY_END_ROW))) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return true;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    protected void initializeTable(Connection connection, TableName tableName) throws IOException {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      super.initializeTable(connection, tableName);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      ConnectionForMergeTesting cft = (ConnectionForMergeTesting) connection;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      sizeCalculator = cft.getRegionSizeCalculator();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    protected RegionSizeCalculator createRegionSizeCalculator(RegionLocator locator, Admin admin)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      return sizeCalculator;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * Connection class to use in {@link #testNonSuccessiveSplitsAreNotMerged}.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * This class returns mocked {@link Table}, {@link RegionLocator}, {@link RegionSizeCalculator},<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * and {@link Admin}.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static class ConnectionForMergeTesting implements Connection {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    public static final byte[][] SPLITS = new byte[][] {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"), Bytes.toBytes("d"),<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      Bytes.toBytes("e"), Bytes.toBytes("f"), Bytes.toBytes("g"), Bytes.toBytes("h"),<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      Bytes.toBytes("i"), Bytes.toBytes("j"), Bytes.toBytes("k"), Bytes.toBytes("l"),<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Bytes.toBytes("m"), Bytes.toBytes("n"), Bytes.toBytes("o"), Bytes.toBytes("p"),<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Bytes.toBytes("q"), Bytes.toBytes("r"), Bytes.toBytes("s"), Bytes.toBytes("t"),<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      Bytes.toBytes("u"), Bytes.toBytes("v"), Bytes.toBytes("w"), Bytes.toBytes("x"),<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      Bytes.toBytes("y"), Bytes.toBytes("z")<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    };<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    public static final byte[][] START_KEYS;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public static final byte[][] END_KEYS;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    static {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      START_KEYS = new byte[SPLITS.length + 1][];<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      START_KEYS[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      for (int i = 0; i &lt; SPLITS.length; i++) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        START_KEYS[i + 1] = SPLITS[i];<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>      END_KEYS = new byte[SPLITS.length + 1][];<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; SPLITS.length; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        END_KEYS[i] = SPLITS[i];<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      END_KEYS[SPLITS.length] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public static final Map&lt;byte[], Long&gt; SIZE_MAP = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    static {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      for (byte[] startKey : START_KEYS) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        SIZE_MAP.put(startKey, 1024L * 1024L * 1024L);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      SIZE_MAP.put(Bytes.toBytes("a"), 200L * 1024L * 1024L);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SIZE_MAP.put(Bytes.toBytes("b"), 200L * 1024L * 1024L);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      SIZE_MAP.put(Bytes.toBytes("c"), 200L * 1024L * 1024L);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      SIZE_MAP.put(Bytes.toBytes("o"), 200L * 1024L * 1024L);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      SIZE_MAP.put(Bytes.toBytes("p"), 200L * 1024L * 1024L);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    ConnectionForMergeTesting(Configuration conf, ExecutorService pool, User user)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        throws IOException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void abort(String why, Throwable e) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    public boolean isAborted() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      return false;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    public Configuration getConfiguration() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throw new UnsupportedOperationException();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      Table table = mock(Table.class);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      when(table.getName()).thenReturn(tableName);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return table;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>    @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      throw new UnsupportedOperationException();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    @Override<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    public BufferedMutator getBufferedMutator(TableName tableName) throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throw new UnsupportedOperationException();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    @Override<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public BufferedMutator getBufferedMutator(BufferedMutatorParams params) throws IOException {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      throw new UnsupportedOperationException();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>    @Override<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    public RegionLocator getRegionLocator(TableName tableName) throws IOException {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      final Map&lt;byte[], HRegionLocation&gt; locationMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      for (byte[] startKey : START_KEYS) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        HRegionLocation hrl = new HRegionLocation(<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).build(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            ServerName.valueOf("localhost", 0, 0));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        locationMap.put(startKey, hrl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>      RegionLocator locator = mock(RegionLocator.class);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      when(locator.getRegionLocation(any(byte [].class), anyBoolean())).<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        thenAnswer(new Answer&lt;HRegionLocation&gt;() {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          public HRegionLocation answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            Object [] args = invocationOnMock.getArguments();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            byte [] key = (byte [])args[0];<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            return locationMap.get(key);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        });<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      when(locator.getStartEndKeys()).<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        thenReturn(new Pair&lt;byte[][], byte[][]&gt;(START_KEYS, END_KEYS));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      return locator;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public RegionSizeCalculator getRegionSizeCalculator() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      RegionSizeCalculator sizeCalculator = mock(RegionSizeCalculator.class);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      when(sizeCalculator.getRegionSize(any(byte[].class))).<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        thenAnswer(new Answer&lt;Long&gt;() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          @Override<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          public Long answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            Object [] args = invocationOnMock.getArguments();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            byte [] regionId = (byte [])args[0];<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            byte[] startKey = RegionInfo.getStartKey(regionId);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            return SIZE_MAP.get(startKey);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        });<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sizeCalculator;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    @Override<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public Admin getAdmin() throws IOException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      Admin admin = mock(Admin.class);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      // return non-null admin to pass null checks<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return admin;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    public void close() throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    public boolean isClosed() {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      return false;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>    @Override<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    public TableBuilder getTableBuilder(TableName tableName, ExecutorService pool) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      throw new UnsupportedOperationException();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>}<a name="line.290"></a>
 
 
 


[05/16] hbase-site git commit: Published site at bc35de597d07b41d7456a38fc2cb771c9292429a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/0e1d8d25/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
index 676ae61..c658da2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
@@ -369,391 +369,397 @@
 <span class="sourceLineNo">361</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.362"></a>
 <span class="sourceLineNo">363</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    UTIL.compact(tableTwo, true);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    ADMIN.splitRegionAsync(hris.get(0).getRegionName(), Bytes.toBytes("3")).get(10,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TimeUnit.SECONDS);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    assertEquals(initialRegions, hris.size());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // Fail region merge through Coprocessor hook<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    masterObserver.failMerge(true);<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    f = ADMIN.mergeRegionsAsync(<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      false);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      f.get(10, TimeUnit.SECONDS);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      fail("Merge was supposed to fail!");<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    } catch (ExecutionException ee) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Expected.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, hris.size());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // verify that we cannot split<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      fail();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } catch (DoNotRetryRegionException e) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // Expected<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    Thread.sleep(2000);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * HBASE-13394<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Test<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    NamespaceDescriptor nspDesc =<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        NamespaceDescriptor.create(nsp1)<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ADMIN.createNamespace(nspDesc);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        ADMIN.createTable(tableDescOne);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } catch (Exception exp) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        LOG.error(exp.toString(), exp);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        ADMIN.createTable(tableDescOne);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      } catch (Exception e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        LOG.error(e.toString(), e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      nstate = getNamespaceState(nsp1);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    } finally {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        ADMIN.disableTable(tableOne);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        deleteTable(tableOne);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      ADMIN.deleteNamespace(nsp1);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      IOException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return getQuotaManager().getState(namespace);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    String skey = Bytes.toString(startKey);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    int key;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (StringUtils.isBlank(skey)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    } else {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return Bytes.toBytes("" + key);<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>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    volatile CountDownLatch postCompact;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        throws IOException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      postCompact.countDown();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      postCompact = new CountDownLatch(1);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>    @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return Optional.of(this);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">364</span>    byte[] splitKey = Bytes.toBytes("3");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    HRegion regionToSplit = UTIL.getMiniHBaseCluster().getRegions(tableTwo).stream()<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      .filter(r -&gt; r.getRegionInfo().containsRow(splitKey)).findFirst().get();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    regionToSplit.compact(true);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // the above compact may quit immediately if there is a compaction ongoing, so here we need to<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // wait a while to let the ongoing compaction finish.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    UTIL.waitFor(10000, regionToSplit::isSplittable);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ADMIN.splitRegionAsync(regionToSplit.getRegionInfo().getRegionName(), splitKey).get(10,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      TimeUnit.SECONDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    assertEquals(initialRegions, hris.size());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // Fail region merge through Coprocessor hook<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    masterObserver.failMerge(true);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    f = ADMIN.mergeRegionsAsync(<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      false);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      f.get(10, TimeUnit.SECONDS);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      fail("Merge was supposed to fail!");<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    } catch (ExecutionException ee) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // Expected.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    hris = ADMIN.getRegions(tableTwo);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertEquals(initialRegions, hris.size());<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    // verify that we cannot split<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      fail();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    } catch (DoNotRetryRegionException e) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // Expected<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    Thread.sleep(2000);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    assertEquals(initialRegions, ADMIN.getRegions(tableTwo).size());<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * HBASE-13394<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  @Test<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    NamespaceDescriptor nspDesc =<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        NamespaceDescriptor.create(nsp1)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ADMIN.createNamespace(nspDesc);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    try {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        ADMIN.createTable(tableDescOne);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      } catch (Exception exp) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        LOG.error(exp.toString(), exp);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        ADMIN.createTable(tableDescOne);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      } catch (Exception e) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        LOG.error(e.toString(), e);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      nstate = getNamespaceState(nsp1);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    } finally {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        ADMIN.disableTable(tableOne);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        deleteTable(tableOne);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      ADMIN.deleteNamespace(nsp1);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      IOException {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return getQuotaManager().getState(namespace);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    String skey = Bytes.toString(startKey);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    int key;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    if (StringUtils.isBlank(skey)) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    } else {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return Bytes.toBytes("" + key);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public static class CustomObserver implements RegionCoprocessor, RegionObserver {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    volatile CountDownLatch postCompact;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker, CompactionRequest request)<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        throws IOException {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      postCompact.countDown();<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      postCompact = new CountDownLatch(1);<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>  @Test<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public void testStatePreserve() throws Exception {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ADMIN.createNamespace(nspDesc);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    tableDescOne.addFamily(fam1);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    tableDescTwo.addFamily(fam1);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    tableDescThree.addFamily(fam1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    ADMIN.disableTable(tableThree);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    deleteTable(tableThree);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    // wait for chore to complete<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      public boolean evaluate() throws Exception {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    });<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    restartMaster();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        .getTables().size(), after.getTables().size());<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      public boolean evaluate() throws Exception {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        if (master == null) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          return false;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    });<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void restartMaster() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    UTIL.getHBaseCluster().startMaster();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    waitForQuotaInitialize(UTIL);<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>  private NamespaceAuditor getQuotaManager() {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>    @Override<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return Optional.of(this);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>    @Override<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>        TableName tableName) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.565"></a>
+<span class="sourceLineNo">491</span>    @Override<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    public Optional&lt;RegionObserver&gt; getRegionObserver() {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      return Optional.of(this);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  @Test<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public void testStatePreserve() throws Exception {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    ADMIN.createNamespace(nspDesc);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    tableDescOne.addFamily(fam1);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    tableDescTwo.addFamily(fam1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    tableDescThree.addFamily(fam1);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ADMIN.disableTable(tableThree);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    deleteTable(tableThree);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    // wait for chore to complete<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      @Override<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      public boolean evaluate() throws Exception {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    });<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    restartMaster();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        .getTables().size(), after.getTables().size());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      public boolean evaluate() throws Exception {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        if (master == null) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          return false;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    });<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  private void restartMaster() throws Exception {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    UTIL.getHBaseCluster().startMaster();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    waitForQuotaInitialize(UTIL);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  private NamespaceAuditor getQuotaManager() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public static class MasterSyncObserver implements MasterCoprocessor, MasterObserver {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      return Optional.of(this);<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>    @Override<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    public void postCompletedDeleteTableAction(<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        final TableName tableName) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      tableDeletionLatch.countDown();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    @Override<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    public void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        throw new IOException("Throw exception as it is demanded.");<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>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    // NOTE: We need a latch because admin is not sync,<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    ADMIN.deleteTable(tableName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    observer.tableDeletionLatch.await();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Test(expected = QuotaExceededException.class)<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    NamespaceDescriptor nspDesc =<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            .build();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    ADMIN.createNamespace(nspDesc);<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    HTableDescriptor tableDescOne =<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    tableDescOne.addFamily(fam1);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    HTableDescriptor tableDescTwo =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    tableDescTwo.addFamily(fam1);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    ADMIN.createTable(tableDescOne);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  @Test(expected = QuotaExceededException.class)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    NamespaceDescriptor nspDesc =<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            .build();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    ADMIN.createNamespace(nspDesc);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    tableDescOne.addFamily(fam1);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    ADMIN.createTable(tableDescOne);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testCloneSnapshot() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    NamespaceDescriptor nspDesc =<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    ADMIN.createNamespace(nspDesc);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    tableDescOne.addFamily(fam1);<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>    int tableLength;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      tableLength = locator.getStartKeys().length;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.657"></a>
+<span class="sourceLineNo">569</span>    public void preDeleteTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        TableName tableName) throws IOException {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      tableDeletionLatch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void postCompletedDeleteTableAction(<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        final TableName tableName) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      tableDeletionLatch.countDown();<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 void preCreateTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        TableDescriptor desc, RegionInfo[] regions) throws IOException {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      if (throwExceptionInPreCreateTableAction) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        throw new IOException("Throw exception as it is demanded.");<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>  private void deleteTable(final TableName tableName) throws Exception {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    // NOTE: We need a latch because admin is not sync,<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    // so the postOp coprocessor method may be called after the admin operation returned.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    MasterSyncObserver observer = UTIL.getHBaseCluster().getMaster()<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      .getMasterCoprocessorHost().findCoprocessor(MasterSyncObserver.class);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    ADMIN.deleteTable(tableName);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    observer.tableDeletionLatch.await();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  @Test(expected = QuotaExceededException.class)<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  public void testExceedTableQuotaInNamespace() throws Exception {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    String nsp = prefix + "_testExceedTableQuotaInNamespace";<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    NamespaceDescriptor nspDesc =<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.603"></a>
+<span class="sourceLineNo">604</span>            .build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    ADMIN.createNamespace(nspDesc);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    assertEquals(3, ADMIN.listNamespaceDescriptors().length);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    HTableDescriptor tableDescOne =<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    tableDescOne.addFamily(fam1);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    HTableDescriptor tableDescTwo =<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    tableDescTwo.addFamily(fam1);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    ADMIN.createTable(tableDescOne);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>  @Test(expected = QuotaExceededException.class)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public void testCloneSnapshotQuotaExceed() throws Exception {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    String nsp = prefix + "_testTableQuotaExceedWithCloneSnapshot";<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    NamespaceDescriptor nspDesc =<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1")<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            .build();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    ADMIN.createNamespace(nspDesc);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    tableDescOne.addFamily(fam1);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    ADMIN.createTable(tableDescOne);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    String snapshot = "snapshot_testTableQuotaExceedWithCloneSnapshot";<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.636"></a>
+<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCloneSnapshot() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    String nsp = prefix + "_testCloneSnapshot";<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    NamespaceDescriptor nspDesc =<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2")<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20").build();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    ADMIN.createNamespace(nspDesc);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    TableName tableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    TableName cloneTableName = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2");<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName);<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    tableDescOne.addFamily(fam1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    String snapshot = "snapshot_testCloneSnapshot";<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    ADMIN.snapshot(snapshot, tableName);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    ADMIN.cloneSnapshot(snapshot, cloneTableName);<a name="line.657"></a>
 <span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      tableLength = locator.getStartKeys().length;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  @Test<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  public void testRestoreSnapshot() throws Exception {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    NamespaceDescriptor nspDesc =<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        NamespaceDescriptor.create(nsp)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    ADMIN.createNamespace(nspDesc);<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    tableDescOne.addFamily(fam1);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.686"></a>
-<span class="sourceLineNo">687</span><a name="line.687"></a>
-<span class="sourceLineNo">688</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.689"></a>
+<span class="sourceLineNo">659</span>    int tableLength;<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(tableName)) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      tableLength = locator.getStartKeys().length;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    assertEquals(tableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    try (RegionLocator locator = ADMIN.getConnection().getRegionLocator(cloneTableName)) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      tableLength = locator.getStartKeys().length;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    assertEquals(cloneTableName.getNameAsString() + " should have four regions.", 4, tableLength);<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    assertEquals("Total tables count should be 2.", 2, nstate.getTables().size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    assertEquals("Total regions count should be.", 8, nstate.getRegionCount());<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.674"></a>
+<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>  @Test<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public void testRestoreSnapshot() throws Exception {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    String nsp = prefix + "_testRestoreSnapshot";<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    NamespaceDescriptor nspDesc =<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        NamespaceDescriptor.create(nsp)<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    ADMIN.createNamespace(nspDesc);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    tableDescOne.addFamily(fam1);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.689"></a>
 <span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    Collections.sort(regions);<a name="line.692"></a>
+<span class="sourceLineNo">691</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.692"></a>
 <span class="sourceLineNo">693</span><a name="line.693"></a>
-<span class="sourceLineNo">694</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    Thread.sleep(2000);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    ADMIN.disableTable(tableName1);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    ADMIN.enableTable(tableName1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>  }<a name="line.705"></a>
+<span class="sourceLineNo">694</span>    String snapshot = "snapshot_testRestoreSnapshot";<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    List&lt;HRegionInfo&gt; regions = ADMIN.getTableRegions(tableName1);<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    Collections.sort(regions);<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ADMIN.split(tableName1, Bytes.toBytes("JJJ"));<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    Thread.sleep(2000);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    assertEquals("Total regions count should be 5.", 5, nstate.getRegionCount());<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    ADMIN.disableTable(tableName1);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    ADMIN.restoreSnapshot(snapshot);<a name="line.705"></a>
 <span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>  @Test<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    NamespaceDescriptor nspDesc =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        NamespaceDescriptor.create(nsp)<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    ADMIN.createNamespace(nspDesc);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    tableDescOne.addFamily(fam1);<a name="line.719"></a>
-<span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    // snapshot has 4 regions<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    ADMIN.disableTable(tableName1);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    ADMIN.deleteTable(tableName1);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ADMIN.createTable(tableDescOne);<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    ADMIN.modifyNamespace(ndesc);<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">707</span>    assertEquals("Total regions count should be 4 after restore.", 4, nstate.getRegionCount());<a name="line.707"></a>
+<span class="sourceLineNo">708</span><a name="line.708"></a>
+<span class="sourceLineNo">709</span>    ADMIN.enableTable(tableName1);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  @Test<a name="line.713"></a>
+<span class="sourceLineNo">714</span>  public void testRestoreSnapshotQuotaExceed() throws Exception {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    String nsp = prefix + "_testRestoreSnapshotQuotaExceed";<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    NamespaceDescriptor nspDesc =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        NamespaceDescriptor.create(nsp)<a name="line.717"></a>
+<span class="sourceLineNo">718</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10").build();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    ADMIN.createNamespace(nspDesc);<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    NamespaceDescriptor ndesc = ADMIN.getNamespaceDescriptor(nsp);<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    assertNotNull("Namespace descriptor found null.", ndesc);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    TableName tableName1 = TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1");<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableName1);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    tableDescOne.addFamily(fam1);<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>    NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    assertEquals("Intial region count should be 4.", 4, nstate.getRegionCount());<a name="line.730"></a>
+<span class="sourceLineNo">731</span><a name="line.731"></a>
+<span class="sourceLineNo">732</span>    String snapshot = "snapshot_testRestoreSnapshotQuotaExceed";<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    // snapshot has 4 regions<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    ADMIN.snapshot(snapshot, tableName1);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    // recreate table with 1 region and set max regions to 3 for namespace<a name="line.735"></a>
 <span class="sourceLineNo">736</span>    ADMIN.disableTable(tableName1);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    try {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.739"></a>
-<span class="sourceLineNo">740</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    } catch (RestoreSnapshotException ignore) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    ADMIN.enableTable(tableName1);<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>}<a name="line.748"></a>
+<span class="sourceLineNo">737</span>    ADMIN.deleteTable(tableName1);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    ADMIN.createTable(tableDescOne);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    ndesc.setConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "3");<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    ADMIN.modifyNamespace(ndesc);<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>    ADMIN.disableTable(tableName1);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    try {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      ADMIN.restoreSnapshot(snapshot);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      fail("Region quota is exceeded so QuotaExceededException should be thrown but HBaseAdmin"<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          + " wraps IOException into RestoreSnapshotException");<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    } catch (RestoreSnapshotException ignore) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      assertTrue(ignore.getCause() instanceof QuotaExceededException);<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    assertEquals(1, getNamespaceState(nsp).getRegionCount());<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    ADMIN.enableTable(tableName1);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    ADMIN.deleteSnapshot(snapshot);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span>}<a name="line.754"></a>