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<RegionCoprocessorEnvironment> 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<RegionObserver> 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 -> 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<RegionCoprocessorEnvironment> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<RegionObserver> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<HRegionInfo> 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<HRegionInfo> 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"> </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"> </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> locator,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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> </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> </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> </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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><T>)</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><T>)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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 –
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> </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"> </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> locator,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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> locator,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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 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<<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>></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<<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> locator,
+ <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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><org.apache.hadoop.mapreduce.InputSplit></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 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><byte[][],byte[][]></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getStartEndKeys--">getStartEndKeys</a></span>()</code> </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[] startKey,
byte[] endKey)</code>
@@ -308,26 +313,26 @@ extends org.apache.hadoop.mapreduce.InputFormat<<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 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> connection,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> 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> 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> 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>MAPREDUCE_INPUT_AUTOBALANCE</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.122">MAPREDUCE_INPUT_AUTOBALANCE</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>MAX_AVERAGE_REGION_SIZE</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.124">MAX_AVERAGE_REGION_SIZE</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockListLast">
<li class="blockList">
<h4>NUM_MAPPERS_PER_REGION</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.127">NUM_MAPPERS_PER_REGION</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockListLast">
<li class="blockList">
<h4>TableInputFormatBase</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.109">TableInputFormatBase</a>()</pre>
+<pre>public <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>createRecordReader</h4>
-<pre>public org.apache.hadoop.mapreduce.RecordReader<<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.163">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit split,
+<pre>public org.apache.hadoop.mapreduce.RecordReader<<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.164">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit split,
org.apache.hadoop.mapreduce.TaskAttemptContext 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>getStartEndKeys</h4>
-<pre>protected <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[][],byte[][]> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.224">getStartEndKeys</a>()
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[][],byte[][]> <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>getSplits</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.237">getSplits</a>(org.apache.hadoop.mapreduce.JobContext context)
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.238">getSplits</a>(org.apache.hadoop.mapreduce.JobContext 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>createNInputSplitsUniform</h4>
-<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.367">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit split,
+<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.368">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit split,
int 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>calculateAutoBalancedSplits</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <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><org.apache.hadoop.mapreduce.InputSplit> splits,
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <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><org.apache.hadoop.mapreduce.InputSplit> splits,
long 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.537">includeRegionInSplit</a>(byte[] startKey,
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.539">includeRegionInSplit</a>(byte[] startKey,
byte[] 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 <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.544">getRegionLocator</a>()</pre>
+<pre>protected <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.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 <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.554">getTable</a>()</pre>
+<pre>protected <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.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 <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.564">getAdmin</a>()</pre>
+<pre>protected <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.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 void <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> connection,
+<pre>protected void <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> connection,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> 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 org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator <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> locator,
+ <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> 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 <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.594">getScan</a>()</pre>
+<pre>public <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.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 void <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> scan)</pre>
+<pre>public void <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> 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 void <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> tableRecordReader)</pre>
+<pre>protected void <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> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.633">initialize</a>(org.apache.hadoop.mapreduce.JobContext context)
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.641">initialize</a>(org.apache.hadoop.mapreduce.JobContext 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.642">closeTable</a>()
+<pre>protected void <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<RegionCoprocessorEnvironment> 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<RegionObserver> 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 -> 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<RegionCoprocessorEnvironment> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<RegionObserver> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<HRegionInfo> 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<HRegionInfo> 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> * <p><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> * <pre><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> * </pre><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> * <p><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> * <pre><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> * </pre><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<ImmutableBytesWritable, Result> {<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<ImmutableBytesWritable, Result> {<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 => HostName */<a name="line.146"></a>
-<span class="sourceLineNo">147</span> private HashMap<InetAddress, String> reverseDNSCacheMap =<a name="line.147"></a>
-<span class="sourceLineNo">148</span> new HashMap<>();<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<ImmutableBytesWritable, Result> 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<ImmutableBytesWritable, Result>() {<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<byte[][],byte[][]> 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<InputSplit> 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<InputSplit> 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<InputSplit> res = new ArrayList<>();<a name="line.262"></a>
-<span class="sourceLineNo">263</span> for (int i = 0; i < splits.size(); i++) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span> List<InputSplit> 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<InputSplit> 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<byte[][], byte[][]> 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<InputSplit> splits = new ArrayList<>(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<InputSplit> splits = new ArrayList<>(keys.getFirst().length);<a name="line.314"></a>
-<span class="sourceLineNo">315</span> for (int i = 0; i < 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]) < 0) &&<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]) > 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) >= 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) <= 0) &&<a name="line.331"></a>
-<span class="sourceLineNo">332</span> keys.getSecond()[i].length > 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 -> " + i + " -> " + 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<InputSplit> 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 < 1, then still continue using n = 1<a name="line.374"></a>
-<span class="sourceLineNo">375</span> n = n < 1 ? 1 : n;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> List<InputSplit> res = new ArrayList<>(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 && 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 && 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 && 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 < 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 < 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<InputSplit> calculateAutoBalancedSplits(List<InputSplit> 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<InputSplit> resultList = new ArrayList<>();<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 < 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 <= 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 > 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 < 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 < 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 >= 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<InputSplit> 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 < 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 <= 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> * <p><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. <br><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> * <br><a name="line.525"></a>
-<span class="sourceLineNo">526</span> * <br><a name="line.526"></a>
-<span class="sourceLineNo">527</span> * Note: It is possible that <code>endKey.length() == 0 </code> , 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 => HostName */<a name="line.147"></a>
+<span class="sourceLineNo">148</span> private HashMap<InetAddress, String> reverseDNSCacheMap =<a name="line.148"></a>
+<span class="sourceLineNo">149</span> new HashMap<>();<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<ImmutableBytesWritable, Result> 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<ImmutableBytesWritable, Result>() {<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<byte[][],byte[][]> 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<InputSplit> 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<InputSplit> 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<InputSplit> res = new ArrayList<>();<a name="line.263"></a>
+<span class="sourceLineNo">264</span> for (int i = 0; i < splits.size(); i++) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> List<InputSplit> 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<InputSplit> 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<byte[][], byte[][]> 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<InputSplit> splits = new ArrayList<>(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<InputSplit> splits = new ArrayList<>(keys.getFirst().length);<a name="line.315"></a>
+<span class="sourceLineNo">316</span> for (int i = 0; i < 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]) < 0) &&<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]) > 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) >= 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) <= 0) &&<a name="line.332"></a>
+<span class="sourceLineNo">333</span> keys.getSecond()[i].length > 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 -> " + i + " -> " + 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<InputSplit> 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 < 1, then still continue using n = 1<a name="line.375"></a>
+<span class="sourceLineNo">376</span> n = n < 1 ? 1 : n;<a name="line.376"></a>
+<span class="sourceLineNo">377</span> List<InputSplit> res = new ArrayList<>(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 && 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 && 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 && 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 < 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 < 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<InputSplit> calculateAutoBalancedSplits(List<InputSplit> 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<InputSplit> resultList = new ArrayList<>();<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 < 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> * <p><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> * <pre><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> * </pre><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> * <p><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> * <pre><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> * </pre><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<ImmutableBytesWritable, Result> {<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<ImmutableBytesWritable, Result> {<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 => HostName */<a name="line.146"></a>
-<span class="sourceLineNo">147</span> private HashMap<InetAddress, String> reverseDNSCacheMap =<a name="line.147"></a>
-<span class="sourceLineNo">148</span> new HashMap<>();<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<ImmutableBytesWritable, Result> 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<ImmutableBytesWritable, Result>() {<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<byte[][],byte[][]> 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<InputSplit> 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<InputSplit> 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<InputSplit> res = new ArrayList<>();<a name="line.262"></a>
-<span class="sourceLineNo">263</span> for (int i = 0; i < splits.size(); i++) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span> List<InputSplit> 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<InputSplit> 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<byte[][], byte[][]> 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<InputSplit> splits = new ArrayList<>(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<InputSplit> splits = new ArrayList<>(keys.getFirst().length);<a name="line.314"></a>
-<span class="sourceLineNo">315</span> for (int i = 0; i < 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]) < 0) &&<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]) > 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) >= 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) <= 0) &&<a name="line.331"></a>
-<span class="sourceLineNo">332</span> keys.getSecond()[i].length > 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 -> " + i + " -> " + 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<InputSplit> 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 < 1, then still continue using n = 1<a name="line.374"></a>
-<span class="sourceLineNo">375</span> n = n < 1 ? 1 : n;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> List<InputSplit> res = new ArrayList<>(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 && 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 && 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 && 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 < 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 < 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<InputSplit> calculateAutoBalancedSplits(List<InputSplit> 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<InputSplit> resultList = new ArrayList<>();<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 < 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 <= 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 > 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 < 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 < 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 >= 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<InputSplit> 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 < 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 <= 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> * <p><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. <br><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> * <br><a name="line.525"></a>
-<span class="sourceLineNo">526</span> * <br><a name="line.526"></a>
-<span class="sourceLineNo">527</span> * Note: It is possible that <code>endKey.length() == 0 </code> , 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 => HostName */<a name="line.147"></a>
+<span class="sourceLineNo">148</span> private HashMap<InetAddress, String> reverseDNSCacheMap =<a name="line.148"></a>
+<span class="sourceLineNo">149</span> new HashMap<>();<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<ImmutableBytesWritable, Result> 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<ImmutableBytesWritable, Result>() {<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<byte[][],byte[][]> 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<InputSplit> 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<InputSplit> 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<InputSplit> res = new ArrayList<>();<a name="line.263"></a>
+<span class="sourceLineNo">264</span> for (int i = 0; i < splits.size(); i++) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> List<InputSplit> 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<InputSplit> 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<byte[][], byte[][]> 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<InputSplit> splits = new ArrayList<>(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<InputSplit> splits = new ArrayList<>(keys.getFirst().length);<a name="line.315"></a>
+<span class="sourceLineNo">316</span> for (int i = 0; i < 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]) < 0) &&<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]) > 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) >= 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) <= 0) &&<a name="line.332"></a>
+<span class="sourceLineNo">333</span> keys.getSecond()[i].length > 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 -> " + i + " -> " + 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<InputSplit> 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 < 1, then still continue using n = 1<a name="line.375"></a>
+<span class="sourceLineNo">376</span> n = n < 1 ? 1 : n;<a name="line.376"></a>
+<span class="sourceLineNo">377</span> List<InputSplit> res = new ArrayList<>(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 && 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 && 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 && 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 < 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 < 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<InputSplit> calculateAutoBalancedSplits(List<InputSplit> 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<InputSplit> resultList = new ArrayList<>();<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 < 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<RegionCoprocessorEnvironment> 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<RegionObserver> 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 -> 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<RegionCoprocessorEnvironment> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<RegionObserver> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<HRegionInfo> 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<HRegionInfo> 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_top");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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><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>></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> </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> </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> </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"> </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 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> pool,
+ org.apache.hadoop.hbase.security.User user)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> 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> e)</code> </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> </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> </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 params)</code> </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 tableName)</code> </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> </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 tableName)</code> </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> </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 tableName)</code> </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 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> pool)</code> </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 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> pool)</code> </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> </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> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!-- -->
+</a>
+<h3>Methods inherited from class 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 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 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 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 <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><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>> <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 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> pool,
+ org.apache.hadoop.hbase.security.User 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 void <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> 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> e)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>abort</code> in interface <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 boolean <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> in interface <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 org.apache.hadoop.conf.Configuration <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> in interface <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 org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.208">getTable</a>(org.apache.hadoop.hbase.TableName tableName)
+ throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getTable</code> in interface <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 org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.215">getTable</a>(org.apache.hadoop.hbase.TableName 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> 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> in interface <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 org.apache.hadoop.hbase.client.BufferedMutator <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.220">getBufferedMutator</a>(org.apache.hadoop.hbase.TableName tableName)
+ throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getBufferedMutator</code> in interface <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 org.apache.hadoop.hbase.client.BufferedMutator <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.225">getBufferedMutator</a>(org.apache.hadoop.hbase.client.BufferedMutatorParams 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> in interface <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 org.apache.hadoop.hbase.client.RegionLocator <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.230">getRegionLocator</a>(org.apache.hadoop.hbase.TableName tableName)
+ throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getRegionLocator</code> in interface <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 org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator <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 org.apache.hadoop.hbase.client.Admin <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> in interface <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 void <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> in interface <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> in interface <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> in interface <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 boolean <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> in interface <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 org.apache.hadoop.hbase.client.TableBuilder <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#line.286">getTableBuilder</a>(org.apache.hadoop.hbase.TableName 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> pool)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getTableBuilder</code> in interface <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_bottom");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_top");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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<org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.client.Result></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"> </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> </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> </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> </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 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 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"> </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> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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 locator,
+ org.apache.hadoop.hbase.client.Admin admin)</code> </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[] startKey,
+ byte[] 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 connection,
+ org.apache.hadoop.hbase.TableName tableName)</code> </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 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 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 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 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 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 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 <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.121">includeRegionInSplit</a>(byte[] startKey,
+ byte[] 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> in class <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.132">initializeTable</a>(org.apache.hadoop.hbase.client.Connection connection,
+ org.apache.hadoop.hbase.TableName tableName)
+ throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>initializeTable</code> in class <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 org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html#line.139">createRegionSizeCalculator</a>(org.apache.hadoop.hbase.client.RegionLocator locator,
+ org.apache.hadoop.hbase.client.Admin 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> in class <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_bottom");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 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: </li>
-<li>Nested | </li>
+<li><a href="#nested.class.summary">Nested</a> | </li>
<li><a href="#field.summary">Field</a> | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
@@ -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"> </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 </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 </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> </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> </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 <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 <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.32">TestTableInputFormatBase</a>()</pre>
+<pre>public <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#line.39">testTableInputFormatBaseReverseDNSForIPv6</a>()
+<pre>public void <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 void <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 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 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 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: </li>
-<li>Nested | </li>
+<li><a href="#nested.class.summary">Nested</a> | </li>
<li><a href="#field.summary">Field</a> | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
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 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 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 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_top");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!-- -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_bottom");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!-- -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright © 2007–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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_top");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!-- -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_bottom");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!-- -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright © 2007–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"> </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 – 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>"true"</tt></li></ul></td>
-<td>123</td>
+<td>122</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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>"2"</tt></li></ul></td>
-<td>784</td>
+<td>798</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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 '<code>\n * List<Future<' 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="" /> 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="" /> 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 '<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="" /> 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 '<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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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 –
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 –
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 – 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 – 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 – 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 – 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 – 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 –
Apache HBase (TM) Metrics
@@ -449,7 +449,7 @@ export HBASE_REGIONSERVER_OPTS="$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 –
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 – 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 – 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 – 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 – 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 – 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 – 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 –
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 –
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 – 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 – 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 – 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 – 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 – 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/locking/TestLockProcedure.html#getRegionLock-java.util.List-java.lang.String-">getRegionLock(List<RegionInfo>, 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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<RegionCoprocessorEnvironment>, 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> </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<RegionCoprocessorEnvironment>, 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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 @@
</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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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 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 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 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<RegionCoprocessorEnvironment> 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<RegionObserver> 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 -> 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<RegionCoprocessorEnvironment> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<RegionObserver> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<HRegionInfo> 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<HRegionInfo> 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>©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 –
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 – 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 – 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 – 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 – 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 static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"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 static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"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 static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td><code><a href="org/apache/hadoop/hbase/Version.html#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> </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> </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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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> locator,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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> admin,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] columns)</code> </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> regionLocator,
<a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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> locator,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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><<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></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> regionLocator)</code> </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> regionLocator,
<a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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 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<<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>></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<<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> locator,
+ <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> admin)</code> </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><org.apache.hadoop.mapreduce.InputSplit></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 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><byte[][],byte[][]></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#getStartEndKeys--">getStartEndKeys</a></span>()</code> </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[] startKey,
byte[] endKey)</code>
@@ -366,36 +371,36 @@ extends org.apache.hadoop.mapreduce.InputFormat<<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 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> connection,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> 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><org.apache.hadoop.mapreduce.InputSplit></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> ipAddress)</code> </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> 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> 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.112">LOG</a></pre>
+<pre>private static final 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>NOT_INITIALIZED</h4>
-<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.114">NOT_INITIALIZED</a></pre>
+<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>INITIALIZATION_ERROR</h4>
-<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.117">INITIALIZATION_ERROR</a></pre>
+<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>MAPREDUCE_INPUT_AUTOBALANCE</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.122">MAPREDUCE_INPUT_AUTOBALANCE</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>MAX_AVERAGE_REGION_SIZE</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.124">MAX_AVERAGE_REGION_SIZE</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>NUM_MAPPERS_PER_REGION</h4>
-<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.127">NUM_MAPPERS_PER_REGION</a></pre>
+<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>scan</h4>
-<pre>private <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 <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>admin</h4>
-<pre>private <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 <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>table</h4>
-<pre>private <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 <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>regionLocator</h4>
-<pre>private <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 <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>tableRecordReader</h4>
-<pre>private <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 <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>connection</h4>
-<pre>private <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 <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<<a href="../../../../../org/a
<ul class="blockListLast">
<li class="blockList">
<h4>reverseDNSCacheMap</h4>
-<pre>private <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><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.147">reverseDNSCacheMap</a></pre>
+<pre>private <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><<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>> <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<<a href="../../../../../org/a
<ul class="blockListLast">
<li class="blockList">
<h4>TableInputFormatBase</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.109">TableInputFormatBase</a>()</pre>
+<pre>public <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>createRecordReader</h4>
-<pre>public org.apache.hadoop.mapreduce.RecordReader<<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.163">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit split,
+<pre>public org.apache.hadoop.mapreduce.RecordReader<<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.164">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit split,
org.apache.hadoop.mapreduce.TaskAttemptContext 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>getStartEndKeys</h4>
-<pre>protected <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[][],byte[][]> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.224">getStartEndKeys</a>()
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[][],byte[][]> <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>getSplits</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.237">getSplits</a>(org.apache.hadoop.mapreduce.JobContext context)
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.238">getSplits</a>(org.apache.hadoop.mapreduce.JobContext 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>oneInputSplitPerRegion</h4>
-<pre>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><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.292">oneInputSplitPerRegion</a>()
+<pre>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><org.apache.hadoop.mapreduce.InputSplit> <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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>createNInputSplitsUniform</h4>
-<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.367">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit split,
+<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.368">createNInputSplitsUniform</a>(org.apache.hadoop.mapreduce.InputSplit split,
int 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<<a href="../../../../../org/a
<ul class="blockList">
<li class="blockList">
<h4>calculateAutoBalancedSplits</h4>
-<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <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><org.apache.hadoop.mapreduce.InputSplit> splits,
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hadoop.mapreduce.InputSplit> <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><org.apache.hadoop.mapreduce.InputSplit> splits,
long 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> <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> 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> <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> 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.537">includeRegionInSplit</a>(byte[] startKey,
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.539">includeRegionInSplit</a>(byte[] startKey,
byte[] 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 <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.544">getRegionLocator</a>()</pre>
+<pre>protected <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.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 <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.554">getTable</a>()</pre>
+<pre>protected <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.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 <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.564">getAdmin</a>()</pre>
+<pre>protected <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.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 void <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> connection,
+<pre>protected void <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> connection,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> 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 <a href="../../../../../org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.html" title="class in org.apache.hadoop.hbase.mapreduce">RegionSizeCalculator</a> <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> locator,
+ <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> 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 <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.594">getScan</a>()</pre>
+<pre>public <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.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 void <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> scan)</pre>
+<pre>public void <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> 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 void <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> tableRecordReader)</pre>
+<pre>protected void <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> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.633">initialize</a>(org.apache.hadoop.mapreduce.JobContext context)
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.641">initialize</a>(org.apache.hadoop.mapreduce.JobContext 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#line.642">closeTable</a>()
+<pre>protected void <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 void <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>... closables)
+<pre>private void <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>... 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 <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 <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.470">CustomObserver</a>()</pre>
+<pre>public <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.474">postCompact</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.480">postCompact</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e,
org.apache.hadoop.hbase.regionserver.Store store,
org.apache.hadoop.hbase.regionserver.StoreFile resultFile,
org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.481">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment e)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.487">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment 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 <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><org.apache.hadoop.hbase.coprocessor.RegionObserver> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.486">getRegionObserver</a>()</pre>
+<pre>public <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><org.apache.hadoop.hbase.coprocessor.RegionObserver> <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> in interface <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 <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 <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.555">throwExceptionInPreCreateTableAction</a></pre>
+<pre>static 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.553">MasterSyncObserver</a>()</pre>
+<pre>public <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 <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><org.apache.hadoop.hbase.coprocessor.MasterObserver> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.558">getMasterObserver</a>()</pre>
+<pre>public <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><org.apache.hadoop.hbase.coprocessor.MasterObserver> <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> in interface <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.563">preDeleteTable</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment> ctx,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.569">preDeleteTable</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.569">postCompletedDeleteTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment> ctx,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.575">postCompletedDeleteTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.TableName tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
@@ -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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.576">preCreateTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment> ctx,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.582">preCreateTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.client.TableDescriptor desc,
org.apache.hadoop.hbase.client.RegionInfo[] 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.408">testRecreateTableWithSameNameAfterFirstTimeFailure</a>()
+<pre>public void <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 org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo <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> namespace)
+<pre>private org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo <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> 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[] <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.459">getSplitKey</a>(byte[] startKey,
+<pre>byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.465">getSplitKey</a>(byte[] startKey,
byte[] 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.492">testStatePreserve</a>()
+<pre>public void <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 void <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> util)
+<pre>public static void <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> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.541">restartMaster</a>()
+<pre>private void <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 org.apache.hadoop.hbase.namespace.NamespaceAuditor <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.548">getQuotaManager</a>()</pre>
+<pre>private org.apache.hadoop.hbase.namespace.NamespaceAuditor <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.584">deleteTable</a>(org.apache.hadoop.hbase.TableName tableName)
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.590">deleteTable</a>(org.apache.hadoop.hbase.TableName 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.594">testExceedTableQuotaInNamespace</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.614">testCloneSnapshotQuotaExceed</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.634">testCloneSnapshot</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.672">testRestoreSnapshot</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.708">testRestoreSnapshotQuotaExceed</a>()
+<pre>public void <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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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<K,V>)</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) < 0<a name="line.122"></a>
+<span class="sourceLineNo">123</span> && (Bytes.compareTo(prefixStartKey, endKey) < 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 < 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 < 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<byte[], Long> SIZE_MAP = new TreeMap<>(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<byte[], HRegionLocation> locationMap = new TreeMap<>(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<HRegionLocation>() {<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<byte[][], byte[][]>(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<Long>() {<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) < 0<a name="line.122"></a>
+<span class="sourceLineNo">123</span> && (Bytes.compareTo(prefixStartKey, endKey) < 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 < 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 < 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<byte[], Long> SIZE_MAP = new TreeMap<>(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<byte[], HRegionLocation> locationMap = new TreeMap<>(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<HRegionLocation>() {<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<byte[][], byte[][]>(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<Long>() {<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) < 0<a name="line.122"></a>
+<span class="sourceLineNo">123</span> && (Bytes.compareTo(prefixStartKey, endKey) < 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 < 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 < 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<byte[], Long> SIZE_MAP = new TreeMap<>(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<byte[], HRegionLocation> locationMap = new TreeMap<>(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<HRegionLocation>() {<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<byte[][], byte[][]>(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<Long>() {<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<RegionCoprocessorEnvironment> 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<RegionObserver> 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 -> 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<RegionCoprocessorEnvironment> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<RegionObserver> 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<Exception>() {<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<Exception>() {<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 && 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<MasterObserver> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<HRegionInfo> 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<HRegionInfo> 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>