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/09/06 14:53:50 UTC

[01/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site ea4e4edcd -> 06efc31c4


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    } finally {<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  

<TRUNCATED>

[23/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html
new file mode 100644
index 0000000..c150e98
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html
@@ -0,0 +1,422 @@
+<!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>TestTableInputFormatScan (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="TestTableInputFormatScan (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":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/TestTableInputFormatScan.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.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScan.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScan" class="title">Class TestTableInputFormatScan</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.29">TestTableInputFormatScan</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScan.html#TestTableInputFormatScan--">TestTableInputFormatScan</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testAutoBalanceSplits--">testAutoBalanceSplits</a></span>()</code>
+<div class="block">Test if autoBalance create correct splits</div>
+</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/TestTableInputFormatScan.html#testGetSplits--">testGetSplits</a></span>()</code>
+<div class="block">Tests a MR scan using specific number of mappers.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testScanFromConfiguration--">testScanFromConfiguration</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testSpecifiedNumOfMappersMR--">testSpecifiedNumOfMappersMR</a></span>()</code>
+<div class="block">Runs a MR to test TIF using specific number of mappers.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.32">CLASS_RULE</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="TestTableInputFormatScan--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScan</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.29">TestTableInputFormatScan</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="testGetSplits--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testGetSplits</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.39">testGetSplits</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>,
+                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific number of mappers. The test table has 26 regions,</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testSpecifiedNumOfMappersMR--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testSpecifiedNumOfMappersMR</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.48">testSpecifiedNumOfMappersMR</a>()
+                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Runs a MR to test TIF using specific number of mappers. The test table has 26 regions,</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testAutoBalanceSplits--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testAutoBalanceSplits</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.58">testAutoBalanceSplits</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">Test if autoBalance create correct splits</div>
+<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="testScanFromConfiguration--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanFromConfiguration</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#line.63">testScanFromConfiguration</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>,
+                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScan.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.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScan.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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
deleted file mode 100644
index 81629bb..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
+++ /dev/null
@@ -1,530 +0,0 @@
-<!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>TestTableInputFormatScan1 (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="TestTableInputFormatScan1 (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};
-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/TestTableInputFormatScan1.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.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan1.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
-<h2 title="Class TestTableInputFormatScan1" class="title">Class TestTableInputFormatScan1</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<hr>
-<br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.33">TestTableInputFormatScan1</a>
-extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
-<div class="block">TestTableInputFormatScan part 1.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TestTableInputFormatScanBase</code></a></dd>
-</dl>
-</li>
-</ul>
-</div>
-<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>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
-</ul>
-</li>
-</ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
-<!--   -->
-</a>
-<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
-</ul>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="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/TestTableInputFormatScan1.html#TestTableInputFormatScan1--">TestTableInputFormatScan1</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testAutoBalanceSplits--">testAutoBalanceSplits</a></span>()</code>
-<div class="block">Test if autoBalance create correct splits</div>
-</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/TestTableInputFormatScan1.html#testGetSplits--">testGetSplits</a></span>()</code>
-<div class="block">Tests a MR scan using specific number of mappers.</div>
-</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToAPP--">testScanEmptyToAPP</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToBBA--">testScanEmptyToBBA</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToBBB--">testScanEmptyToBBB</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToEmpty--">testScanEmptyToEmpty</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToOPP--">testScanEmptyToOPP</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testSpecifiedNumOfMappersMR--">testSpecifiedNumOfMappersMR</a></span>()</code>
-<div class="block">Runs a MR to test TIF using specific number of mappers.</div>
-</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="CLASS_RULE">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.36">CLASS_RULE</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="TestTableInputFormatScan1--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>TestTableInputFormatScan1</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.33">TestTableInputFormatScan1</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="testScanEmptyToEmpty--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanEmptyToEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.47">testScanEmptyToEmpty</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>,
-                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanEmptyToAPP--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanEmptyToAPP</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.60">testScanEmptyToAPP</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanEmptyToBBA--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanEmptyToBBA</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.73">testScanEmptyToBBA</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanEmptyToBBB--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanEmptyToBBB</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.86">testScanEmptyToBBB</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanEmptyToOPP--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanEmptyToOPP</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.99">testScanEmptyToOPP</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testGetSplits--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testGetSplits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.112">testGetSplits</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>,
-                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific number of mappers. The test table has 26 regions,</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testSpecifiedNumOfMappersMR--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testSpecifiedNumOfMappersMR</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.124">testSpecifiedNumOfMappersMR</a>()
-                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Runs a MR to test TIF using specific number of mappers. The test table has 26 regions,</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testAutoBalanceSplits--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>testAutoBalanceSplits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#line.135">testAutoBalanceSplits</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">Test if autoBalance create correct splits</div>
-<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>
-</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/TestTableInputFormatScan1.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.TableInputFormatForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan1.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>


[24/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 786a714..bdba9e9 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -2208,11 +2208,21 @@
 <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/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScan</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>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase.ScanMapper</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase.ScanReducer</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToAPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToBBA</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToBBB</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToOPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanOBBToOPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanOBBToQPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanOPPToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanYYXToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanYYYToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanYZYToEmpty</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/model/TestTableListModel.html" title="class in org.apache.hadoop.hbase.rest.model" target="classFrame">TestTableListModel</a></li>
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapred" target="classFrame">TestTableMapReduce</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableMapReduce</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index dbcf11a..f0678e6 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -2208,11 +2208,21 @@
 <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/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a></li>
+<li><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/model/TestTableListModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestTableListModel</a></li>
 <li><a href="org/apache/hadoop/hbase/mapred/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapred">TestTableMapReduce</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableMapReduce</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 71f6954..7f189bb 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -4977,9 +4977,29 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableMapReduce</a></dt>
 <dd>&nbsp;</dd>
@@ -17417,6 +17437,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#getNamespaceState-java.lang.String-">getNamespaceState(String)</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html" title="class in org.apache.hadoop.hbase.namespace">TestNamespaceAuditor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNettyDmUsage--">getNettyDmUsage()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapperStub</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#getNewDataTestDirOnTestFS--">getNewDataTestDirOnTestFS()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>
 <div class="block">Sets up a new path in test filesystem to be used by tests.</div>
@@ -45399,10 +45421,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></dt>
 <dd>
-<div class="block">Run MR job to test autobalance for setting number of mappers for TIF
- This does not run real MR job</div>
+<div class="block">Run MR job to test autobalance for setting number of mappers for TIF This does not run real MR
+ job</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testAutoBalanceSplits--">testAutoBalanceSplits()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testAutoBalanceSplits--">testAutoBalanceSplits()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></dt>
 <dd>
 <div class="block">Test if autoBalance create correct splits</div>
 </dd>
@@ -51587,7 +51609,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#testGetSplitPointEdgeCases--">testGetSplitPointEdgeCases()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testGetSplits--">testGetSplits()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testGetSplits--">testGetSplits()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific number of mappers.</div>
 </dd>
@@ -60547,25 +60569,25 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html#testScanEmptyToAPP--">testScanEmptyToAPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">MultiTableInputFormatTestBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToAPP--">testScanEmptyToAPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#testScanEmptyToAPP--">testScanEmptyToAPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToBBA--">testScanEmptyToBBA()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#testScanEmptyToBBA--">testScanEmptyToBBA()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToBBB--">testScanEmptyToBBB()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#testScanEmptyToBBB--">testScanEmptyToBBB()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html#testScanEmptyToEmpty--">testScanEmptyToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">MultiTableInputFormatTestBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToEmpty--">testScanEmptyToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#testScanEmptyToEmpty--">testScanEmptyToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testScanEmptyToOPP--">testScanEmptyToOPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#testScanEmptyToOPP--">testScanEmptyToOPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
@@ -60573,7 +60595,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithACL.html#testScanForUserWithFewerLabelAuthsThanLabelsInScanAuthorizations--">testScanForUserWithFewerLabelAuthsThanLabelsInScanAuthorizations()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithACL.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabelsWithACL</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanFromConfiguration--">testScanFromConfiguration()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testScanFromConfiguration--">testScanFromConfiguration()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration-java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration(String, String, String)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></dt>
 <dd>
@@ -60824,11 +60846,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html#testScanOBBToOPP--">testScanOBBToOPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">MultiTableInputFormatTestBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanOBBToOPP--">testScanOBBToOPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#testScanOBBToOPP--">testScanOBBToOPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanOBBToQPP--">testScanOBBToQPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#testScanOBBToQPP--">testScanOBBToQPP()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
@@ -60839,7 +60861,7 @@
 <div class="block">Test from client side for scan while the region is reopened
  on the same region server.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanOPPToEmpty--">testScanOPPToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#testScanOPPToEmpty--">testScanOPPToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
@@ -60936,17 +60958,17 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html#testScanWrongColumnFamily--">testScanWrongColumnFamily()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">AbstractTestAsyncTableScan</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanYYXToEmpty--">testScanYYXToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#testScanYYXToEmpty--">testScanYYXToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanYYYToEmpty--">testScanYYYToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#testScanYYYToEmpty--">testScanYYYToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html#testScanYZYToEmpty--">testScanYZYToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">MultiTableInputFormatTestBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanYZYToEmpty--">testScanYZYToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#testScanYZYToEmpty--">testScanYZYToEmpty()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></dt>
 <dd>
 <div class="block">Tests a MR scan using specific start and stop rows.</div>
 </dd>
@@ -62260,7 +62282,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.html#testSpecificDeletesFollowedByDeleteFamily1--">testSpecificDeletesFollowedByDeleteFamily1()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabelsWithDeletes</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#testSpecifiedNumOfMappersMR--">testSpecifiedNumOfMappersMR()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#testSpecifiedNumOfMappersMR--">testSpecifiedNumOfMappersMR()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></dt>
 <dd>
 <div class="block">Runs a MR to test TIF using specific number of mappers.</div>
 </dd>
@@ -63199,22 +63221,13 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html#testTableInputFormatBaseReverseDNSForIPv6--">testTableInputFormatBaseReverseDNSForIPv6()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan1</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
-<dd>
-<div class="block">TestTableInputFormatScan part 1.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#TestTableInputFormatScan1--">TestTableInputFormatScan1()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></dt>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan2</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">TestTableInputFormatScan part 2.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#TestTableInputFormatScan2--">TestTableInputFormatScan2()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#TestTableInputFormatScan--">TestTableInputFormatScan()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanBase</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">
- Tests various scan start and stop row scenarios.</div>
+<div class="block">Tests various scan start and stop row scenarios.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TestTableInputFormatScanBase--">TestTableInputFormatScanBase()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></dt>
 <dd>&nbsp;</dd>
@@ -63226,6 +63239,50 @@
 <dd>
 <div class="block">Checks the last and first key seen against the scanner boundaries.</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToAPP</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#TestTableInputFormatScanEmptyToAPP--">TestTableInputFormatScanEmptyToAPP()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToBBA</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#TestTableInputFormatScanEmptyToBBA--">TestTableInputFormatScanEmptyToBBA()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToBBB</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#TestTableInputFormatScanEmptyToBBB--">TestTableInputFormatScanEmptyToBBB()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToEmpty</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#TestTableInputFormatScanEmptyToEmpty--">TestTableInputFormatScanEmptyToEmpty()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToOPP</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#TestTableInputFormatScanEmptyToOPP--">TestTableInputFormatScanEmptyToOPP()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOBBToOPP</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#TestTableInputFormatScanOBBToOPP--">TestTableInputFormatScanOBBToOPP()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOBBToQPP</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#TestTableInputFormatScanOBBToQPP--">TestTableInputFormatScanOBBToQPP()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOPPToEmpty</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#TestTableInputFormatScanOPPToEmpty--">TestTableInputFormatScanOPPToEmpty()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYYXToEmpty</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#TestTableInputFormatScanYYXToEmpty--">TestTableInputFormatScanYYXToEmpty()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYYYToEmpty</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#TestTableInputFormatScanYYYToEmpty--">TestTableInputFormatScanYYYToEmpty()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYZYToEmpty</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#TestTableInputFormatScanYZYToEmpty--">TestTableInputFormatScanYZYToEmpty()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestTableResource.html#testTableListJSON--">testTableListJSON()</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestTableResource.html" title="class in org.apache.hadoop.hbase.rest">TestTableResource</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/rest/model/TestTableListModel.html" title="class in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">TestTableListModel</span></a> - Class in <a href="org/apache/hadoop/hbase/rest/model/package-summary.html">org.apache.hadoop.hbase.rest.model</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index baf5d7b..15285af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -2975,15 +2975,15 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScan1.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestImportTSVWithOperationAttributes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestImportTSVWithOperationAttributes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHFileOutputFormat2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHFileOutputFormat2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanEmptyToOPP.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
@@ -3031,19 +3031,27 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanOBBToOPP.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanYYYToEmpty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestImportTSVWithTTLs.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTSVWithTTLs.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseMRTestingUtility.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRowCounter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestRowCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseMRTestingUtility.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScan2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRowCounter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestRowCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
@@ -3051,52 +3059,84 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestJarFinder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestJarFinder.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanEmptyToEmpty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestImportTSVWithVisibilityLabels.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestJarFinder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestJarFinder.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestImportTsvParser.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestImportTSVWithVisibilityLabels.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableMapReduce.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestImportTsvParser.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTimeRangeMapRed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableMapReduce.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTimeRangeMapRed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestGroupingTableMapper.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanOBBToQPP.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSimpleTotalOrderPartitioner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSimpleTotalOrderPartitioner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableSnapshotInputFormat.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanOPPToEmpty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableSnapshotInputFormat.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultiTableSnapshotInputFormat.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormat.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanYYXToEmpty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestImportTsv.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTsv.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanEmptyToAPP.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiTableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestImportTsv.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTsv.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestMultiTableInputFormatBase.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCellCounter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestCellCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanEmptyToBBA.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanEmptyToBBB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestTableInputFormatScanYZYToEmpty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMapReduceExamples.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestMapReduceExamples.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html b/testdevapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
index 75e6b86..e4c1a08 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.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};
+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 tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -185,37 +185,41 @@ implements org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper</pre>
 </tr>
 <tr id="i8" class="altColor">
 <td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNettyDmUsage--">getNettyDmUsage</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getNumOpenConnections--">getNumOpenConnections</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getPriorityQueueLength--">getPriorityQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getReadQueueLength--">getReadQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getReplicationQueueLength--">getReplicationQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getScanQueueLength--">getScanQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getTotalQueueSize--">getTotalQueueSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#getWriteQueueLength--">getWriteQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
@@ -469,7 +473,7 @@ implements org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper</pre>
 <a name="getActiveScanRpcHandlerCount--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getActiveScanRpcHandlerCount</h4>
 <pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#line.103">getActiveScanRpcHandlerCount</a>()</pre>
@@ -479,6 +483,19 @@ implements org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper</pre>
 </dl>
 </li>
 </ul>
+<a name="getNettyDmUsage--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNettyDmUsage</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html#line.108">getNettyDmUsage</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getNettyDmUsage</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper</code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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
index 79dc827..38b429b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">Frames</a></li>
@@ -398,7 +398,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableInputFormat</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.TableInputFormatForMergeTesting.html" target="_top">Frames</a></li>


[05/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973<

<TRUNCATED>

[30/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 2b0b816..a0a028d 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,16 +5,16 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180905143241+00'00')
-/CreationDate (D:20180905144745+00'00')
+/ModDate (D:20180906143300+00'00')
+/CreationDate (D:20180906144939+00'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 28 0 R
-/Outlines 4999 0 R
-/PageLabels 5250 0 R
+/Outlines 5008 0 R
+/PageLabels 5259 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 842.89]
 /ViewerPreferences << /DisplayDocTitle true
@@ -23,8 +23,8 @@ endobj
 endobj
 3 0 obj
 << /Type /Pages
-/Count 786
-/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 169 0 R 178 0 R 189 0 R 193 0 R 195 0 R 199 0 R 208 0 R 217 0 R 225 0 R 234 0 R 239 0 R 248 0 R 256 0 R 265 0 R 278 0 R 285 0 R 295 0 R 303 0 R 311 0 R 318 0 R 327 0 R 333 0 R 339 0 R 346 0 R 354 0 R 362 0 R 373 0 R 386 0 R 394 0 R 401 0 R 409 0 R 417 0 R 426 0 R 436 0 R 444 0 R 450 0 R 459 0 R 471 0 R 481 0 R 488 0 R 496 0 R 503 0 R 512 0 R 520 0 R 524 0 R 530 0 R 535 0 R 539 0 R 555 0 R 566 0 R 570 0 R 585 0 R 590 0 R 595 0 R 597 0 R 599 0 R 602 0 R 604 0 R 606 0 R 614 0 R 620 0 R 623 0 R 627 0 R 636 0 R 647 0 R 655 0 R 659 0 R 663 0 R 665 0 R 675 0 R 690 0 R 697 0 R 708 0 R 718 0 R 729 0 R 741 0 R 761 0 R 776 0 R 783 0 R 790 0 R 796 0 R 799 0 R 803 0 R 807 0 R 810 0 R 813 0 R 815 0 R 818 0 R 822 0 R 824 0 R 828 0 R 834 0 R 839 0 R 
 843 0 R 846 0 R 852 0 R 854 0 R 858 0 R 866 0 R 868 0 R 871 0 R 874 0 R 877 0 R 880 0 R 894 0 R 902 0 R 913 0 R 924 0 R 930 0 R 940 0 R 951 0 R 954 0 R 958 0 R 961 0 R 966 0 R 975 0 R 983 0 R 988 0 R 992 0 R 997 0 R 1001 0 R 1003 0 R 1018 0 R 1029 0 R 1034 0 R 1041 0 R 1044 0 R 1052 0 R 1060 0 R 1065 0 R 1070 0 R 1075 0 R 1077 0 R 1079 0 R 1081 0 R 1091 0 R 1099 0 R 1103 0 R 1110 0 R 1117 0 R 1125 0 R 1129 0 R 1135 0 R 1140 0 R 1148 0 R 1152 0 R 1157 0 R 1159 0 R 1165 0 R 1173 0 R 1179 0 R 1186 0 R 1197 0 R 1201 0 R 1203 0 R 1205 0 R 1209 0 R 1212 0 R 1217 0 R 1220 0 R 1232 0 R 1236 0 R 1242 0 R 1250 0 R 1255 0 R 1259 0 R 1263 0 R 1265 0 R 1268 0 R 1271 0 R 1274 0 R 1278 0 R 1282 0 R 1286 0 R 1291 0 R 1295 0 R 1298 0 R 1300 0 R 1310 0 R 1312 0 R 1317 0 R 1330 0 R 1334 0 R 1340 0 R 1342 0 R 1353 0 R 1356 0 R 1362 0 R 1370 0 R 1373 0 R 1380 0 R 1387 0 R 1390 0 R 1392 0 R 1401 0 R 1403 0 R 1405 0 R 1408 0 R 1410 0 R 1412 0 R 1414 0 R 1416 0 R 1419 0 R 1423 0 R 1428 0 R 1430 0 R 1432 0 
 R 1434 0 R 1439 0 R 1446 0 R 1452 0 R 1455 0 R 1457 0 R 1460 0 R 1464 0 R 1468 0 R 1471 0 R 1473 0 R 1475 0 R 1478 0 R 1483 0 R 1489 0 R 1497 0 R 1511 0 R 1525 0 R 1528 0 R 1533 0 R 1546 0 R 1551 0 R 1566 0 R 1574 0 R 1578 0 R 1587 0 R 1602 0 R 1614 0 R 1617 0 R 1631 0 R 1639 0 R 1644 0 R 1655 0 R 1660 0 R 1666 0 R 1672 0 R 1684 0 R 1687 0 R 1696 0 R 1699 0 R 1708 0 R 1713 0 R 1718 0 R 1722 0 R 1735 0 R 1737 0 R 1743 0 R 1749 0 R 1752 0 R 1760 0 R 1768 0 R 1772 0 R 1774 0 R 1776 0 R 1788 0 R 1794 0 R 1803 0 R 1810 0 R 1823 0 R 1829 0 R 1835 0 R 1846 0 R 1852 0 R 1857 0 R 1861 0 R 1865 0 R 1868 0 R 1873 0 R 1878 0 R 1884 0 R 1889 0 R 1893 0 R 1902 0 R 1908 0 R 1911 0 R 1915 0 R 1924 0 R 1931 0 R 1937 0 R 1944 0 R 1948 0 R 1951 0 R 1956 0 R 1961 0 R 1967 0 R 1969 0 R 1971 0 R 1974 0 R 1985 0 R 1988 0 R 1995 0 R 2003 0 R 2008 0 R 2011 0 R 2016 0 R 2018 0 R 2021 0 R 2026 0 R 2029 0 R 2031 0 R 2034 0 R 2037 0 R 2040 0 R 2050 0 R 2055 0 R 2060 0 R 2062 0 R 2070 0 R 2077 0 R 2084 0 R 2090 
 0 R 2095 0 R 2097 0 R 2106 0 R 2116 0 R 2126 0 R 2132 0 R 2139 0 R 2141 0 R 2146 0 R 2148 0 R 2150 0 R 2154 0 R 2157 0 R 2160 0 R 2165 0 R 2169 0 R 2180 0 R 2183 0 R 2186 0 R 2190 0 R 2194 0 R 2197 0 R 2199 0 R 2204 0 R 2207 0 R 2209 0 R 2214 0 R 2224 0 R 2226 0 R 2228 0 R 2230 0 R 2232 0 R 2235 0 R 2237 0 R 2239 0 R 2242 0 R 2244 0 R 2246 0 R 2250 0 R 2255 0 R 2264 0 R 2266 0 R 2268 0 R 2274 0 R 2276 0 R 2281 0 R 2283 0 R 2285 0 R 2292 0 R 2297 0 R 2301 0 R 2306 0 R 2310 0 R 2312 0 R 2314 0 R 2318 0 R 2321 0 R 2323 0 R 2325 0 R 2329 0 R 2331 0 R 2334 0 R 2336 0 R 2338 0 R 2340 0 R 2347 0 R 2350 0 R 2355 0 R 2357 0 R 2359 0 R 2361 0 R 2363 0 R 2371 0 R 2382 0 R 2396 0 R 2407 0 R 2411 0 R 2416 0 R 2420 0 R 2423 0 R 2428 0 R 2434 0 R 2436 0 R 2439 0 R 2441 0 R 2443 0 R 2445 0 R 2450 0 R 2452 0 R 2465 0 R 2468 0 R 2476 0 R 2482 0 R 2494 0 R 2508 0 R 2521 0 R 2540 0 R 2542 0 R 2544 0 R 2548 0 R 2566 0 R 2572 0 R 2584 0 R 2588 0 R 2592 0 R 2601 0 R 2613 0 R 2618 0 R 2628 0 R 2641 0 R 266
 0 0 R 2669 0 R 2672 0 R 2681 0 R 2698 0 R 2705 0 R 2708 0 R 2713 0 R 2717 0 R 2720 0 R 2729 0 R 2738 0 R 2741 0 R 2743 0 R 2747 0 R 2761 0 R 2770 0 R 2775 0 R 2779 0 R 2782 0 R 2784 0 R 2786 0 R 2788 0 R 2793 0 R 2806 0 R 2816 0 R 2824 0 R 2831 0 R 2836 0 R 2846 0 R 2853 0 R 2859 0 R 2861 0 R 2870 0 R 2878 0 R 2880 0 R 2884 0 R 2886 0 R 2897 0 R 2903 0 R 2905 0 R 2914 0 R 2917 0 R 2927 0 R 2931 0 R 2940 0 R 2948 0 R 2953 0 R 2957 0 R 2961 0 R 2963 0 R 2969 0 R 2973 0 R 2977 0 R 2983 0 R 2989 0 R 2992 0 R 2998 0 R 3002 0 R 3011 0 R 3016 0 R 3022 0 R 3032 0 R 3039 0 R 3046 0 R 3049 0 R 3052 0 R 3059 0 R 3064 0 R 3067 0 R 3072 0 R 3082 0 R 3087 0 R 3089 0 R 3093 0 R 3098 0 R 3103 0 R 3110 0 R 3117 0 R 3124 0 R 3132 0 R 3138 0 R 3143 0 R 3147 0 R 3150 0 R 3153 0 R 3162 0 R 3167 0 R 3171 0 R 3179 0 R 3184 0 R 3188 0 R 3190 0 R 3201 0 R 3206 0 R 3209 0 R 3211 0 R 3213 0 R 3223 0 R 3230 0 R 3234 0 R 3237 0 R 3244 0 R 3248 0 R 3251 0 R 3255 0 R 3260 0 R 3268 0 R 3273 0 R 3278 0 R 3283 0 R 3
 285 0 R 3288 0 R 3290 0 R 3294 0 R 3305 0 R 3307 0 R 3311 0 R 3314 0 R 3318 0 R 3321 0 R 3325 0 R 3327 0 R 3340 0 R 3345 0 R 3350 0 R 3356 0 R 3364 0 R 3366 0 R 3374 0 R 3392 0 R 3404 0 R 3410 0 R 3426 0 R 3430 0 R 3435 0 R 3437 0 R 3444 0 R 3447 0 R 3452 0 R 3455 0 R 3457 0 R 3459 0 R 3461 0 R 3465 0 R 3483 0 R 3486 0 R 3491 0 R 3497 0 R 3507 0 R 3512 0 R 3522 0 R 3533 0 R 3540 0 R 3545 0 R 3552 0 R 3557 0 R 3560 0 R 3568 0 R 3572 0 R 3577 0 R 3582 0 R 3595 0 R 3598 0 R 3604 0 R 3610 0 R 3615 0 R 3625 0 R 3634 0 R 3640 0 R 3649 0 R 3658 0 R 3663 0 R 3669 0 R 3675 0 R 3680 0 R 3682 0 R 3688 0 R 3695 0 R 3697 0 R 3705 0 R 3707 0 R 3713 0 R 3721 0 R 3727 0 R 3736 0 R 3742 0 R 3753 0 R 3762 0 R 3774 0 R 3787 0 R 3790 0 R 3792 0 R 3796 0 R 3809 0 R 3815 0 R 3820 0 R 3826 0 R 3830 0 R 3833 0 R 3838 0 R 3840 0 R 3844 0 R 3846 0 R 3850 0 R 3853 0 R 3856 0 R 3864 0 R 3866 0 R 3872 0 R 3875 0 R 3881 0 R 3885 0 R 3888 0 R 3891 0 R 3894 0 R 3898 0 R 3901 0 R 3906 0 R 3911 0 R 3914 0 R 3922 0 R
  3926 0 R 3930 0 R 3932 0 R 3935 0 R 3938 0 R 3943 0 R 3950 0 R 3956 0 R 3960 0 R 3963 0 R 3970 0 R 3978 0 R 3982 0 R 3985 0 R 3987 0 R 3991 0 R 3996 0 R 4001 0 R 4004 0 R 4013 0 R 4018 0 R 4022 0 R 4025 0 R 4033 0 R 4038 0 R 4046 0 R 4051 0 R 4053 0 R 4059 0 R 4061 0 R 4066 0 R 4070 0 R 4075 0 R 4079 0 R 4091 0 R 4107 0 R 4122 0 R 4127 0 R 4130 0 R 4133 0 R 4139 0 R 4144 0 R 4146 0 R 4148 0 R 4150 0 R 4152 0 R 4154 0 R 4163 0 R 4167 0 R 4171 0 R 4175 0 R 4177 0 R 4184 0 R 4194 0 R 4201 0 R 4204 0 R 4207 0 R 4209 0 R 4216 0 R 4223 0 R 4234 0 R 4238 0 R 4241 0 R 4245 0 R 4248 0 R 4254 0 R 4257 0 R 4272 0 R 4277 0 R 4300 0 R 4304 0 R 4311 0 R 4322 0 R 4331 0 R 4334 0 R 4337 0 R 4340 0 R 4356 0 R 4361 0 R 4368 0 R 4371 0 R 4374 0 R 4381 0 R 4386 0 R 4390 0 R 4392 0 R 4398 0 R 4405 0 R 4413 0 R 4417 0 R 4422 0 R 4427 0 R 4433 0 R 4440 0 R 4447 0 R 4453 0 R 4461 0 R 4469 0 R 4473 0 R 4482 0 R 4490 0 R 4496 0 R]
+/Count 787
+/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 169 0 R 178 0 R 189 0 R 193 0 R 195 0 R 199 0 R 208 0 R 217 0 R 225 0 R 234 0 R 239 0 R 248 0 R 256 0 R 265 0 R 278 0 R 285 0 R 295 0 R 303 0 R 311 0 R 318 0 R 327 0 R 333 0 R 339 0 R 346 0 R 354 0 R 362 0 R 373 0 R 386 0 R 394 0 R 401 0 R 409 0 R 417 0 R 426 0 R 436 0 R 444 0 R 450 0 R 459 0 R 471 0 R 481 0 R 488 0 R 496 0 R 503 0 R 512 0 R 520 0 R 524 0 R 530 0 R 535 0 R 539 0 R 555 0 R 566 0 R 570 0 R 585 0 R 590 0 R 595 0 R 597 0 R 599 0 R 602 0 R 604 0 R 606 0 R 614 0 R 620 0 R 623 0 R 627 0 R 636 0 R 647 0 R 655 0 R 659 0 R 663 0 R 665 0 R 675 0 R 690 0 R 697 0 R 708 0 R 718 0 R 729 0 R 741 0 R 761 0 R 776 0 R 783 0 R 790 0 R 796 0 R 799 0 R 803 0 R 807 0 R 810 0 R 813 0 R 815 0 R 818 0 R 822 0 R 824 0 R 828 0 R 834 0 R 839 0 R 
 843 0 R 846 0 R 852 0 R 854 0 R 858 0 R 866 0 R 868 0 R 871 0 R 874 0 R 877 0 R 880 0 R 894 0 R 902 0 R 913 0 R 924 0 R 930 0 R 940 0 R 951 0 R 954 0 R 958 0 R 961 0 R 966 0 R 975 0 R 983 0 R 988 0 R 992 0 R 997 0 R 1001 0 R 1003 0 R 1018 0 R 1029 0 R 1034 0 R 1041 0 R 1044 0 R 1052 0 R 1060 0 R 1065 0 R 1070 0 R 1075 0 R 1077 0 R 1079 0 R 1081 0 R 1091 0 R 1099 0 R 1103 0 R 1110 0 R 1117 0 R 1125 0 R 1129 0 R 1135 0 R 1140 0 R 1148 0 R 1152 0 R 1157 0 R 1159 0 R 1165 0 R 1173 0 R 1179 0 R 1186 0 R 1197 0 R 1201 0 R 1203 0 R 1205 0 R 1209 0 R 1212 0 R 1217 0 R 1220 0 R 1232 0 R 1236 0 R 1242 0 R 1250 0 R 1255 0 R 1259 0 R 1263 0 R 1265 0 R 1268 0 R 1271 0 R 1274 0 R 1278 0 R 1282 0 R 1286 0 R 1291 0 R 1295 0 R 1298 0 R 1300 0 R 1310 0 R 1312 0 R 1317 0 R 1330 0 R 1334 0 R 1340 0 R 1342 0 R 1353 0 R 1356 0 R 1362 0 R 1370 0 R 1373 0 R 1380 0 R 1387 0 R 1390 0 R 1392 0 R 1401 0 R 1403 0 R 1405 0 R 1408 0 R 1410 0 R 1412 0 R 1414 0 R 1416 0 R 1419 0 R 1423 0 R 1428 0 R 1430 0 R 1432 0 
 R 1434 0 R 1439 0 R 1446 0 R 1452 0 R 1455 0 R 1457 0 R 1460 0 R 1464 0 R 1468 0 R 1471 0 R 1473 0 R 1475 0 R 1478 0 R 1483 0 R 1489 0 R 1497 0 R 1511 0 R 1525 0 R 1528 0 R 1533 0 R 1546 0 R 1551 0 R 1566 0 R 1574 0 R 1578 0 R 1587 0 R 1602 0 R 1614 0 R 1617 0 R 1631 0 R 1639 0 R 1644 0 R 1655 0 R 1660 0 R 1666 0 R 1672 0 R 1684 0 R 1687 0 R 1696 0 R 1699 0 R 1708 0 R 1713 0 R 1718 0 R 1722 0 R 1735 0 R 1737 0 R 1743 0 R 1749 0 R 1752 0 R 1760 0 R 1768 0 R 1772 0 R 1774 0 R 1776 0 R 1788 0 R 1794 0 R 1803 0 R 1810 0 R 1823 0 R 1829 0 R 1835 0 R 1846 0 R 1852 0 R 1857 0 R 1861 0 R 1865 0 R 1868 0 R 1873 0 R 1878 0 R 1884 0 R 1889 0 R 1893 0 R 1902 0 R 1908 0 R 1911 0 R 1915 0 R 1924 0 R 1931 0 R 1937 0 R 1944 0 R 1948 0 R 1951 0 R 1956 0 R 1961 0 R 1967 0 R 1969 0 R 1971 0 R 1974 0 R 1985 0 R 1988 0 R 1995 0 R 2003 0 R 2008 0 R 2011 0 R 2016 0 R 2018 0 R 2021 0 R 2026 0 R 2029 0 R 2031 0 R 2034 0 R 2037 0 R 2040 0 R 2050 0 R 2055 0 R 2060 0 R 2062 0 R 2070 0 R 2077 0 R 2084 0 R 2090 
 0 R 2095 0 R 2097 0 R 2106 0 R 2116 0 R 2126 0 R 2132 0 R 2139 0 R 2141 0 R 2146 0 R 2148 0 R 2150 0 R 2154 0 R 2157 0 R 2160 0 R 2165 0 R 2169 0 R 2180 0 R 2183 0 R 2186 0 R 2190 0 R 2194 0 R 2197 0 R 2199 0 R 2204 0 R 2207 0 R 2209 0 R 2214 0 R 2224 0 R 2226 0 R 2228 0 R 2230 0 R 2232 0 R 2235 0 R 2237 0 R 2239 0 R 2242 0 R 2244 0 R 2246 0 R 2250 0 R 2255 0 R 2264 0 R 2266 0 R 2268 0 R 2274 0 R 2276 0 R 2281 0 R 2283 0 R 2285 0 R 2292 0 R 2297 0 R 2301 0 R 2306 0 R 2310 0 R 2312 0 R 2314 0 R 2318 0 R 2321 0 R 2323 0 R 2325 0 R 2329 0 R 2331 0 R 2334 0 R 2336 0 R 2338 0 R 2340 0 R 2347 0 R 2350 0 R 2355 0 R 2357 0 R 2359 0 R 2361 0 R 2363 0 R 2371 0 R 2382 0 R 2396 0 R 2407 0 R 2411 0 R 2416 0 R 2420 0 R 2423 0 R 2428 0 R 2434 0 R 2436 0 R 2439 0 R 2441 0 R 2443 0 R 2445 0 R 2450 0 R 2452 0 R 2465 0 R 2468 0 R 2476 0 R 2482 0 R 2494 0 R 2508 0 R 2521 0 R 2540 0 R 2542 0 R 2544 0 R 2548 0 R 2566 0 R 2572 0 R 2584 0 R 2588 0 R 2592 0 R 2601 0 R 2613 0 R 2618 0 R 2628 0 R 2641 0 R 266
 0 0 R 2669 0 R 2672 0 R 2681 0 R 2698 0 R 2705 0 R 2708 0 R 2713 0 R 2717 0 R 2720 0 R 2729 0 R 2738 0 R 2741 0 R 2743 0 R 2747 0 R 2761 0 R 2770 0 R 2775 0 R 2779 0 R 2782 0 R 2784 0 R 2786 0 R 2788 0 R 2793 0 R 2806 0 R 2816 0 R 2824 0 R 2831 0 R 2836 0 R 2846 0 R 2853 0 R 2859 0 R 2861 0 R 2870 0 R 2878 0 R 2880 0 R 2884 0 R 2886 0 R 2897 0 R 2903 0 R 2905 0 R 2914 0 R 2917 0 R 2927 0 R 2931 0 R 2940 0 R 2948 0 R 2953 0 R 2957 0 R 2961 0 R 2963 0 R 2969 0 R 2973 0 R 2977 0 R 2983 0 R 2989 0 R 2992 0 R 2998 0 R 3002 0 R 3011 0 R 3016 0 R 3022 0 R 3032 0 R 3039 0 R 3046 0 R 3049 0 R 3052 0 R 3059 0 R 3064 0 R 3067 0 R 3072 0 R 3082 0 R 3087 0 R 3089 0 R 3093 0 R 3098 0 R 3103 0 R 3110 0 R 3117 0 R 3124 0 R 3132 0 R 3138 0 R 3143 0 R 3147 0 R 3150 0 R 3153 0 R 3162 0 R 3167 0 R 3171 0 R 3179 0 R 3184 0 R 3188 0 R 3190 0 R 3201 0 R 3206 0 R 3209 0 R 3211 0 R 3213 0 R 3223 0 R 3230 0 R 3234 0 R 3237 0 R 3244 0 R 3248 0 R 3251 0 R 3255 0 R 3260 0 R 3268 0 R 3273 0 R 3278 0 R 3283 0 R 3
 285 0 R 3288 0 R 3290 0 R 3294 0 R 3305 0 R 3307 0 R 3311 0 R 3314 0 R 3318 0 R 3321 0 R 3325 0 R 3327 0 R 3340 0 R 3345 0 R 3350 0 R 3356 0 R 3364 0 R 3366 0 R 3374 0 R 3392 0 R 3404 0 R 3410 0 R 3426 0 R 3430 0 R 3435 0 R 3437 0 R 3444 0 R 3447 0 R 3452 0 R 3455 0 R 3457 0 R 3459 0 R 3461 0 R 3465 0 R 3483 0 R 3486 0 R 3491 0 R 3497 0 R 3507 0 R 3512 0 R 3522 0 R 3533 0 R 3540 0 R 3545 0 R 3552 0 R 3557 0 R 3560 0 R 3568 0 R 3572 0 R 3577 0 R 3582 0 R 3595 0 R 3598 0 R 3604 0 R 3610 0 R 3615 0 R 3625 0 R 3634 0 R 3640 0 R 3649 0 R 3658 0 R 3663 0 R 3669 0 R 3675 0 R 3680 0 R 3682 0 R 3688 0 R 3695 0 R 3697 0 R 3705 0 R 3707 0 R 3713 0 R 3721 0 R 3727 0 R 3736 0 R 3742 0 R 3753 0 R 3762 0 R 3774 0 R 3784 0 R 3795 0 R 3799 0 R 3801 0 R 3805 0 R 3818 0 R 3824 0 R 3829 0 R 3835 0 R 3839 0 R 3842 0 R 3847 0 R 3849 0 R 3853 0 R 3855 0 R 3859 0 R 3862 0 R 3865 0 R 3873 0 R 3875 0 R 3881 0 R 3884 0 R 3890 0 R 3894 0 R 3897 0 R 3900 0 R 3903 0 R 3907 0 R 3910 0 R 3915 0 R 3920 0 R 3923 0 R
  3931 0 R 3935 0 R 3939 0 R 3941 0 R 3944 0 R 3947 0 R 3952 0 R 3959 0 R 3965 0 R 3969 0 R 3972 0 R 3979 0 R 3987 0 R 3991 0 R 3994 0 R 3996 0 R 4000 0 R 4005 0 R 4010 0 R 4013 0 R 4022 0 R 4027 0 R 4031 0 R 4034 0 R 4042 0 R 4047 0 R 4055 0 R 4060 0 R 4062 0 R 4068 0 R 4070 0 R 4075 0 R 4079 0 R 4084 0 R 4088 0 R 4100 0 R 4116 0 R 4131 0 R 4136 0 R 4139 0 R 4142 0 R 4148 0 R 4153 0 R 4155 0 R 4157 0 R 4159 0 R 4161 0 R 4163 0 R 4172 0 R 4176 0 R 4180 0 R 4184 0 R 4186 0 R 4193 0 R 4203 0 R 4210 0 R 4213 0 R 4216 0 R 4218 0 R 4225 0 R 4232 0 R 4243 0 R 4247 0 R 4250 0 R 4254 0 R 4257 0 R 4263 0 R 4266 0 R 4281 0 R 4286 0 R 4309 0 R 4313 0 R 4320 0 R 4331 0 R 4340 0 R 4343 0 R 4346 0 R 4349 0 R 4365 0 R 4370 0 R 4377 0 R 4380 0 R 4383 0 R 4390 0 R 4395 0 R 4399 0 R 4401 0 R 4407 0 R 4414 0 R 4422 0 R 4426 0 R 4431 0 R 4436 0 R 4442 0 R 4449 0 R 4456 0 R 4462 0 R 4470 0 R 4478 0 R 4482 0 R 4491 0 R 4499 0 R 4505 0 R]
 >>
 endobj
 4 0 obj
@@ -187,11 +187,11 @@ endobj
 << /Type /Font
 /BaseFont /71be00+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 5252 0 R
+/FontDescriptor 5261 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5254 0 R
-/ToUnicode 5253 0 R
+/Widths 5263 0 R
+/ToUnicode 5262 0 R
 >>
 endobj
 11 0 obj
@@ -1750,7 +1750,7 @@ endobj
 /F1.0 10 0 R
 >>
 >>
-/Annots [4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R]
+/Annots [4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R]
 >>
 endobj
 13 0 obj
@@ -3417,7 +3417,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R]
+/Annots [4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R]
 >>
 endobj
 15 0 obj
@@ -5084,7 +5084,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R]
+/Annots [4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R]
 >>
 endobj
 17 0 obj
@@ -6751,7 +6751,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R]
+/Annots [4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R]
 >>
 endobj
 19 0 obj
@@ -8247,7 +8247,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<363531> Tj
+<363532> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8287,7 +8287,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<363532> Tj
+<363533> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8327,7 +8327,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<363534> Tj
+<363535> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8367,7 +8367,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<363536> Tj
+<363537> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8407,7 +8407,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<363538> Tj
+<363539> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8429,7 +8429,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R 4854 0 R 4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R]
+/Annots [4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R 4854 0 R 4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R]
 >>
 endobj
 21 0 obj
@@ -8474,7 +8474,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<363630> Tj
+<363631> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8514,7 +8514,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<363631> Tj
+<363632> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8565,7 +8565,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<363633> Tj
+<363634> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8605,7 +8605,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<363634> Tj
+<363635> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8645,7 +8645,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<363637> Tj
+<363638> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8685,7 +8685,7 @@ ET
 BT
 529.4315 702.276 Td
 /F1.0 10.5 Tf
-<363638> Tj
+<363639> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8725,7 +8725,7 @@ ET
 BT
 529.4315 683.796 Td
 /F1.0 10.5 Tf
-<363639> Tj
+<363730> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8765,7 +8765,7 @@ ET
 BT
 529.4315 665.316 Td
 /F1.0 10.5 Tf
-<363730> Tj
+<363731> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8805,7 +8805,7 @@ ET
 BT
 529.4315 646.836 Td
 /F1.0 10.5 Tf
-<363731> Tj
+<363732> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8845,7 +8845,7 @@ ET
 BT
 529.4315 628.356 Td
 /F1.0 10.5 Tf
-<363732> Tj
+<363733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8885,7 +8885,7 @@ ET
 BT
 529.4315 609.876 Td
 /F1.0 10.5 Tf
-<363733> Tj
+<363734> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8925,7 +8925,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<363734> Tj
+<363735> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8965,7 +8965,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<363735> Tj
+<363736> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9005,7 +9005,7 @@ ET
 BT
 529.4315 554.436 Td
 /F1.0 10.5 Tf
-<363736> Tj
+<363737> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9045,7 +9045,7 @@ ET
 BT
 529.4315 535.956 Td
 /F1.0 10.5 Tf
-<363737> Tj
+<363738> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9085,7 +9085,7 @@ ET
 BT
 529.4315 517.476 Td
 /F1.0 10.5 Tf
-<363739> Tj
+<363830> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9125,7 +9125,7 @@ ET
 BT
 529.4315 498.996 Td
 /F1.0 10.5 Tf
-<363830> Tj
+<363831> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9165,7 +9165,7 @@ ET
 BT
 529.4315 480.516 Td
 /F1.0 10.5 Tf
-<363831> Tj
+<363832> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9205,7 +9205,7 @@ ET
 BT
 529.4315 462.036 Td
 /F1.0 10.5 Tf
-<363832> Tj
+<363833> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9245,7 +9245,7 @@ ET
 BT
 529.4315 443.556 Td
 /F1.0 10.5 Tf
-<363833> Tj
+<363834> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9285,7 +9285,7 @@ ET
 BT
 529.4315 425.076 Td
 /F1.0 10.5 Tf
-<363834> Tj
+<363835> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9325,7 +9325,7 @@ ET
 BT
 529.4315 406.596 Td
 /F1.0 10.5 Tf
-<363836> Tj
+<363837> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9365,7 +9365,7 @@ ET
 BT
 529.4315 388.116 Td
 /F1.0 10.5 Tf
-<363837> Tj
+<363838> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9405,7 +9405,7 @@ ET
 BT
 529.4315 369.636 Td
 /F1.0 10.5 Tf
-<363934> Tj
+<363935> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9445,7 +9445,7 @@ ET
 BT
 529.4315 351.156 Td
 /F1.0 10.5 Tf
-<363935> Tj
+<363936> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9485,7 +9485,7 @@ ET
 BT
 529.4315 332.676 Td
 /F1.0 10.5 Tf
-<363936> Tj
+<363937> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9525,7 +9525,7 @@ ET
 BT
 529.4315 314.196 Td
 /F1.0 10.5 Tf
-<363937> Tj
+<363938> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9565,7 +9565,7 @@ ET
 BT
 529.4315 295.716 Td
 /F1.0 10.5 Tf
-<363938> Tj
+<363939> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9605,7 +9605,7 @@ ET
 BT
 529.4315 277.236 Td
 /F1.0 10.5 Tf
-<363939> Tj
+<373030> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9645,7 +9645,7 @@ ET
 BT
 529.4315 258.756 Td
 /F1.0 10.5 Tf
-<373130> Tj
+<373131> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9685,7 +9685,7 @@ ET
 BT
 529.4315 240.276 Td
 /F1.0 10.5 Tf
-<373133> Tj
+<373134> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9725,7 +9725,7 @@ ET
 BT
 529.4315 221.796 Td
 /F1.0 10.5 Tf
-<373137> Tj
+<373138> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9765,7 +9765,7 @@ ET
 BT
 529.4315 203.316 Td
 /F1.0 10.5 Tf
-<373233> Tj
+<373234> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9805,7 +9805,7 @@ ET
 BT
 529.4315 184.836 Td
 /F1.0 10.5 Tf
-<373334> Tj
+<373335> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9845,7 +9845,7 @@ ET
 BT
 529.4315 166.356 Td
 /F1.0 10.5 Tf
-<373335> Tj
+<373336> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9885,7 +9885,7 @@ ET
 BT
 529.4315 147.876 Td
 /F1.0 10.5 Tf
-<373336> Tj
+<373337> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9925,7 +9925,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<373435> Tj
+<373436> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9965,7 +9965,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<373436> Tj
+<373437> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10005,7 +10005,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<373437> Tj
+<373438> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10045,7 +10045,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<373438> Tj
+<373439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10085,7 +10085,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<373439> Tj
+<373530> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10107,7 +10107,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4953 0 R 4954 0 R 4955 0 R 4956 0 R 4957 0 R 4958 0 R 4959 0 R 4960 0 R 4961 0 R 4962 0 R 4963 0 R 4964 0 R 4965 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R]
+/Annots [4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4953 0 R 4954 0 R 4955 0 R 4956 0 R 4957 0 R 4958 0 R 4959 0 R 4960 0 R 4961 0 R 4962 0 R 4963 0 R 4964 0 R 4965 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R 4987 0 R 4988 0 R 4989 0 R 4990 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R]
 >>
 endobj
 23 0 obj
@@ -10152,7 +10152,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<373531> Tj
+<373532> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10192,7 +10192,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<373532> Tj
+<373533> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10232,7 +10232,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<373533> Tj
+<373534> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10272,7 +10272,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<373537> Tj
+<373538> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10312,7 +10312,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<373538> Tj
+<373539> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -10334,7 +10334,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4987 0 R 4988 0 R 4989 0 R 4990 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R 4996 0 R]
+/Annots [4996 0 R 4997 0 R 4998 0 R 4999 0 R 5000 0 R 5001 0 R 5002 0 R 5003 0 R 5004 0 R 5005 0 R]
 >>
 endobj
 25 0 obj
@@ -11146,7 +11146,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [32 0 R 33 0 R 34 0 R 36 0 R 38 0 R 39 0 R 41 0 R 42 0 R 43 0 R]
@@ -11161,7 +11161,7 @@ endobj
 >>
 endobj
 29 0 obj
-<< /Kids [650 0 R 3747 0 R 1978 0 R 651 0 R 3678 0 R 1189 0 R 2608 0 R 3973 0 R]
+<< /Kids [650 0 R 3747 0 R 1978 0 R 651 0 R 3678 0 R 1189 0 R 2608 0 R 3982 0 R]
 >>
 endobj
 30 0 obj
@@ -11171,11 +11171,11 @@ endobj
 << /Type /Font
 /BaseFont /309344+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 5256 0 R
+/FontDescriptor 5265 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5258 0 R
-/ToUnicode 5257 0 R
+/Widths 5267 0 R
+/ToUnicode 5266 0 R
 >>
 endobj
 32 0 obj
@@ -11215,11 +11215,11 @@ endobj
 << /Type /Font
 /BaseFont /fbe45d+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 5260 0 R
+/FontDescriptor 5269 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5262 0 R
-/ToUnicode 5261 0 R
+/Widths 5271 0 R
+/ToUnicode 5270 0 R
 >>
 endobj
 36 0 obj
@@ -11237,11 +11237,11 @@ endobj
 << /Type /Font
 /BaseFont /c7d210+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 5264 0 R
+/FontDescriptor 5273 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5266 0 R
-/ToUnicode 5265 0 R
+/Widths 5275 0 R
+/ToUnicode 5274 0 R
 >>
 endobj
 38 0 obj
@@ -11267,11 +11267,11 @@ endobj
 << /Type /Font
 /BaseFont /6bc580+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 5268 0 R
+/FontDescriptor 5277 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5270 0 R
-/ToUnicode 5269 0 R
+/Widths 5279 0 R
+/ToUnicode 5278 0 R
 >>
 endobj
 41 0 obj
@@ -11705,7 +11705,7 @@ endobj
 /F5.1 47 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -11714,11 +11714,11 @@ endobj
 << /Type /Font
 /BaseFont /26ec65+FontAwesome
 /Subtype /TrueType
-/FontDescriptor 5272 0 R
+/FontDescriptor 5281 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5274 0 R
-/ToUnicode 5273 0 R
+/Widths 5283 0 R
+/ToUnicode 5282 0 R
 >>
 endobj
 48 0 obj
@@ -11776,7 +11776,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -11861,7 +11861,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [54 0 R]
@@ -13434,7 +13434,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [59 0 R 61 0 R]
@@ -14554,7 +14554,7 @@ endobj
 /F1.0 10 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -15433,7 +15433,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [66 0 R]
@@ -16223,7 +16223,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -16942,7 +16942,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -17818,7 +17818,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [75 0 R 76 0 R 77 0 R 78 0 R]
@@ -18808,7 +18808,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [81 0 R]
@@ -19731,7 +19731,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -21242,7 +21242,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [86 0 R 88 0 R]
@@ -22590,7 +22590,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [92 0 R]
@@ -23664,7 +23664,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -24387,7 +24387,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -25026,7 +25026,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [99 0 R 100 0 R 101 0 R 103 0 R]
@@ -25270,7 +25270,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [107 0 R 108 0 R 109 0 R 110 0 R]
@@ -26142,7 +26142,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [114 0 R 115 0 R]
@@ -26422,7 +26422,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -27902,7 +27902,7 @@ endobj
 /F5.1 47 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 130 0 R 131 0 R 132 0 R 133 0 R]
@@ -28942,7 +28942,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [136 0 R 138 0 R]
@@ -29695,7 +29695,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [141 0 R 143 0 R 144 0 R 145 0 R 146 0 R]
@@ -33665,7 +33665,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R]
@@ -34622,7 +34622,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [158 0 R 159 0 R 163 0 R]
@@ -34655,12 +34655,12 @@ endobj
 endobj
 161 0 obj
 << /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 27 0 R (__indexterm-2002) 3643 0 R (__indexterm-2004) 3645 0 R (__indexterm-2006) 3647 0 R (__indexterm-2008) 3650 0 R (accesscontrolclient-changes) 4494 0 R (acid) 962 0 R (acl) 3445 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3745 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3748 0 R (add.metrics) 3743 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 4076 0 R (adding.new.node) 3186 0 R]
+/Names [(__anchor-top) 27 0 R (__indexterm-2002) 3643 0 R (__indexterm-2004) 3645 0 R (__indexterm-2006) 3647 0 R (__indexterm-2008) 3650 0 R (accesscontrolclient-changes) 4503 0 R (acid) 962 0 R (acl) 3445 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3745 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3748 0 R (add.metrics) 3743 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 4085 0 R (adding.new.node) 3186 0 R]
 >>
 endobj
 162 0 obj
 << /Limits [(io.storefile.bloom.block.size) (jdk-version-requirements)]
-/Names [(io.storefile.bloom.block.size) 365 0 R (ipc) 4402 0 R (irbrc) 825 0 R (irc) 3477 0 R (isolate-system-tables) 3439 0 R (java) 121 0 R (java-2) 1981 0 R (java-3) 1986 0 R (java.client.config) 525 0 R (jdk-issues) 2984 0 R (jdk-version-requirements) 58 0 R]
+/Names [(io.storefile.bloom.block.size) 365 0 R (ipc) 4411 0 R (irbrc) 825 0 R (irc) 3477 0 R (isolate-system-tables) 3439 0 R (java) 121 0 R (java-2) 1981 0 R (java-3) 1986 0 R (java.client.config) 525 0 R (jdk-issues) 2984 0 R (jdk-version-requirements) 58 0 R]
 >>
 endobj
 163 0 obj
@@ -34782,7 +34782,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [166 0 R]
@@ -35916,7 +35916,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [171 0 R 172 0 R 174 0 R]
@@ -36716,7 +36716,7 @@ endobj
 /F5.1 47 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [179 0 R 180 0 R 181 0 R 183 0 R 184 0 R 186 0 R 187 0 R]
@@ -38188,7 +38188,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [190 0 R 191 0 R]
@@ -38613,7 +38613,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -39269,7 +39269,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [197 0 R]
@@ -40036,7 +40036,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [202 0 R]
@@ -40567,7 +40567,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -40583,7 +40583,7 @@ endobj
 endobj
 212 0 obj
 << /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
-/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4255 0 R (getting.involved) 3466 0 R (getting_started) 50 0 R (git.best.practices) 3749 0 R (git.patch.flow) 3802 0 R (goals) 4348 0 R (guide-for-hbase-committers) 3776 0 R (guidelines-for-deploying-a-coprocessor) 2446 0 R (guidelines-for-reporting-effective-issues) 3484 0 R (hadoop) 142 0 R (hadoop.native.lib) 4173 0 R (hadoop.policy.file) 391 0 R (handling-of-errors-during-log-splitting) 1719 0 R]
+/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4264 0 R (getting.involved) 3466 0 R (getting_started) 50 0 R (git.best.practices) 3749 0 R (git.patch.flow) 3811 0 R (goals) 4357 0 R (guide-for-hbase-committers) 3776 0 R (guidelines-for-deploying-a-coprocessor) 2446 0 R (guidelines-for-reporting-effective-issues) 3484 0 R (hadoop) 142 0 R (hadoop.native.lib) 4182 0 R (hadoop.policy.file) 391 0 R (handling-of-errors-during-log-splitting) 1719 0 R]
 >>
 endobj
 213 0 obj
@@ -41113,7 +41113,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -41635,7 +41635,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -42270,7 +42270,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -42779,7 +42779,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -43310,7 +43310,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -43889,7 +43889,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [258 0 R 259 0 R]
@@ -44456,7 +44456,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [267 0 R 268 0 R 270 0 R 271 0 R]
@@ -45076,7 +45076,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -45671,7 +45671,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [291 0 R 292 0 R]
@@ -45691,7 +45691,7 @@ endobj
 endobj
 290 0 obj
 << /Limits [(hbase.cluster.distributed) (hbase.data.umask.enable)]
-/Names [(hbase.cluster.distributed) 206 0 R (hbase.column.max.version) 442 0 R (hbase.commit.msg.format) 4019 0 R (hbase.coordinated.state.manager.class) 484 0 R (hbase.coprocessor.abortonerror) 407 0 R (hbase.coprocessor.enabled) 402 0 R (hbase.coprocessor.master.classes) 406 0 R (hbase.coprocessor.region.classes) 405 0 R (hbase.coprocessor.user.enabled) 404 0 R (hbase.data.umask) 433 0 R (hbase.data.umask.enable) 432 0 R]
+/Names [(hbase.cluster.distributed) 206 0 R (hbase.column.max.version) 442 0 R (hbase.commit.msg.format) 4028 0 R (hbase.coordinated.state.manager.class) 484 0 R (hbase.coprocessor.abortonerror) 407 0 R (hbase.coprocessor.enabled) 402 0 R (hbase.coprocessor.master.classes) 406 0 R (hbase.coprocessor.region.classes) 405 0 R (hbase.coprocessor.user.enabled) 404 0 R (hbase.data.umask) 433 0 R (hbase.data.umask.enable) 432 0 R]
 >>
 endobj
 291 0 obj
@@ -46237,7 +46237,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -46728,7 +46728,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -47300,7 +47300,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -47846,7 +47846,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -48423,7 +48423,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -49043,7 +49043,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -49590,7 +49590,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -50113,7 +50113,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -50673,7 +50673,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [357 0 R]
@@ -51208,7 +51208,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [363 0 R]
@@ -51233,7 +51233,7 @@ endobj
 endobj
 366 0 obj
 << /Limits [(quota) (regions.arch)]
-/Names [(quota) 3299 0 R (read-api-and-usage) 1982 0 R (read-hbase-shell-commands-from-a-command-file) 811 0 R (reading-filtering-and-sending-edits) 3279 0 R (reading_cells_with_labels) 1435 0 R (recommended.configurations.hdfs) 553 0 R (recommended_configurations) 548 0 R (recommended_configurations.zk) 549 0 R (references) 3907 0 R (region-overlap-repairs) 4131 0 R (region-replication-for-meta-table-s-region) 1959 0 R (region-scanner-changes) 4474 0 R (region-transition-rpc-and-rs-heartbeat-can-arrive-at-same-time-on-master) 3940 0 R (regioncoprocessorenvironment-getregion-abstract-hregion) 4399 0 R (regioncoprocessorhost-postappend-append-append-result-result-void) 4400 0 R (regioncoprocessorhost-prestorefilereaderopen-filesystem-fs-path-p-fsdatainputstreamwrapper-in-long-size-cacheconfig-cacheconf-reference-r-storefile-reader) 4401 0 R (regionobserver) 4387 0 R (regions.arch) 1753 0 R]
+/Names [(quota) 3299 0 R (read-api-and-usage) 1982 0 R (read-hbase-shell-commands-from-a-command-file) 811 0 R (reading-filtering-and-sending-edits) 3279 0 R (reading_cells_with_labels) 1435 0 R (recommended.configurations.hdfs) 553 0 R (recommended_configurations) 548 0 R (recommended_configurations.zk) 549 0 R (references) 3916 0 R (region-overlap-repairs) 4140 0 R (region-replication-for-meta-table-s-region) 1959 0 R (region-scanner-changes) 4483 0 R (region-transition-rpc-and-rs-heartbeat-can-arrive-at-same-time-on-master) 3949 0 R (regioncoprocessorenvironment-getregion-abstract-hregion) 4408 0 R (regioncoprocessorhost-postappend-append-append-result-result-void) 4409 0 R (regioncoprocessorhost-prestorefilereaderopen-filesystem-fs-path-p-fsdatainputstreamwrapper-in-long-size-cacheconfig-cacheconf-reference-r-storefile-reader) 4410 0 R (regionobserver) 4396 0 R (regions.arch) 1753 0 R]
 >>
 endobj
 367 0 obj
@@ -51872,7 +51872,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [377 0 R 378 0 R 380 0 R 383 0 R 384 0 R]
@@ -52462,7 +52462,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -52996,7 +52996,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -53546,7 +53546,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -54066,7 +54066,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -54599,7 +54599,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -55087,7 +55087,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -55103,7 +55103,7 @@ endobj
 endobj
 430 0 obj
 << /Limits [(hbase.rpc) (hbase.secure.spnego.ui)]
-/Names [(hbase.rpc) 4341 0 R (hbase.rpc.rows.warning.threshold) 516 0 R (hbase.rpc.shortoperation.timeout) 374 0 R (hbase.rpc.timeout) 368 0 R (hbase.rs.cacheblocksonwrite) 367 0 R (hbase.secure.bulkload) 1461 0 R (hbase.secure.configuration) 1301 0 R (hbase.secure.enable) 1465 0 R (hbase.secure.simpleconfiguration) 1343 0 R (hbase.secure.spnego.ui) 1296 0 R]
+/Names [(hbase.rpc) 4350 0 R (hbase.rpc.rows.warning.threshold) 516 0 R (hbase.rpc.shortoperation.timeout) 374 0 R (hbase.rpc.timeout) 368 0 R (hbase.rs.cacheblocksonwrite) 367 0 R (hbase.secure.bulkload) 1461 0 R (hbase.secure.configuration) 1301 0 R (hbase.secure.enable) 1465 0 R (hbase.secure.simpleconfiguration) 1343 0 R (hbase.secure.spnego.ui) 1296 0 R]
 >>
 endobj
 431 0 obj
@@ -55640,7 +55640,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -56208,7 +56208,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -56720,7 +56720,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -57263,7 +57263,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [468 0 R 469 0 R]
@@ -57902,7 +57902,7 @@ endobj
 /F4.0 37 0 R
 /F6.0 478 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [474 0 R 475 0 R]
@@ -57946,11 +57946,11 @@ endobj
 << /Type /Font
 /BaseFont /03fbbc+mplus1mn-bold
 /Subtype /TrueType
-/FontDescriptor 5276 0 R
+/FontDescriptor 5285 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5278 0 R
-/ToUnicode 5277 0 R
+/Widths 5287 0 R
+/ToUnicode 5286 0 R
 >>
 endobj
 479 0 obj
@@ -58513,7 +58513,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -58529,7 +58529,7 @@ endobj
 endobj
 485 0 obj
 << /Limits [(hbase.defaults.for.version.skip) (hbase.hregion.percolumnfamilyflush.size.lower.bound.min)]
-/Names [(hbase.defaults.for.version.skip) 415 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 447 0 R (hbase.display.keys) 399 0 R (hbase.dynamic.jars.dir) 463 0 R (hbase.encryption.server) 1448 0 R (hbase.env.sh) 518 0 R (hbase.fix.version.in.jira) 4007 0 R (hbase.history) 4301 0 R (hbase.hregion.majorcompaction) 320 0 R (hbase.hregion.majorcompaction.jitter) 321 0 R (hbase.hregion.max.filesize) 319 0 R (hbase.hregion.memstore.block.multiplier) 315 0 R (hbase.hregion.memstore.flush.size) 312 0 R (hbase.hregion.memstore.mslab.enabled) 316 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 313 0 R]
+/Names [(hbase.defaults.for.version.skip) 415 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 447 0 R (hbase.display.keys) 399 0 R (hbase.dynamic.jars.dir) 463 0 R (hbase.encryption.server) 1448 0 R (hbase.env.sh) 518 0 R (hbase.fix.version.in.jira) 4016 0 R (hbase.history) 4310 0 R (hbase.hregion.majorcompaction) 320 0 R (hbase.hregion.majorcompaction.jitter) 321 0 R (hbase.hregion.max.filesize) 319 0 R (hbase.hregion.memstore.block.multiplier) 315 0 R (hbase.hregion.memstore.flush.size) 312 0 R (hbase.hregion.memstore.mslab.enabled) 316 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 313 0 R]
 >>
 endobj
 486 0 obj
@@ -59061,7 +59061,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -59587,7 +59587,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -60121,7 +60121,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -60637,7 +60637,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -61557,7 +61557,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -62632,7 +62632,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [526 0 R 527 0 R]
@@ -64103,7 +64103,7 @@ endobj
 /F3.0 35 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -64627,7 +64627,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -65280,7 +65280,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [542 0 R 543 0 R 545 0 R 546 0 R 547 0 R 552 0 R]
@@ -66035,7 +66035,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [558 0 R 561 0 R 564 0 R]
@@ -66074,7 +66074,7 @@ endobj
 endobj
 563 0 obj
 << /Limits [(configuration) (coprocessor-implementation-overview)]
-/Names [(configuration) 106 0 R (configuration-2) 3220 0 R (configuration-3) 4094 0 R (configuration-files) 113 0 R (configuration-from-scratch) 3992 0 R (configuration-properties) 1964 0 R (configure-mob-compaction-mergeable-threshold) 2005 0 R (configure-mob-compaction-policy) 2004 0 R (configuring-columns-for-mob) 2001 0 R (configuring-server-wide-behavior-of-bloom-filters) 2570 0 R (configuring-the-rest-server-and-client) 2219 0 R (confirm) 196 0 R (connection-setup) 4353 0 R (constraints) 1100 0 R (contributing-to-documentation-or-other-strings) 4030 0 R (coprocessor-api-changes) 4377 0 R (coprocessor-implementation-overview) 2375 0 R]
+/Names [(configuration) 106 0 R (configuration-2) 3220 0 R (configuration-3) 4103 0 R (configuration-files) 113 0 R (configuration-from-scratch) 4001 0 R (configuration-properties) 1964 0 R (configure-mob-compaction-mergeable-threshold) 2005 0 R (configure-mob-compaction-policy) 2004 0 R (configuring-columns-for-mob) 2001 0 R (configuring-server-wide-behavior-of-bloom-filters) 2570 0 R (configuring-the-rest-server-and-client) 2219 0 R (confirm) 196 0 R (connection-setup) 4362 0 R (constraints) 1100 0 R (contributing-to-documentation-or-other-strings) 4039 0 R (coprocessor-api-changes) 4386 0 R (coprocessor-implementation-overview) 2375 0 R]
 >>
 endobj
 564 0 obj
@@ -66936,7 +66936,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [568 0 R]
@@ -67750,7 +67750,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [572 0 R 573 0 R 574 0 R 578 0 R 581 0 R 582 0 R 583 0 R]
@@ -68492,7 +68492,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [587 0 R 588 0 R]
@@ -69924,7 +69924,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [592 0 R 593 0 R]
@@ -70701,7 +70701,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -71402,7 +71402,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -72733,7 +72733,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -74228,7 +74228,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -74550,7 +74550,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -74748,7 +74748,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [608 0 R 609 0 R 610 0 R 611 0 R 612 0 R]
@@ -75502,7 +75502,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [617 0 R]
@@ -76419,7 +76419,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [621 0 R]
@@ -78734,7 +78734,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [624 0 R 625 0 R]
@@ -79767,7 +79767,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [629 0 R 630 0 R 631 0 R]
@@ -80431,7 +80431,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [639 0 R 640 0 R 641 0 R 643 0 R 644 0 R 645 0 R]
@@ -81226,7 +81226,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [653 0 R]
@@ -81237,17 +81237,17 @@ endobj
 endobj
 649 0 obj
 << /Limits [(standalone.over.hdfs) (storefile-refresher)]
-/Names [(standalone.over.hdfs) 175 0 R (standalone_dist) 170 0 R (starting-and-stopping-the-rest-server) 2218 0 R (statemachineprocedure) 3903 0 R (static-loading) 2409 0 R (static-unloading) 2412 0 R (store) 1804 0 R (store-file-ttl) 1958 0 R (store.file.dir) 1820 0 R (store.memstore) 1805 0 R (storefile-changes) 4476 0 R (storefile-refresher) 1954 0 R]
+/Names [(standalone.over.hdfs) 175 0 R (standalone_dist) 170 0 R (starting-and-stopping-the-rest-server) 2218 0 R (statemachineprocedure) 3912 0 R (static-loading) 2409 0 R (static-unloading) 2412 0 R (store) 1804 0 R (store-file-ttl) 1958 0 R (store.file.dir) 1820 0 R (store.memstore) 1805 0 R (storefile-changes) 4485 0 R (storefile-refresher) 1954 0 R]
 >>
 endobj
 650 0 obj
 << /Limits [(__anchor-top) (build.thrift)]
-/Kids [161 0 R 3746 0 R 4436 0 R 1922 0 R 1485 0 R 3699 0 R 1663 0 R 4250 0 R 2152 0 R 2110 0 R 2067 0 R 2101 0 R]
+/Kids [161 0 R 3746 0 R 4445 0 R 1922 0 R 1485 0 R 3699 0 R 1663 0 R 4259 0 R 2152 0 R 2110 0 R 2067 0 R 2101 0 R]
 >>
 endobj
 651 0 obj
 << /Limits [(hbase.moduletest.run) (hbase.zookeeper.property.initLimit)]
-/Kids [507 0 R 3619 0 R 382 0 R 245 0 R 375 0 R 430 0 R 4342 0 R 462 0 R 274 0 R 3667 0 R 3638 0 R]
+/Kids [507 0 R 3619 0 R 382 0 R 245 0 R 375 0 R 430 0 R 4351 0 R 462 0 R 274 0 R 3667 0 R 3638 0 R]
 >>
 endobj
 652 0 obj
@@ -81911,7 +81911,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -82626,7 +82626,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [661 0 R]
@@ -83093,7 +83093,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -83813,7 +83813,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [670 0 R 673 0 R]
@@ -85079,7 +85079,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 686 0 R 687 0 R 688 0 R]
@@ -86015,7 +86015,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [691 0 R 692 0 R 695 0 R]
@@ -86914,7 +86914,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [700 0 R 701 0 R 703 0 R 705 0 R 706 0 R]
@@ -87733,7 +87733,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [709 0 R 712 0 R 715 0 R 716 0 R]
@@ -88737,7 +88737,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [721 0 R 723 0 R 725 0 R]
@@ -89557,7 +89557,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [730 0 R 736 0 R 737 0 R 738 0 R]
@@ -90584,7 +90584,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [744 0 R 745 0 R 746 0 R 748 0 R 749 0 R 750 0 R 752 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R]
@@ -91802,7 +91802,7 @@ endobj
 /F3.0 35 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 771 0 R 772 0 R 773 0 R 774 0 R]
@@ -92641,7 +92641,7 @@ endobj
 /F5.1 47 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [777 0 R 778 0 R]
@@ -93114,7 +93114,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [787 0 R]
@@ -93483,7 +93483,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [792 0 R 793 0 R 794 0 R]
@@ -93684,7 +93684,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -93922,7 +93922,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [801 0 R]
@@ -94518,7 +94518,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [805 0 R]
@@ -95055,7 +95055,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -95305,7 +95305,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -95789,7 +95789,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -96064,7 +96064,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -96501,7 +96501,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -97064,7 +97064,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -97675,7 +97675,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -98845,7 +98845,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [829 0 R]
@@ -98867,7 +98867,7 @@ endobj
 endobj
 831 0 obj
 << /Limits [(multiple-typed-queues) (new-system)]
-/Names [(multiple-typed-queues) 3312 0 R (multiwal) 1711 0 R (nagles) 580 0 R (namespace) 859 0 R (namespace_creation) 863 0 R (namespace_quotas) 3308 0 R (namespace_special) 864 0 R (network-saturation-the-winner) 3014 0 R (new-committers) 3777 0 R (new-configs) 3944 0 R (new-system) 3923 0 R]
+/Names [(multiple-typed-queues) 3312 0 R (multiwal) 1711 0 R (nagles) 580 0 R (namespace) 859 0 R (namespace_creation) 863 0 R (namespace_quotas) 3308 0 R (namespace_special) 864 0 R (network-saturation-the-winner) 3014 0 R (new-committers) 3786 0 R (new-configs) 3953 0 R (new-system) 3932 0 R]
 >>
 endobj
 832 0 obj
@@ -104131,7 +104131,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -104507,7 +104507,7 @@ endobj
 /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -105122,7 +105122,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -107663,7 +107663,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [848 0 R 849 0 R 850 0 R]
@@ -110682,7 +110682,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -112116,7 +112116,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [856 0 R]
@@ -112900,7 +112900,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [860 0 R 861 0 R 862 0 R]
@@ -113102,7 +113102,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -113173,7 +113173,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -113277,7 +113277,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -113694,7 +113694,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -113814,7 +113814,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -116001,7 +116001,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [882 0 R 884 0 R 885 0 R 887 0 R 888 0 R 889 0 R 891 0 R 892 0 R]
@@ -116330,7 +116330,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [897 0 R 898 0 R 899 0 R 900 0 R]
@@ -116341,7 +116341,7 @@ endobj
 endobj
 896 0 obj
 << /Limits [(dfs.datanode.failed.volumes.tolerated) (dm.column.metadata)]
-/Names [(dfs.datanode.failed.volumes.tolerated) 556 0 R (dfs.datanode.max.transfer.threads) 160 0 R (dfs.domain.socket.path) 446 0 R (dialog) 3810 0 R (direct.memory) 1668 0 R (disable-nagle-for-rpc) 1162 0 R (disable.splitting) 567 0 R (disabling-metrics) 3198 0 R (disabling.blockcache) 579 0 R (discovering.available.metrics) 3199 0 R (distributed) 176 0 R (distributed.log.replay.failure.reasons) 1741 0 R (distributed.log.splitting) 1729 0 R (dm.column.metadata) 955 0 R]
+/Names [(dfs.datanode.failed.volumes.tolerated) 556 0 R (dfs.datanode.max.transfer.threads) 160 0 R (dfs.domain.socket.path) 446 0 R (dialog) 3819 0 R (direct.memory) 1668 0 R (disable-nagle-for-rpc) 1162 0 R (disable.splitting) 567 0 R (disabling-metrics) 3198 0 R (disabling.blockcache) 579 0 R (discovering.available.metrics) 3199 0 R (distributed) 176 0 R (distributed.log.replay.failure.reasons) 1741 0 R (distributed.log.splitting) 1729 0 R (dm.column.metadata) 955 0 R]
 >>
 endobj
 897 0 obj
@@ -117350,7 +117350,7 @@ endobj
 /F7.0 910 0 R
 /F7.1 911 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [905 0 R 906 0 R 909 0 R]
@@ -117361,7 +117361,7 @@ endobj
 endobj
 904 0 obj
 << /Limits [(upgrade2.0.ui.splitmerge.by.row) (using-the-java-api)]
-/Names [(upgrade2.0.ui.splitmerge.by.row) 719 0 R (upgrade2.0.zkconfig) 710 0 R (upgrading) 607 0 R (upgrading-2) 4089 0 R (use-cases-for-observer-coprocessors) 2387 0 R (user-interface) 1975 0 R (using-existing-zookeeper-ensemble) 3964 0 R (using-hbase-shell) 2425 0 R (using-rest-endpoints) 2222 0 R (using-secure-http-https-for-the-web-ui) 1292 0 R (using-the-code-rolling-restart-sh-code-script) 3177 0 R (using-the-java-api) 2426 0 R]
+/Names [(upgrade2.0.ui.splitmerge.by.row) 719 0 R (upgrade2.0.zkconfig) 710 0 R (upgrading) 607 0 R (upgrading-2) 4098 0 R (use-cases-for-observer-coprocessors) 2387 0 R (user-interface) 1975 0 R (using-existing-zookeeper-ensemble) 3973 0 R (using-hbase-shell) 2425 0 R (using-rest-endpoints) 2222 0 R (using-secure-http-https-for-the-web-ui) 1292 0 R (using-the-code-rolling-restart-sh-code-script) 3177 0 R (using-the-java-api) 2426 0 R]
 >>
 endobj
 905 0 obj
@@ -117391,7 +117391,7 @@ endobj
 endobj
 908 0 obj
 << /Limits [(rowcounter) (save-the-dataframe)]
-/Names [(rowcounter) 3118 0 R (rowcounter-example) 1237 0 R (rowkey.design) 998 0 R (rowkey.regionsplits) 1039 0 R (rowkey.scope) 1036 0 R (rpc) 4350 0 R (rpc.configs) 4369 0 R (rpc.logging) 2736 0 R (rpcscheduler-dispatch-callrunner-p1-abstract-void-1) 4407 0 R (rs.failover.details) 3281 0 R (rs_metrics) 3207 0 R (rsgroup) 3431 0 R (run-canary-test-as-daemon-mode) 3056 0 R (run.insitu) 3740 0 R (running-canary-in-a-kerberos-enabled-cluster) 3062 0 R (running-hbck-to-identify-inconsistencies) 4124 0 R (running-multiple-workloads-on-a-single-cluster) 3295 0 R (running-the-shell-in-non-interactive-mode) 800 0 R (save-the-dataframe) 2345 0 R]
+/Names [(rowcounter) 3118 0 R (rowcounter-example) 1237 0 R (rowkey.design) 998 0 R (rowkey.regionsplits) 1039 0 R (rowkey.scope) 1036 0 R (rpc) 4359 0 R (rpc.configs) 4378 0 R (rpc.logging) 2736 0 R (rpcscheduler-dispatch-callrunner-p1-abstract-void-1) 4416 0 R (rs.failover.details) 3281 0 R (rs_metrics) 3207 0 R (rsgroup) 3431 0 R (run-canary-test-as-daemon-mode) 3056 0 R (run.insitu) 3740 0 R (running-canary-in-a-kerberos-enabled-cluster) 3062 0 R (running-hbck-to-identify-inconsistencies) 4133 0 R (running-multiple-workloads-on-a-single-cluster) 3295 0 R (running-the-shell-in-non-interactive-mode) 800 0 R (save-the-dataframe) 2345 0 R]
 >>
 endobj
 909 0 obj
@@ -117409,22 +117409,22 @@ endobj
 << /Type /Font
 /BaseFont /0c7a4a+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 5280 0 R
+/FontDescriptor 5289 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5282 0 R
-/ToUnicode 5281 0 R
+/Widths 5291 0 R
+/ToUnicode 5290 0 R
 >>
 endobj
 911 0 obj
 << /Type /Font
 /BaseFont /a99fc7+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 5284 0 R
+/FontDescriptor 5293 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5286 0 R
-/ToUnicode 5285 0 R
+/Widths 5295 0 R
+/ToUnicode 5294 0 R
 >>
 endobj
 912 0 obj
@@ -119292,7 +119292,7 @@ endobj
 /F7.1 911 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [914 0 R 915 0 R 918 0 R 919 0 R 920 0 R 921 0 R]
@@ -123228,7 +123228,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -124210,7 +124210,7 @@ endobj
 /F1.1 40 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R]
@@ -125102,7 +125102,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [941 0 R 942 0 R 944 0 R 945 0 R 947 0 R 949 0 R]
@@ -125267,7 +125267,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -125434,7 +125434,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [956 0 R]
@@ -125663,7 +125663,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -125781,7 +125781,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [963 0 R 964 0 R]
@@ -126194,7 +126194,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R]
@@ -127669,7 +127669,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [977 0 R 978 0 R 979 0 R 981 0 R]
@@ -128189,7 +128189,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [986 0 R]
@@ -128411,7 +128411,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [990 0 R]
@@ -128728,7 +128728,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [994 0 R]
@@ -129144,7 +129144,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -129873,7 +129873,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -130806,7 +130806,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1004 0 R 1005 0 R 1006 0 R 1007 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1015 0 R 1016 0 R]
@@ -131431,7 +131431,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1019 0 R 1020 0 R 1021 0 R 1023 0 R 1025 0 R]
@@ -135012,7 +135012,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1031 0 R 1032 0 R]
@@ -135730,7 +135730,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1035 0 R]
@@ -135752,7 +135752,7 @@ endobj
 endobj
 1038 0 obj
 << /Limits [(cf.in.memory) (class-coprocessorrpcchannel-1)]
-/Names [(cf.in.memory) 2576 0 R (cf.keep.deleted) 1071 0 R (changes-of-note) 668 0 R (changing.compression) 4199 0 R (changing.rowkeys) 1037 0 R (chaos.monkey.properties) 3700 0 R (checking-for-success-or-failure-in-scripts) 808 0 R (choosing-region-servers-to-replicate-to) 3274 0 R (class-class-locktimeoutexception-1) 4455 0 R (class-coprocessorhost-e) 4382 0 R (class-coprocessorrpcchannel-1) 4379 0 R]
+/Names [(cf.in.memory) 2576 0 R (cf.keep.deleted) 1071 0 R (changes-of-note) 668 0 R (changing.compression) 4208 0 R (changing.rowkeys) 1037 0 R (chaos.monkey.properties) 3700 0 R (checking-for-success-or-failure-in-scripts) 808 0 R (choosing-region-servers-to-replicate-to) 3274 0 R (class-class-locktimeoutexception-1) 4464 0 R (class-coprocessorhost-e) 4391 0 R (class-coprocessorrpcchannel-1) 4388 0 R]
 >>
 endobj
 1039 0 obj
@@ -139507,7 +139507,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1042 0 R]
@@ -139980,7 +139980,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1047 0 R 1048 0 R 1050 0 R]
@@ -140360,7 +140360,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1054 0 R 1055 0 R 1056 0 R 1058 0 R]
@@ -140501,7 +140501,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1063 0 R]
@@ -140512,7 +140512,7 @@ endobj
 endobj
 1062 0 obj
 << /Limits [(schema.versions) (sect.zookeeper.session.timeout)]
-/Names [(schema.versions) 1045 0 R (schema.versions.max) 1046 0 R (scopes) 4141 0 R (scripting) 797 0 R (secondary-replica-failover) 1963 0 R (secondary.indexes) 1082 0 R (secondary.indexes.coproc) 1096 0 R (secondary.indexes.dualwrite) 1092 0 R (secondary.indexes.filter) 1086 0 R (secondary.indexes.periodic) 1088 0 R (secondary.indexes.summary) 1094 0 R (sect.zookeeper.session.timeout) 550 0 R]
+/Names [(schema.versions) 1045 0 R (schema.versions.max) 1046 0 R (scopes) 4150 0 R (scripting) 797 0 R (secondary-replica-failover) 1963 0 R (secondary.indexes) 1082 0 R (secondary.indexes.coproc) 1096 0 R (secondary.indexes.dualwrite) 1092 0 R (secondary.indexes.filter) 1086 0 R (secondary.indexes.periodic) 1088 0 R (secondary.indexes.summary) 1094 0 R (sect.zookeeper.session.timeout) 550 0 R]
 >>
 endobj
 1063 0 obj
@@ -140938,7 +140938,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1067 0 R 1068 0 R]
@@ -141629,7 +141629,7 @@ endobj
 /F7.0 910 0 R
 /F7.1 911 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1072 0 R 1073 0 R]
@@ -147344,7 +147344,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -153290,7 +153290,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -154376,7 +154376,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -155062,7 +155062,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1083 0 R 1084 0 R 1085 0 R 1087 0 R 1089 0 R]
@@ -155367,7 +155367,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1093 0 R 1095 0 R 1097 0 R]
@@ -155575,7 +155575,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1101 0 R]
@@ -156371,7 +156371,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1105 0 R 1108 0 R]
@@ -157349,7 +157349,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1113 0 R 1114 0 R]
@@ -158029,7 +158029,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1118 0 R 1120 0 R 1121 0 R 1122 0 R]
@@ -158782,7 +158782,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1126 0 R]
@@ -159418,7 +159418,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1133 0 R]
@@ -160222,7 +160222,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1137 0 R]
@@ -160785,7 +160785,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1142 0 R]
@@ -162344,7 +162344,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1149 0 R]
@@ -163088,7 +163088,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1153 0 R 1154 0 R 1155 0 R]
@@ -163256,7 +163256,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -164402,7 +164402,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -165680,7 +165680,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R]
@@ -166429,7 +166429,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -167280,7 +167280,7 @@ endobj
 /F1.1 40 0 R
 /F7.0 910 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1184 0 R]
@@ -167828,7 +167828,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R]
@@ -167839,12 +167839,12 @@ endobj
 endobj
 1188 0 obj
 << /Limits [(keysize.cf) (load-the-dataframe)]
-/Names [(keysize.cf) 1022 0 R (keysize.patterns) 1027 0 R (keysize.row) 1026 0 R (keyvalue) 1826 0 R (keyvalue.example) 1827 0 R (known-incompatibilities-among-hbase-versions) 4372 0 R (language-integrated-query) 2351 0 R (lb) 3168 0 R (life-of-a-wal-edit) 3264 0 R (limit-server-failure-impact) 1163 0 R (list-of-major-changes-for-hbase-2-0) 4376 0 R (load-the-dataframe) 2348 0 R]
+/Names [(keysize.cf) 1022 0 R (keysize.patterns) 1027 0 R (keysize.row) 1026 0 R (keyvalue) 1826 0 R (keyvalue.example) 1827 0 R (known-incompatibilities-among-hbase-versions) 4381 0 R (language-integrated-query) 2351 0 R (lb) 3168 0 R (life-of-a-wal-edit) 3264 0 R (limit-server-failure-impact) 1163 0 R (list-of-major-changes-for-hbase-2-0) 4385 0 R (load-the-dataframe) 2348 0 R]
 >>
 endobj
 1189 0 obj
 << /Limits [(multiple-typed-queues) (schema.updates)]
-/Kids [831 0 R 3924 0 R 1900 0 R 3394 0 R 3332 0 R 3034 0 R 1177 0 R 2607 0 R 2643 0 R 2513 0 R 2620 0 R 2472 0 R 366 0 R 3300 0 R 1626 0 R 3018 0 R 3770 0 R 908 0 R 3119 0 R 1132 0 R]
+/Kids [831 0 R 3933 0 R 1900 0 R 3394 0 R 3332 0 R 3034 0 R 1177 0 R 2607 0 R 2643 0 R 2513 0 R 2620 0 R 2472 0 R 366 0 R 3300 0 R 1626 0 R 3018 0 R 3770 0 R 908 0 R 3119 0 R 1132 0 R]
 >>
 endobj
 1190 0 obj
@@ -168918,7 +168918,7 @@ endobj
 /F3.0 35 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1199 0 R]
@@ -169545,7 +169545,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -169875,7 +169875,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -170628,7 +170628,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1206 0 R 1207 0 R]
@@ -171066,7 +171066,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1210 0 R]
@@ -171594,7 +171594,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1214 0 R 1215 0 R]
@@ -171908,7 +171908,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -172660,7 +172660,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R]
@@ -172897,7 +172897,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1234 0 R]
@@ -173206,7 +173206,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1238 0 R 1239 0 R 1240 0 R]
@@ -173458,7 +173458,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1246 0 R 1248 0 R]
@@ -176014,7 +176014,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1253 0 R]
@@ -178271,7 +178271,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1257 0 R]
@@ -180227,7 +180227,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -184228,7 +184228,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -186487,7 +186487,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -189942,7 +189942,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -191549,7 +191549,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -192713,7 +192713,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -192870,7 +192870,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1280 0 R]
@@ -196328,7 +196328,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1284 0 R]
@@ -196683,7 +196683,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1288 0 R 1289 0 R]
@@ -197302,7 +197302,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1293 0 R]
@@ -197892,7 +197892,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -198688,7 +198688,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -199536,7 +199536,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1302 0 R 1303 0 R 1306 0 R 1308 0 R]
@@ -200559,7 +200559,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -202518,7 +202518,7 @@ endobj
 /F3.0 35 0 R
 /F8.0 1314 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1315 0 R]
@@ -202531,11 +202531,11 @@ endobj
 << /Type /Font
 /BaseFont /294f18+mplus1mn-italic
 /Subtype /TrueType
-/FontDescriptor 5288 0 R
+/FontDescriptor 5297 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5290 0 R
-/ToUnicode 5289 0 R
+/Widths 5299 0 R
+/ToUnicode 5298 0 R
 >>
 endobj
 1315 0 obj
@@ -203599,7 +203599,7 @@ endobj
 /F1.1 40 0 R
 /F6.0 478 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R 1327 0 R 1328 0 R]
@@ -204861,7 +204861,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1331 0 R]
@@ -206116,7 +206116,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1335 0 R 1336 0 R 1337 0 R]
@@ -207158,7 +207158,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -207519,7 +207519,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1344 0 R 1345 0 R 1347 0 R 1348 0 R]
@@ -207577,7 +207577,7 @@ endobj
 endobj
 1351 0 obj
 << /Limits [(shell-tricks) (space-quotas)]
-/Names [(shell-tricks) 819 0 R (shell_exercises) 67 0 R (shortcircuit.reads) 1166 0 R (simple-versus-secure-access) 1346 0 R (slack) 3473 0 R (slowness-due-to-high-processor-usage) 3013 0 R (snappy.compression.installation) 4192 0 R (snapshot-errors-due-to-reverse-dns) 2912 0 R (snapshots_azure) 3367 0 R (snapshots_s3) 3360 0 R (space-quotas) 3315 0 R]
+/Names [(shell-tricks) 819 0 R (shell_exercises) 67 0 R (shortcircuit.reads) 1166 0 R (simple-versus-secure-access) 1346 0 R (slack) 3473 0 R (slowness-due-to-high-processor-usage) 3013 0 R (snappy.compression.installation) 4201 0 R (snapshot-errors-due-to-reverse-dns) 2912 0 R (snapshots_azure) 3367 0 R (snapshots_s3) 3360 0 R (space-quotas) 3315 0 R]
 >>
 endobj
 1352 0 obj
@@ -208675,7 +208675,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -209697,7 +209697,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1358 0 R 1360 0 R]
@@ -210464,7 +210464,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1365 0 R 1366 0 R 1367 0 R]
@@ -210802,7 +210802,7 @@ endobj
 /F4.0 37 0 R
 /F7.0 910 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1371 0 R]
@@ -211665,7 +211665,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1375 0 R 1377 0 R 1378 0 R]
@@ -212389,7 +212389,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1383 0 R]
@@ -213590,7 +213590,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -215193,7 +215193,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -216337,7 +216337,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1393 0 R 1395 0 R 1397 0 R 1398 0 R 1399 0 R]
@@ -217181,7 +217181,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -218376,7 +218376,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -219413,7 +219413,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -220135,7 +220135,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -220493,7 +220493,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -223726,7 +223726,7 @@ endobj
 /F4.0 37 0 R
 /F7.0 910 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -226577,7 +226577,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -229436,7 +229436,7 @@ endobj
 /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -230530,7 +230530,7 @@ endobj
 /F5.1 47 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1420 0 R 1421 0 R]
@@ -231367,7 +231367,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1425 0 R]
@@ -233482,7 +233482,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -235157,7 +235157,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 >>
@@ -236367,7 +236367,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 >>
@@ -239235,7 +239235,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1436 0 R 1437 0 R]
@@ -242209,7 +242209,7 @@ endobj
 /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4997 0 R
+/XObject << /Stamp1 5006 0 R
 >>
 >>
 /Annots [1441 0 R 1442 0 R 1443 0 R]
@@ -243094,7 +243094,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4998 0 R
+/XObject << /Stamp2 5007 0 R
 >>
 >>
 /Annots [1447 0 R]
@@ -243119,7 +243119,7 @@ endobj
 endobj
 1450 0 obj
 << /Limits [(hfi

<TRUNCATED>

[20/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html
new file mode 100644
index 0000000..e1924e8
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanOBBToOPP (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="TestTableInputFormatScanOBBToOPP (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanOBBToOPP.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/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanOBBToOPP" class="title">Class TestTableInputFormatScanOBBToOPP</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToOPP</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#line.29">TestTableInputFormatScanOBBToOPP</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanOBBToOPP.html#TestTableInputFormatScanOBBToOPP--">TestTableInputFormatScanOBBToOPP</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#testScanOBBToOPP--">testScanOBBToOPP</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#line.32">CLASS_RULE</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="TestTableInputFormatScanOBBToOPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanOBBToOPP</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#line.29">TestTableInputFormatScanOBBToOPP</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="testScanOBBToOPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanOBBToOPP</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html#line.39">testScanOBBToOPP</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>,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanOBBToOPP.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/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html
new file mode 100644
index 0000000..bea74fa
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanOBBToQPP (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="TestTableInputFormatScanOBBToQPP (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanOBBToQPP.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/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToQPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanOBBToQPP" class="title">Class TestTableInputFormatScanOBBToQPP</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToQPP</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#line.29">TestTableInputFormatScanOBBToQPP</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanOBBToQPP.html#TestTableInputFormatScanOBBToQPP--">TestTableInputFormatScanOBBToQPP</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#testScanOBBToQPP--">testScanOBBToQPP</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#line.32">CLASS_RULE</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="TestTableInputFormatScanOBBToQPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanOBBToQPP</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#line.29">TestTableInputFormatScanOBBToQPP</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="testScanOBBToQPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanOBBToQPP</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html#line.39">testScanOBBToQPP</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>,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanOBBToQPP.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/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToQPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html
new file mode 100644
index 0000000..1599daa
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanOPPToEmpty (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="TestTableInputFormatScanOPPToEmpty (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanOPPToEmpty.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/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOPPToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanOPPToEmpty" class="title">Class TestTableInputFormatScanOPPToEmpty</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOPPToEmpty</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#line.29">TestTableInputFormatScanOPPToEmpty</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanOPPToEmpty.html#TestTableInputFormatScanOPPToEmpty--">TestTableInputFormatScanOPPToEmpty</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#testScanOPPToEmpty--">testScanOPPToEmpty</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#line.32">CLASS_RULE</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="TestTableInputFormatScanOPPToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanOPPToEmpty</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#line.29">TestTableInputFormatScanOPPToEmpty</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="testScanOPPToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanOPPToEmpty</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html#line.39">testScanOPPToEmpty</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanOPPToEmpty.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/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOPPToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html
new file mode 100644
index 0000000..fda5bbc
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanYYXToEmpty (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="TestTableInputFormatScanYYXToEmpty (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanYYXToEmpty.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/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYXToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanYYXToEmpty" class="title">Class TestTableInputFormatScanYYXToEmpty</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYXToEmpty</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#line.29">TestTableInputFormatScanYYXToEmpty</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanYYXToEmpty.html#TestTableInputFormatScanYYXToEmpty--">TestTableInputFormatScanYYXToEmpty</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#testScanYYXToEmpty--">testScanYYXToEmpty</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#line.32">CLASS_RULE</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="TestTableInputFormatScanYYXToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanYYXToEmpty</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#line.29">TestTableInputFormatScanYYXToEmpty</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="testScanYYXToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanYYXToEmpty</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html#line.39">testScanYYXToEmpty</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanYYXToEmpty.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/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYXToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[15/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 2959980..ad372a2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -668,11 +668,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/06efc31c/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 4d297af..ec4ec49 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/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/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/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/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 5282059..fa9e769 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -141,9 +141,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 00f41b1..8553fde 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3664,8 +3664,18 @@
 <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>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan2</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToAPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToBBA</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToBBB</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToOPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOBBToOPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOBBToQPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOPPToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYYXToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYYYToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYZYToEmpty</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableMapReduceBase</span></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
index 61cc1cf..7c5f585 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.html
@@ -111,7 +111,12 @@
 <span class="sourceLineNo">103</span>  public int getActiveScanRpcHandlerCount() {<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    return 6;<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">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @Override<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public long getNettyDmUsage() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    return 100L;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>}<a name="line.111"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html
new file mode 100644
index 0000000..2276e0e
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html
@@ -0,0 +1,139 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, LargeTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScan extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScan.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific number of mappers. The test table has 26 regions,<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 testGetSplits() throws IOException, InterruptedException, ClassNotFoundException {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    testNumOfSplits(1, 26);<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testNumOfSplits(3, 78);<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * Runs a MR to test TIF using specific number of mappers. The test table has 26 regions,<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   */<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @Test<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public void testSpecifiedNumOfMappersMR()<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      throws InterruptedException, IOException, ClassNotFoundException {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    testNumOfSplitsMR(2, 52);<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    testNumOfSplitsMR(4, 104);<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  /**<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * Test if autoBalance create correct splits<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  @Test<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public void testAutoBalanceSplits() throws IOException {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    testAutobalanceNumOfSplit();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Test<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public void testScanFromConfiguration()<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    testScanFromConfiguration("bba", "bbd", "bbc");<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  }<a name="line.66"></a>
+<span class="sourceLineNo">067</span>}<a name="line.67"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
deleted file mode 100644
index a7c932b..0000000
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!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 java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * TestTableInputFormatScan part 1.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see TestTableInputFormatScanBase<a name="line.30"></a>
-<span class="sourceLineNo">031</span> */<a name="line.31"></a>
-<span class="sourceLineNo">032</span>@Category({VerySlowMapReduceTests.class, LargeTests.class})<a name="line.32"></a>
-<span class="sourceLineNo">033</span>public class TestTableInputFormatScan1 extends TestTableInputFormatScanBase {<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>  @ClassRule<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      HBaseClassTestRule.forClass(TestTableInputFormatScan1.class);<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  /**<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * Tests a MR scan using specific start and stop rows.<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   *<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   * @throws IOException<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * @throws ClassNotFoundException<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   * @throws InterruptedException<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  @Test<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  public void testScanEmptyToEmpty()<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    testScan(null, null, null);<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * Tests a MR scan using specific start and stop rows.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   *<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @throws IOException<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * @throws ClassNotFoundException<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @throws InterruptedException<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  @Test<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public void testScanEmptyToAPP()<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    testScan(null, "app", "apo");<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /**<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   * Tests a MR scan using specific start and stop rows.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>   *<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * @throws IOException<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * @throws ClassNotFoundException<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @throws InterruptedException<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  @Test<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public void testScanEmptyToBBA()<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    testScan(null, "bba", "baz");<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Tests a MR scan using specific start and stop rows.<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   *<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * @throws IOException<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @throws ClassNotFoundException<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * @throws InterruptedException<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   */<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @Test<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public void testScanEmptyToBBB()<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    testScan(null, "bbb", "bba");<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * Tests a MR scan using specific start and stop rows.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   *<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @throws IOException<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * @throws ClassNotFoundException<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @throws InterruptedException<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  @Test<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public void testScanEmptyToOPP()<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    testScan(null, "opp", "opo");<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * Tests a MR scan using specific number of mappers. The test table has 26 regions,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   *<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @throws IOException<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @throws ClassNotFoundException<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @throws InterruptedException<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  @Test<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void testGetSplits() throws IOException, InterruptedException, ClassNotFoundException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      testNumOfSplits(1, 26);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      testNumOfSplits(3, 78);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<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>   * Runs a MR to test TIF using specific number of mappers. The test table has 26 regions,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * @throws InterruptedException<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @throws IOException<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @throws ClassNotFoundException<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Test<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void testSpecifiedNumOfMappersMR()<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      throws InterruptedException, IOException, ClassNotFoundException {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    testNumOfSplitsMR(2, 52);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    testNumOfSplitsMR(4, 104);<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>   * Test if autoBalance create correct splits<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @throws IOException<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  @Test<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public void testAutoBalanceSplits() throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    testAutobalanceNumOfSplit();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>}<a name="line.139"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html
deleted file mode 100644
index 5c7f44b..0000000
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!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 java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * TestTableInputFormatScan part 2.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see TestTableInputFormatScanBase<a name="line.30"></a>
-<span class="sourceLineNo">031</span> */<a name="line.31"></a>
-<span class="sourceLineNo">032</span>@Category({VerySlowMapReduceTests.class, LargeTests.class})<a name="line.32"></a>
-<span class="sourceLineNo">033</span>public class TestTableInputFormatScan2 extends TestTableInputFormatScanBase {<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>  @ClassRule<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      HBaseClassTestRule.forClass(TestTableInputFormatScan2.class);<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  /**<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * Tests a MR scan using specific start and stop rows.<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   *<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   * @throws IOException<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * @throws ClassNotFoundException<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   * @throws InterruptedException<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  @Test<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  public void testScanOBBToOPP()<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    testScan("obb", "opp", "opo");<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * Tests a MR scan using specific start and stop rows.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   *<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @throws IOException<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * @throws ClassNotFoundException<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @throws InterruptedException<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  @Test<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public void testScanOBBToQPP()<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    testScan("obb", "qpp", "qpo");<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /**<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   * Tests a MR scan using specific start and stop rows.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>   *<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * @throws IOException<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * @throws ClassNotFoundException<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @throws InterruptedException<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  @Test<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public void testScanOPPToEmpty()<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    testScan("opp", null, "zzz");<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Tests a MR scan using specific start and stop rows.<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   *<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * @throws IOException<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @throws ClassNotFoundException<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * @throws InterruptedException<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   */<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @Test<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public void testScanYYXToEmpty()<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    testScan("yyx", null, "zzz");<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * Tests a MR scan using specific start and stop rows.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   *<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @throws IOException<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * @throws ClassNotFoundException<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @throws InterruptedException<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  @Test<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public void testScanYYYToEmpty()<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    testScan("yyy", null, "zzz");<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * Tests a MR scan using specific start and stop rows.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   *<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @throws IOException<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @throws ClassNotFoundException<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @throws InterruptedException<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  @Test<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public void testScanYZYToEmpty()<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    testScan("yzy", null, "zzz");<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  @Test<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public void testScanFromConfiguration()<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    testScanFromConfiguration("bba", "bbd", "bbc");<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>}<a name="line.122"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>


[03/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973<

<TRUNCATED>

[28/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index eec52bc..58b9ddc 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -281,10 +281,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3722</td>
+<td>3732</td>
 <td>0</td>
 <td>0</td>
-<td>15335</td></tr></table></div>
+<td>15240</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -4454,20 +4454,10 @@
 <td>0</td>
 <td>1</td></tr>
 <tr class="b">
-<td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>30</td></tr>
-<tr class="a">
-<td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>25</td></tr>
-<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>21</td></tr>
+<td>6</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableMapReduce.java">org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java</a></td>
 <td>0</td>
@@ -4859,4861 +4849,4856 @@
 <td>0</td>
 <td>1</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.master.assignment.TestRegionReplicaSplit.java">org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>3</td></tr>
-<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestRegionStates.java">org/apache/hadoop/hbase/master/assignment/TestRegionStates.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestSplitTableRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BalancerChore.java">org/apache/hadoop/hbase/master/balancer/BalancerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BalancerTestBase.java">org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>74</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterLoadState.java">org/apache/hadoop/hbase/master/balancer/ClusterLoadState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterStatusChore.java">org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer.java">org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.LoadBalancerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.RegionInfoComparator.java">org/apache/hadoop/hbase/master/balancer/RegionInfoComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.RegionLocationFinder.java">org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.SimpleLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestBaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestDefaultLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredNodeTableImport.java">org/apache/hadoop/hbase/master/balancer/TestFavoredNodeTableImport.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredStochasticBalancerPickers.java">org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestRegionsOnMasterOptions.java">org/apache/hadoop/hbase/master/balancer/TestRegionsOnMasterOptions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestStochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseFileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseFileCleanerDelegate.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseLogCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.CleanerChore.java">org/apache/hadoop/hbase/master/cleaner/CleanerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.FileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.HFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestCleanerChore.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestHFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestSnapshotFromMaster.java">org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.locking.LockManager.java">org/apache/hadoop/hbase/master/locking/LockManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.EmptyNormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/EmptyNormalizationPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/NormalizationPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.TestSimpleRegionNormalizerOnCluster.java">org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizerOnCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.CloneSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>34</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.EnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureSchedulerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureTestingUtility.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureDescriber.java">org/apache/hadoop/hbase/master/procedure/ProcedureDescriber.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch.java">org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait.java">org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>47</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.RestoreSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure.java">org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestDeleteColumnFamilyProcedureFromClient.java">org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestDeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterObserverPostCalls.java">org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureEvents.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureSchedulerConcurrency.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureSchedulerConcurrency.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureWalLease.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestSafemodeBringsDownMaster.java">org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestTableDDLProcedureBase.java">org/apache/hadoop/hbase/master/procedure/TestTableDDLProcedureBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestTableDescriptorModificationFromClient.java">org/apache/hadoop/hbase/master/procedure/TestTableDescriptorModificationFromClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestWALProcedureStoreOnHDFS.java">org/apache/hadoop/hbase/master/procedure/TestWALProcedureStoreOnHDFS.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.EnabledTableSnapshotHandler.java">org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.MasterSnapshotVerifier.java">org/apache/hadoop/hbase/master/snapshot/MasterSnapshotVerifier.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.SnapshotFileCache.java">org/apache/hadoop/hbase/master/snapshot/SnapshotFileCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.SnapshotHFileCleaner.java">org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.SnapshotManager.java">org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.TakeSnapshotHandler.java">org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.TestSnapshotHFileCleaner.java">org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.TestSnapshotManager.java">org/apache/hadoop/hbase/master/snapshot/TestSnapshotManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.CachedMobFile.java">org/apache/hadoop/hbase/mob/CachedMobFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor.java">org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.ExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/ExpiredMobFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.MobCacheConfig.java">org/apache/hadoop/hbase/mob/MobCacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.MobConstants.java">org/apache/hadoop/hbase/mob/MobConstants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.MobFile.java">org/apache/hadoop/hbase/mob/MobFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.MobFileCache.java">org/apache/hadoop/hbase/mob/MobFileCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.MobFileName.java">org/apache/hadoop/hbase/mob/MobFileName.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.MobTestUtil.java">org/apache/hadoop/hbase/mob/MobTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.TestDefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/TestDefaultMobStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.TestExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.MobCompactor.java">org/apache/hadoop/hbase/mob/compactions/MobCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactionRequest.java">org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactor.java">org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.TestMobCompactor.java">org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.TestPartitionedMobCompactor.java">org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.LogMonitoring.java">org/apache/hadoop/hbase/monitoring/LogMonitoring.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer.java">org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.MonitoredRPCHandlerImpl.java">org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.MonitoredTaskImpl.java">org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.StateDumpServlet.java">org/apache/hadoop/hbase/monitoring/StateDumpServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.TaskMonitor.java">org/apache/hadoop/hbase/monitoring/TaskMonitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.TestTaskMonitor.java">org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.ThreadMonitoring.java">org/apache/hadoop/hbase/monitoring/ThreadMonitoring.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mttr.IntegrationTestMTTR.java">org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.namespace.NamespaceStateManager.java">org/apache/hadoop/hbase/namespace/NamespaceStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo.java">org/apache/hadoop/hbase/namespace/NamespaceTableAndRegionInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <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>4</td></tr>
-<tr class="a">
+<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>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.net.TestAddress.java">org/apache/hadoop/hbase/net/TestAddress.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.nio.ByteBuff.java">org/apache/hadoop/hbase/nio/ByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.nio.MultiByteBuff.java">org/apache/hadoop/hbase/nio/MultiByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.nio.SingleByteBuff.java">org/apache/hadoop/hbase/nio/SingleByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.MasterProcedureManager.java">org/apache/hadoop/hbase/procedure/MasterProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.Procedure.java">org/apache/hadoop/hbase/procedure/Procedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/ProcedureCoordinator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs.java">org/apache/hadoop/hbase/procedure/ProcedureCoordinatorRpcs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureManagerHost.java">org/apache/hadoop/hbase/procedure/ProcedureManagerHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureMember.java">org/apache/hadoop/hbase/procedure/ProcedureMember.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs.java">org/apache/hadoop/hbase/procedure/ProcedureMemberRpcs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.RegionServerProcedureManager.java">org/apache/hadoop/hbase/procedure/RegionServerProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.SimpleRSProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleRSProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.Subprocedure.java">org/apache/hadoop/hbase/procedure/Subprocedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.TestProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.TestProcedureDescriber.java">org/apache/hadoop/hbase/procedure/TestProcedureDescriber.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.TestProcedureMember.java">org/apache/hadoop/hbase/procedure/TestProcedureMember.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.TestZKProcedure.java">org/apache/hadoop/hbase/procedure/TestZKProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.TestZKProcedureControllers.java">org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ZKProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/ZKProcedureCoordinator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs.java">org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/MasterFlushTableProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.flush.RegionServerFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/RegionServerFlushTableProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.AbstractProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.BadProcedureException.java">org/apache/hadoop/hbase/procedure2/BadProcedureException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.LockedResource.java">org/apache/hadoop/hbase/procedure2/LockedResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.Procedure.java">org/apache/hadoop/hbase/procedure2/Procedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureDeque.java">org/apache/hadoop/hbase/procedure2/ProcedureDeque.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureException.java">org/apache/hadoop/hbase/procedure2/ProcedureException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/ProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureTestingUtility.java">org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureUtil.java">org/apache/hadoop/hbase/procedure2/ProcedureUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.RemoteProcedureException.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.RootProcedureState.java">org/apache/hadoop/hbase/procedure2/RootProcedureState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.StateMachineProcedure.java">org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureExecution.java">org/apache/hadoop/hbase/procedure2/TestProcedureExecution.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureMetrics.java">org/apache/hadoop/hbase/procedure2/TestProcedureMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureNonce.java">org/apache/hadoop/hbase/procedure2/TestProcedureNonce.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureRecovery.java">org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureReplayOrder.java">org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureSchedulerConcurrency.java">org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureSuspended.java">org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureToString.java">org/apache/hadoop/hbase/procedure2/TestProcedureToString.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestStateMachineProcedure.java">org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.TestYieldProcedures.java">org/apache/hadoop/hbase/procedure2/TestYieldProcedures.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreBase.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStoreBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.TestProcedureStoreTracker.java">org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFile.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormat.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormatReader.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALLoaderPerformanceEvaluation.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALLoaderPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALPerformanceEvaluation.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALPrettyPrinter.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.TestStressWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestStressWALProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.TestWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.util.DelayedUtil.java">org/apache/hadoop/hbase/procedure2/util/DelayedUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.util.StringUtils.java">org/apache/hadoop/hbase/procedure2/util/StringUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufMagic.java">org/apache/hadoop/hbase/protobuf/ProtobufMagic.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufMessageConverter.java">org/apache/hadoop/hbase/protobuf/ProtobufMessageConverter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>115</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtbufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.protobuf.TestProtobufUtil.java">org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.protobuf.TestReplicationProtobuf.java">org/apache/hadoop/hbase/protobuf/TestReplicationProtobuf.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement.java">org/apache/hadoop/hbase/quotas/ActivePolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.AverageIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/AverageIntervalRateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.FixedIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/FixedIntervalRateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.GlobalQuotaSettings.java">org/apache/hadoop/hbase/quotas/GlobalQuotaSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.GlobalQuotaSettingsImpl.java">org/apache/hadoop/hbase/quotas/GlobalQuotaSettingsImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.NamespaceQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/NamespaceQuotaSnapshotStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.NoopOperationQuota.java">org/apache/hadoop/hbase/quotas/NoopOperationQuota.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.NoopQuotaLimiter.java">org/apache/hadoop/hbase/quotas/NoopQuotaLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.OperationQuota.java">org/apache/hadoop/hbase/quotas/OperationQuota.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaCache.java">org/apache/hadoop/hbase/quotas/QuotaCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaLimiter.java">org/apache/hadoop/hbase/quotas/QuotaLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaLimiterFactory.java">org/apache/hadoop/hbase/quotas/QuotaLimiterFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaObserverChore.java">org/apache/hadoop/hbase/quotas/QuotaObserverChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaRetriever.java">org/apache/hadoop/hbase/quotas/QuotaRetriever.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaSettings.java">org/apache/hadoop/hbase/quotas/QuotaSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaSettingsFactory.java">org/apache/hadoop/hbase/quotas/QuotaSettingsFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaState.java">org/apache/hadoop/hbase/quotas/QuotaState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaTableUtil.java">org/apache/hadoop/hbase/quotas/QuotaTableUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaUtil.java">org/apache/hadoop/hbase/quotas/QuotaUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.RateLimiter.java">org/apache/hadoop/hbase/quotas/RateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerSpaceQuotaManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceLimitSettings.java">org/apache/hadoop/hbase/quotas/SpaceLimitSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaRefresherChore.java">org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierForTest.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierForTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TableQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/TableQuotaSnapshotStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestFileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestNamespaceQuotaViolationStore.java">org/apache/hadoop/hbase/quotas/TestNamespaceQuotaViolationStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaFilter.java">org/apache/hadoop/hbase/quotas/TestQuotaFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaObserverChoreWithMiniCluster.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreWithMiniCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaSettingsFactory.java">org/apache/hadoop/hbase/quotas/TestQuotaSettingsFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaStatusRPCs.java">org/apache/hadoop/hbase/quotas/TestQuotaStatusRPCs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaThrottle.java">org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestRateLimiter.java">org/apache/hadoop/hbase/quotas/TestRateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestSpaceQuotas.java">org/apache/hadoop/hbase/quotas/TestSpaceQuotas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestTableQuotaViolationStore.java">org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestTablesWithQuotas.java">org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.ThrottleSettings.java">org/apache/hadoop/hbase/quotas/ThrottleSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TimeBasedLimiter.java">org/apache/hadoop/hbase/quotas/TimeBasedLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.UserQuotaState.java">org/apache/hadoop/hbase/quotas/UserQuotaState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.BaseViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/BaseViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.DefaultViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/DefaultViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.DisableTableViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/DisableTableViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.NoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoInsertsViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.NoWritesCompactionsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoWritesCompactionsViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.NoWritesViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoWritesViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.TestBulkLoadCheckingViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestBulkLoadCheckingViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AbstractMemStore.java">org/apache/hadoop/hbase/regionserver/AbstractMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AbstractMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/AbstractMultiFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AbstractTestDateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/AbstractTestDateTieredCompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AnnotationReadingPriorityFunction.java">org/apache/hadoop/hbase/regionserver/AnnotationReadingPriorityFunction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.BaseRowProcessor.java">org/apache/hadoop/hbase/regionserver/BaseRowProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.BusyRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/BusyRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ByteBufferChunkKeyValue.java">org/apache/hadoop/hbase/regionserver/ByteBufferChunkKeyValue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellArrayImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellArrayMap.java">org/apache/hadoop/hbase/regionserver/CellArrayMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellChunkMap.java">org/apache/hadoop/hbase/regionserver/CellChunkMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellFlatMap.java">org/apache/hadoop/hbase/regionserver/CellFlatMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellSink.java">org/apache/hadoop/hbase/regionserver/CellSink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ChangedReadersObserver.java">org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Chunk.java">org/apache/hadoop/hbase/regionserver/Chunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ChunkCreator.java">org/apache/hadoop/hbase/regionserver/ChunkCreator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactSplit.java">org/apache/hadoop/hbase/regionserver/CompactSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactedHFilesDischargeHandler.java">org/apache/hadoop/hbase/regionserver/CompactedHFilesDischargeHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactedHFilesDischarger.java">org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactingMemStore.java">org/apache/hadoop/hbase/regionserver/CompactingMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactionPipeline.java">org/apache/hadoop/hbase/regionserver/CompactionPipeline.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactionTool.java">org/apache/hadoop/hbase/regionserver/CompactionTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompositeImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.java">org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DefaultHeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DefaultMemStore.java">org/apache/hadoop/hbase/regionserver/DefaultMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher.java">org/apache/hadoop/hbase/regionserver/DefaultStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DelegatingKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DisabledRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FavoredNodesForRegion.java">org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FifoRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/FifoRpcSchedulerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushPolicyFactory.java">org/apache/hadoop/hbase/regionserver/FlushPolicyFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushRequestListener.java">org/apache/hadoop/hbase/regionserver/FlushRequestListener.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushRequester.java">org/apache/hadoop/hbase/regionserver/FlushRequester.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HMobStore.java">org/apache/hadoop/hbase/regionserver/HMobStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegion.java">org/apache/hadoop/hbase/regionserver/HRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>213</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionFileSystem.java">org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>47</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionServer.java">org/apache/hadoop/hbase/regionserver/HRegionServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>75</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.java">org/apache/hadoop/hbase/regionserver/HRegionServerCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HStore.java">org/apache/hadoop/hbase/regionserver/HStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>43</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HStoreFile.java">org/apache/hadoop/hbase/regionserver/HStoreFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HeapMemoryManager.java">org/apache/hadoop/hbase/regionserver/HeapMemoryManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/HeapMemoryTuner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ImmutableSegment.java">org/apache/hadoop/hbase/regionserver/ImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.InternalScan.java">org/apache/hadoop/hbase/regionserver/InternalScan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.InternalScanner.java">org/apache/hadoop/hbase/regionserver/InternalScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.KeyValueHeap.java">org/apache/hadoop/hbase/regionserver/KeyValueHeap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.KeyValueScanner.java">org/apache/hadoop/hbase/regionserver/KeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.LeaseException.java">org/apache/hadoop/hbase/regionserver/LeaseException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Leases.java">org/apache/hadoop/hbase/regionserver/Leases.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.LogRoller.java">org/apache/hadoop/hbase/regionserver/LogRoller.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStore.java">org/apache/hadoop/hbase/regionserver/MemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreCompactor.java">org/apache/hadoop/hbase/regionserver/MemStoreCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreFlusher.java">org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreLAB.java">org/apache/hadoop/hbase/regionserver/MemStoreLAB.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.java">org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreMergerSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreSnapshot.java">org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegion.java">org/apache/hadoop/hbase/regionserver/MetricsRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServer.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperStub.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTable.java">org/apache/hadoop/hbase/regionserver/MetricsTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableSource.java">org/apache/hadoop/hbase/regionserver/MetricsTableSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableWrapperAggregateImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableWrapperStub.java">org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress.java">org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MobReferenceOnlyFilter.java">org/apache/hadoop/hbase/regionserver/MobReferenceOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.java">org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MutableOnlineRegions.java">org/apache/hadoop/hbase/regionserver/MutableOnlineRegions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MutableSegment.java">org/apache/hadoop/hbase/regionserver/MutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.NoTagByteBufferChunkKeyValue.java">org/apache/hadoop/hbase/regionserver/NoTagByteBufferChunkKeyValue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.NonLazyKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/NonReversedNonLazyKeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.OOMERegionServer.java">org/apache/hadoop/hbase/regionserver/OOMERegionServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.OnlineRegions.java">org/apache/hadoop/hbase/regionserver/OnlineRegions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.OperationStatus.java">org/apache/hadoop/hbase/regionserver/OperationStatus.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RSDumpServlet.java">org/apache/hadoop/hbase/regionserver/RSDumpServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RSRpcServices.java">org/apache/hadoop/hbase/regionserver/RSRpcServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>65</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RSStatusServlet.java">org/apache/hadoop/hbase/regionserver/RSStatusServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Region.java">org/apache/hadoop/hbase/regionserver/Region.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionAsTable.java">org/apache/hadoop/hbase/regionserver/RegionAsTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>79</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionScanner.java">org/apache/hadoop/hbase/regionserver/RegionScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerAccounting.java">org/apache/hadoop/hbase/regionserver/RegionServerAccounting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerServices.java">org/apache/hadoop/hbase/regionserver/RegionServerServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServicesForStores.java">org/apache/hadoop/hbase/regionserver/RegionServicesForStores.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReplicationSinkService.java">org/apache/hadoop/hbase/regionserver/ReplicationSinkService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReversedKeyValueHeap.java">org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReversedRegionScannerImpl.java">org/apache/hadoop/hbase/regionserver/ReversedRegionScannerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RowProcessor.java">org/apache/hadoop/hbase/regionserver/RowProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/RpcSchedulerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanInfo.java">org/apache/hadoop/hbase/regionserver/ScanInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanOptions.java">org/apache/hadoop/hbase/regionserver/ScanOptions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScannerIdGenerator.java">org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Segment.java">org/apache/hadoop/hbase/regionserver/Segment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SegmentFactory.java">org/apache/hadoop/hbase/regionserver/SegmentFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SegmentScanner.java">org/apache/hadoop/hbase/regionserver/SegmentScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ShipperListener.java">org/apache/hadoop/hbase/regionserver/ShipperListener.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ShutdownHook.java">org/apache/hadoop/hbase/regionserver/ShutdownHook.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SplitRequest.java">org/apache/hadoop/hbase/regionserver/SplitRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy.java">org/apache/hadoop/hbase/regionserver/SteppingSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Store.java">org/apache/hadoop/hbase/regionserver/Store.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileComparators.java">org/apache/hadoop/hbase/regionserver/StoreFileComparators.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileManager.java">org/apache/hadoop/hbase/regionserver/StoreFileManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileReader.java">org/apache/hadoop/hbase/regionserver/StoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StorefileRefresherChore.java">org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreConfig.java">org/apache/hadoop/hbase/regionserver/StripeStoreConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreEngine.java">org/apache/hadoop/hbase/regionserver/StripeStoreEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreFileManager.java">org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreFlusher.java">org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.java">org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestBlocksRead.java">org/apache/hadoop/hbase/regionserver/TestBlocksRead.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestBlocksScanned.java">org/apache/hadoop/hbase/regionserver/TestBlocksScanned.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestBulkLoad.java">org/apache/hadoop/hbase/regionserver/TestBulkLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCacheOnWriteInSchema.java">org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCellFlatSet.java">org/apache/hadoop/hbase/regionserver/TestCellFlatSet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCellSkipListSet.java">org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestClearRegionBlockCache.java">org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestColumnSeeking.java">org/apache/hadoop/hbase/regionserver/TestColumnSeeking.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactSplitThread.java">org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactingMemStore.java">org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactingToCellFlatMapMemStore.java">org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCompaction.java">org/apache/hadoop/hbase/regionserver/TestCompaction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactionState.java">org/apache/hadoop/hbase/regionserver/TestCompactionState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestCompoundBloomFilter.java">org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestDateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestDateTieredCompactionPolicyOverflow.java">org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestDefaultMemStore.java">org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestDeleteMobTable.java">org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction.java">org/apache/hadoop/hb

<TRUNCATED>

[29/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 0b5e82b..e416b41 100644
--- a/book.html
+++ b/book.html
@@ -13837,7 +13837,7 @@ All options have been discussed separately in the sections above.</p>
 <span class="comment">&lt;!-- HBase Superuser --&gt;</span>
 <span class="tag">&lt;property&gt;</span>
   <span class="tag">&lt;name&gt;</span>hbase.superuser<span class="tag">&lt;/name&gt;</span>
-  <span class="tag">&lt;value&gt;</span>hbase, admin<span class="tag">&lt;/value&gt;</span>
+  <span class="tag">&lt;value&gt;</span>hbase,admin<span class="tag">&lt;/value&gt;</span>
 <span class="tag">&lt;/property&gt;</span>
 <span class="comment">&lt;!-- Coprocessors for ACLs and Visibility Tags --&gt;</span>
 <span class="tag">&lt;property&gt;</span>
@@ -13857,8 +13857,7 @@ All options have been discussed separately in the sections above.</p>
 <span class="tag">&lt;/property&gt;</span>
 <span class="tag">&lt;property&gt;</span>
   <span class="tag">&lt;name&gt;</span>hbase.coprocessor.regionserver.classes<span class="tag">&lt;/name&gt;</span>
-  <span class="tag">&lt;value&gt;</span>org.apache.hadoop/hbase.security.access.AccessController,
-  org.apache.hadoop.hbase.security.access.VisibilityController<span class="tag">&lt;/value&gt;</span>
+  <span class="tag">&lt;value&gt;</span>org.apache.hadoop.hbase.security.access.AccessController<span class="tag">&lt;/value&gt;</span>
 <span class="tag">&lt;/property&gt;</span>
 <span class="comment">&lt;!-- Executable ACL for Coprocessor Endpoints --&gt;</span>
 <span class="tag">&lt;property&gt;</span>
@@ -33842,9 +33841,104 @@ This attaches the ReviewBoard to the JIRA, for easy access.</p>
 <div class="sect3">
 <h4 id="_guide_for_hbase_committers"><a class="anchor" href="#_guide_for_hbase_committers"></a>173.7.5. Guide for HBase Committers</h4>
 <div class="sect4">
+<h5 id="_becoming_a_committer"><a class="anchor" href="#_becoming_a_committer"></a>Becoming a committer</h5>
+<div class="paragraph">
+<p>Committers are responsible for reviewing and integrating code changes, testing
+and voting on release candidates, weighing in on design discussions, as well as
+other types of project contributions. The PMC votes to make a contributor a
+committer based on an assessment of their contributions to the project. It is
+expected that committers demonstrate a sustained history of high-quality
+contributions to the project and community involvement.</p>
+</div>
+<div class="paragraph">
+<p>Contributions can be made in many ways. There is no single path to becoming a
+committer, nor any expected timeline. Submitting features, improvements, and bug
+fixes is the most common avenue, but other methods are both recognized and
+encouraged (and may be even more important to the health of HBase as a project and a
+community). A non-exhaustive list of potential contributions (in no particular
+order):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#appendix_contributing_to_documentation">Update the documentation</a> for new
+changes, best practices, recipes, and other improvements.</p>
+</li>
+<li>
+<p>Keep the website up to date.</p>
+</li>
+<li>
+<p>Perform testing and report the results. For instance, scale testing and
+testing non-standard configurations is always appreciated.</p>
+</li>
+<li>
+<p>Maintain the shared Jenkins testing environment and other testing
+infrastructure.</p>
+</li>
+<li>
+<p><a href="#hbase.rc.voting">Vote on release candidates</a> after performing validation, even if non-binding.
+A non-binding vote is a vote by a non-committer.</p>
+</li>
+<li>
+<p>Provide input for discussion threads on the <a href="/mail-lists.html">mailing lists</a> (which usually have
+<code>[DISCUSS]</code> in the subject line).</p>
+</li>
+<li>
+<p>Answer questions questions on the user or developer mailing lists and on
+Slack.</p>
+</li>
+<li>
+<p>Make sure the HBase community is a welcoming one and that we adhere to our
+<a href="/coc.html">Code of conduct</a>. Alert the PMC if you
+have concerns.</p>
+</li>
+<li>
+<p>Review other people&#8217;s work (both code and non-code) and provide public
+feedback.</p>
+</li>
+<li>
+<p>Report bugs that are found, or file new feature requests.</p>
+</li>
+<li>
+<p>Triage issues and keep JIRA organized. This includes closing stale issues,
+labeling new issues, updating metadata, and other tasks as needed.</p>
+</li>
+<li>
+<p>Mentor new contributors of all sorts.</p>
+</li>
+<li>
+<p>Give talks and write blogs about HBase. Add these to the <a href="/">News</a> section
+of the website.</p>
+</li>
+<li>
+<p>Provide UX feedback about HBase, the web UI, the CLI, APIs, and the website.</p>
+</li>
+<li>
+<p>Write demo applications and scripts.</p>
+</li>
+<li>
+<p>Help attract and retain a diverse community.</p>
+</li>
+<li>
+<p>Interact with other projects in ways that benefit HBase and those other
+projects.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Not every individual is able to do all (or even any) of the items on this list.
+If you think of other ways to contribute, go for it (and add them to the list).
+A pleasant demeanor and willingness to contribute are all you need to make a
+positive impact on the HBase project. Invitations to become a committer are the
+result of steady interaction with the community over the long term, which builds
+trust and recognition.</p>
+</div>
+</div>
+<div class="sect4">
 <h5 id="_new_committers"><a class="anchor" href="#_new_committers"></a>New committers</h5>
 <div class="paragraph">
-<p>New committers are encouraged to first read Apache&#8217;s generic committer documentation:</p>
+<p>New committers are encouraged to first read Apache&#8217;s generic committer
+documentation:</p>
 </div>
 <div class="ulist">
 <ul>
@@ -33860,25 +33954,38 @@ This attaches the ReviewBoard to the JIRA, for easy access.</p>
 <div class="sect4">
 <h5 id="_review"><a class="anchor" href="#_review"></a>Review</h5>
 <div class="paragraph">
-<p>HBase committers should, as often as possible, attempt to review patches submitted by others.
-Ideally every submitted patch will get reviewed by a committer <em>within a few days</em>.
-If a committer reviews a patch they have not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected.</p>
+<p>HBase committers should, as often as possible, attempt to review patches
+submitted by others. Ideally every submitted patch will get reviewed by a
+committer <em>within a few days</em>. If a committer reviews a patch they have not
+authored, and believe it to be of sufficient quality, then they can commit the
+patch. Otherwise the patch should be cancelled with a clear explanation for why
+it was rejected.</p>
 </div>
 <div class="paragraph">
-<p>The list of submitted patches is in the <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&amp;requestId=12312392">HBase Review Queue</a>, which is ordered by time of last modification.
-Committers should scan the list from top to bottom, looking for patches that they feel qualified to review and possibly commit.</p>
+<p>The list of submitted patches is in the
+<a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&amp;requestId=12312392">HBase Review Queue</a>,
+which is ordered by time of last modification. Committers should scan the list
+from top to bottom, looking for patches that they feel qualified to review and
+possibly commit. If you see a patch you think someone else is better qualified
+to review, you can mention them by username in the JIRA.</p>
 </div>
 <div class="paragraph">
-<p>For non-trivial changes, it is required to get another committer to review your own patches before commit.
-Use the <b class="button">Submit Patch</b>                        button in JIRA, just like other contributors, and then wait for a <code>+1</code> response from another committer before committing.</p>
+<p>For non-trivial changes, it is required that another committer review your
+patches before commit. <strong>Self-commits of non-trivial patches are not allowed.</strong>
+Use the <b class="button">Submit Patch</b> button in JIRA, just like other contributors, and
+then wait for a <code>+1</code> response from another committer before committing.</p>
 </div>
 </div>
 <div class="sect4">
 <h5 id="_reject"><a class="anchor" href="#_reject"></a>Reject</h5>
 <div class="paragraph">
-<p>Patches which do not adhere to the guidelines in <a href="https://hbase.apache.org/book.html#developer">HowToContribute</a> and to the <a href="https://wiki.apache.org/hadoop/CodeReviewChecklist">code review checklist</a> should be rejected.
-Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches.
-If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review.</p>
+<p>Patches which do not adhere to the guidelines in
+<a href="https://hbase.apache.org/book.html#developer">HowToContribute</a> and to the
+<a href="https://wiki.apache.org/hadoop/CodeReviewChecklist">code review checklist</a>
+should be rejected. Committers should always be polite to contributors and try
+to instruct and encourage them to contribute better patches. If a committer
+wishes to improve an unacceptable patch, then it should first be rejected, and a
+new patch should be attached by the committer for further review.</p>
 </div>
 </div>
 <div class="sect4">
@@ -33896,31 +34003,35 @@ If a committer wishes to improve an unacceptable patch, then it should first be
 <div class="title">Before you commit!!!!</div>
 <div class="paragraph">
 <p>Make sure your local configuration is correct, especially your identity and email.
-Examine the output of the $ git config
-                                --list command and be sure it is correct.
-See this GitHub article, <a href="https://help.github.com/articles/set-up-git">Set Up Git</a> if you need pointers.</p>
+Examine the output of the $ git config --list command and be sure it is correct.
+See <a href="https://help.github.com/articles/set-up-git">Set Up Git</a> if you need
+pointers.</p>
 </div>
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
-<p>When you commit a patch, please:</p>
+<p>When you commit a patch:</p>
 </div>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
-<p>Include the Jira issue id in the commit message along with a short description of the change. Try
-to add something more than just the Jira title so that someone looking at git log doesn&#8217;t
-have to go to Jira to discern what the change is about.
-Be sure to get the issue ID right, as this causes Jira to link to the change in Git (use the
-issue&#8217;s "All" tab to see these).</p>
-</li>
-<li>
-<p>Commit the patch to a new branch based off master or other intended branch.
-It&#8217;s a good idea to call this branch by the JIRA ID.
-Then check out the relevant target branch where you want to commit, make sure your local branch has all remote changes, by doing a git pull --rebase or another similar command, cherry-pick the change into each relevant branch (such as master), and do git push &lt;remote-server&gt;
-&lt;remote-branch&gt;.</p>
+<p>Include the Jira issue ID in the commit message along with a short description
+of the change. Try to add something more than just the Jira title so that
+someone looking at <code>git log</code> output doesn&#8217;t have to go to Jira to discern what
+the change is about. Be sure to get the issue ID right, because this causes
+Jira to link to the change in Git (use the issue&#8217;s "All" tab to see these
+automatic links).</p>
+</li>
+<li>
+<p>Commit the patch to a new branch based off <code>master</code> or the other intended
+branch. It&#8217;s a good idea to include the JIRA ID in the name of this branch.
+Check out the relevant target branch where you want to commit, and make sure
+your local branch has all remote changes, by doing a git pull --rebase or
+another similar command. Next, cherry-pick the change into each relevant
+branch (such as master), and push the changes to the remote branch using
+a command such as git push &lt;remote-server&gt; &lt;remote-branch&gt;.</p>
 <div class="admonitionblock warning">
 <table>
 <tr>
@@ -33937,7 +34048,8 @@ Do not do a git push --force.
 </div>
 <div class="paragraph">
 <p>Before you can commit a patch, you need to determine how the patch was created.
-The instructions and preferences around the way to create patches have changed, and there will be a transition period.</p>
+The instructions and preferences around the way to create patches have changed,
+and there will be a transition period.</p>
 </div>
 <div class="ulist">
 <div class="title">Determine How a Patch Was Created</div>
@@ -33975,18 +34087,20 @@ below.</p>
 <div class="title">Example 43. Example of committing a Patch</div>
 <div class="content">
 <div class="paragraph">
-<p>One thing you will notice with these examples is that there are a lot of git pull commands.
-The only command that actually writes anything to the remote repository is git push, and you need to make absolutely sure you have the correct versions of everything and don&#8217;t have any conflicts before pushing.
-The extra git
-                                        pull commands are usually redundant, but better safe than sorry.</p>
+<p>One thing you will notice with these examples is that there are a lot of
+git pull commands. The only command that actually writes anything to the
+remote repository is git push, and you need to make absolutely sure you have
+the correct versions of everything and don&#8217;t have any conflicts before pushing.
+The extra git pull commands are usually redundant, but better safe than sorry.</p>
 </div>
 <div class="paragraph">
-<p>The first example shows how to apply a patch that was generated with git format-patch and apply it to the <code>master</code> and <code>branch-1</code> branches.</p>
+<p>The first example shows how to apply a patch that was generated with git
+format-patch and apply it to the <code>master</code> and <code>branch-1</code> branches.</p>
 </div>
 <div class="paragraph">
-<p>The directive to use git format-patch                                    rather than git diff, and not to use <code>--no-prefix</code>, is a new one.
-See the second example for how to apply a patch created with git
-                                        diff, and educate the person who created the patch.</p>
+<p>The directive to use git format-patch rather than git diff, and not to use
+<code>--no-prefix</code>, is a new one. See the second example for how to apply a patch
+created with git diff, and educate the person who created the patch.</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -34010,14 +34124,14 @@ $ git branch -D HBASE-XXXX</pre>
 </div>
 </div>
 <div class="paragraph">
-<p>This example shows how to commit a patch that was created using git diff without <code>--no-prefix</code>.
-If the patch was created with <code>--no-prefix</code>, add <code>-p0</code> to the git apply command.</p>
+<p>This example shows how to commit a patch that was created using git diff
+without <code>--no-prefix</code>. If the patch was created with <code>--no-prefix</code>, add <code>-p0</code> to
+the git apply command.</p>
 </div>
 <div class="listingblock">
 <div class="content">
 <pre>$ git apply ~/Downloads/HBASE-XXXX-v2.patch
-$ git commit -m "HBASE-XXXX Really Good Code Fix (Joe Schmo)" --author=&lt;contributor&gt; -a  # This
-and next command is needed for patches created with 'git diff'
+$ git commit -m "HBASE-XXXX Really Good Code Fix (Joe Schmo)" --author=&lt;contributor&gt; -a  # This and next command is needed for patches created with 'git diff'
 $ git commit --amend --signoff
 $ git checkout master
 $ git pull --rebase
@@ -34041,7 +34155,9 @@ $ git branch -D HBASE-XXXX</pre>
 </li>
 <li>
 <p>Resolve the issue as fixed, thanking the contributor.
-Always set the "Fix Version" at this point, but please only set a single fix version for each branch where the change was committed, the earliest release in that branch in which the change will appear.</p>
+Always set the "Fix Version" at this point, but only set a single fix version
+for each branch where the change was committed, the earliest release in that
+branch in which the change will appear.</p>
 </li>
 </ol>
 </div>
@@ -34062,7 +34178,9 @@ The preferred commit message format is:</p>
 </div>
 </div>
 <div class="paragraph">
-<p>If the contributor used git format-patch to generate the patch, their commit message is in their patch and you can use that, but be sure the JIRA ID is at the front of the commit message, even if the contributor left it out.</p>
+<p>If the contributor used git format-patch to generate the patch, their commit
+message is in their patch and you can use that, but be sure the JIRA ID is at
+the front of the commit message, even if the contributor left it out.</p>
 </div>
 </div>
 <div class="sect5">
@@ -41151,7 +41269,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-09-05 14:32:41 UTC
+Last updated 2018-09-06 14:33:00 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index daf6361..d55dc11 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -306,7 +306,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 


[26/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
index 711dbe2..a28edaf 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.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";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.25">MetricsHBaseServerWrapperImpl</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.26">MetricsHBaseServerWrapperImpl</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 <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></pre>
 </li>
@@ -205,41 +205,45 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 </tr>
 <tr id="i8" class="altColor">
 <td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNettyDmUsage--">getNettyDmUsage</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNumOpenConnections--">getNumOpenConnections</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getPriorityQueueLength--">getPriorityQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getReadQueueLength--">getReadQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getReplicationQueueLength--">getReplicationQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getScanQueueLength--">getScanQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getTotalQueueSize--">getTotalQueueSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getWriteQueueLength--">getWriteQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#isServerStarted--">isServerStarted</a></span>()</code>&nbsp;</td>
 </tr>
@@ -271,7 +275,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>server</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.27">server</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.28">server</a></pre>
 </li>
 </ul>
 </li>
@@ -288,7 +292,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsHBaseServerWrapperImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.29">MetricsHBaseServerWrapperImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a>&nbsp;server)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.30">MetricsHBaseServerWrapperImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a>&nbsp;server)</pre>
 </li>
 </ul>
 </li>
@@ -305,7 +309,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>isServerStarted</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.33">isServerStarted</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.34">isServerStarted</a>()</pre>
 </li>
 </ul>
 <a name="getTotalQueueSize--">
@@ -314,7 +318,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalQueueSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.38">getTotalQueueSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.39">getTotalQueueSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getTotalQueueSize--">getTotalQueueSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -327,7 +331,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getGeneralQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.46">getGeneralQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.47">getGeneralQueueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getGeneralQueueLength--">getGeneralQueueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -340,7 +344,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.54">getReplicationQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.55">getReplicationQueueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getReplicationQueueLength--">getReplicationQueueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -353,7 +357,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriorityQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.62">getPriorityQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.63">getPriorityQueueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getPriorityQueueLength--">getPriorityQueueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -366,7 +370,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumOpenConnections</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.70">getNumOpenConnections</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.71">getNumOpenConnections</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumOpenConnections--">getNumOpenConnections</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -379,7 +383,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.78">getActiveRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.79">getActiveRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActiveRpcHandlerCount--">getActiveRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -392,7 +396,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveGeneralRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.86">getActiveGeneralRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.87">getActiveGeneralRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActiveGeneralRpcHandlerCount--">getActiveGeneralRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -405,7 +409,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getActivePriorityRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.94">getActivePriorityRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.95">getActivePriorityRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActivePriorityRpcHandlerCount--">getActivePriorityRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -418,7 +422,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveReplicationRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.102">getActiveReplicationRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.103">getActiveReplicationRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActiveReplicationRpcHandlerCount--">getActiveReplicationRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -431,7 +435,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumGeneralCallsDropped</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.110">getNumGeneralCallsDropped</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.111">getNumGeneralCallsDropped</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -444,7 +448,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumLifoModeSwitches</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.118">getNumLifoModeSwitches</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.119">getNumLifoModeSwitches</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -457,7 +461,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.126">getWriteQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.127">getWriteQueueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getWriteQueueLength--">getWriteQueueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -470,7 +474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.134">getReadQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.135">getReadQueueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getReadQueueLength--">getReadQueueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -483,7 +487,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.142">getScanQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.143">getScanQueueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getScanQueueLength--">getScanQueueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -496,7 +500,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveWriteRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.150">getActiveWriteRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.151">getActiveWriteRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActiveWriteRpcHandlerCount--">getActiveWriteRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -509,7 +513,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveReadRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.158">getActiveReadRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.159">getActiveReadRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActiveReadRpcHandlerCount--">getActiveReadRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
@@ -519,16 +523,29 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <a name="getActiveScanRpcHandlerCount--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getActiveScanRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.166">getActiveScanRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.167">getActiveScanRpcHandlerCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getActiveScanRpcHandlerCount--">getActiveScanRpcHandlerCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
 </dl>
 </li>
 </ul>
+<a name="getNettyDmUsage--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNettyDmUsage</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#line.175">getNettyDmUsage</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNettyDmUsage--">getNettyDmUsage</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index 7557e4f..c12ae36 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -353,9 +353,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 b11f6ad..bd6fd7e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,10 +293,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/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/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/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/06efc31c/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index abd92a9..1799704 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -198,8 +198,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 e2b3df5..95ff204 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -347,11 +347,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/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/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/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/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/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.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 e392df8..d3f7afa 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,10 +216,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</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/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</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/06efc31c/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 e60465d..1f0f52c 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -437,19 +437,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 f1d43e5..6dc26a1 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -216,11 +216,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</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/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</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/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 044ebf5..9b9432f 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -230,12 +230,12 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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/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/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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 927d63e..679b5d5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -709,20 +709,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 23060c2..2731576 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,9 +130,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 46651a5..19354d1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,8 +247,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</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>
 <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>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index 30c4e73..cd3870f 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -207,8 +207,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 29d7634..7ba3a64 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/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/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/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/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 03e1383..2853d09 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,8 +199,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/DirectMemoryUtils.html b/devapidocs/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
index 7272d9c..684fac4 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -111,7 +111,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.Private
  @InterfaceStability.Evolving
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.46">DirectMemoryUtils</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.50">DirectMemoryUtils</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>
 <div class="block">Utilities for interacting with and monitoring DirectByteBuffer allocations.</div>
 </li>
@@ -199,6 +199,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/DirectMemoryUtils.html#getDirectMemoryUsage--">getDirectMemoryUsage</a></span>()</code>&nbsp;</td>
 </tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/DirectMemoryUtils.html#getNettyDirectMemoryUsage--">getNettyDirectMemoryUsage</a></span>()</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -227,7 +231,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.47">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.51">LOG</a></pre>
 </li>
 </ul>
 <a name="MEMORY_USED">
@@ -236,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMORY_USED</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.48">MEMORY_USED</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.52">MEMORY_USED</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.DirectMemoryUtils.MEMORY_USED">Constant Field Values</a></dd>
@@ -249,7 +253,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BEAN_SERVER</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/management/MBeanServer.html?is-external=true" title="class or interface in javax.management">MBeanServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.49">BEAN_SERVER</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/management/MBeanServer.html?is-external=true" title="class or interface in javax.management">MBeanServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.53">BEAN_SERVER</a></pre>
 </li>
 </ul>
 <a name="NIO_DIRECT_POOL">
@@ -258,7 +262,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NIO_DIRECT_POOL</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html?is-external=true" title="class or interface in javax.management">ObjectName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.50">NIO_DIRECT_POOL</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html?is-external=true" title="class or interface in javax.management">ObjectName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.54">NIO_DIRECT_POOL</a></pre>
 </li>
 </ul>
 <a name="HAS_MEMORY_USED_ATTRIBUTE">
@@ -267,7 +271,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HAS_MEMORY_USED_ATTRIBUTE</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.51">HAS_MEMORY_USED_ATTRIBUTE</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.55">HAS_MEMORY_USED_ATTRIBUTE</a></pre>
 </li>
 </ul>
 </li>
@@ -284,7 +288,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DirectMemoryUtils</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.46">DirectMemoryUtils</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.50">DirectMemoryUtils</a>()</pre>
 </li>
 </ul>
 </li>
@@ -301,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getDirectMemorySize</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.84">getDirectMemorySize</a>()</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.88">getDirectMemorySize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the setting of -XX:MaxDirectMemorySize as a long. Returns 0 if
@@ -315,20 +319,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getDirectMemoryUsage</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.116">getDirectMemoryUsage</a>()</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.120">getDirectMemoryUsage</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the current amount of direct memory used.</dd>
 </dl>
 </li>
 </ul>
+<a name="getNettyDirectMemoryUsage--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getNettyDirectMemoryUsage</h4>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.134">getNettyDirectMemoryUsage</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the current amount of direct memory used by netty module.</dd>
+</dl>
+</li>
+</ul>
 <a name="destroyDirectByteBuffer-java.nio.ByteBuffer-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>destroyDirectByteBuffer</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.139">destroyDirectByteBuffer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;toBeDestroyed)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html#line.153">destroyDirectByteBuffer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;toBeDestroyed)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a>,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a>,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true" title="class or interface in java.lang.reflect">InvocationTargetException</a>,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 e1760dc..821aa82 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -515,13 +515,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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/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/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index c6caa9b..bcb1724 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -191,8 +191,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 165c1f9..a7c8ce8 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 = "bb657c2d2e824bd32f1df1fc8a8051bf875b2ff7";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "f8b12805bbff18fc94e2ac6894f92276b1453350";<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 = "Wed Sep  5 14:42:51 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Thu Sep  6 14:44:09 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 = "df3c1648082bfdedfd87b66ce0000f42";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "e6959349aa0db5aaa6ff1d2a92b23943";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[06/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973<

<TRUNCATED>

[31/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

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


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

Branch: refs/heads/asf-site
Commit: 06efc31c49c4d9d194fb016223bd85c3882df231
Parents: ea4e4ed
Author: jenkins <bu...@apache.org>
Authored: Thu Sep 6 14:53:28 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Sep 6 14:53:28 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                | 21367 +++++-----
 book.html                                       |   208 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 37102 ++++++++---------
 checkstyle.rss                                  |   206 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |    20 +-
 devapidocs/index-all.html                       |    10 +
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/client/package-tree.html       |    24 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |     2 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     4 +-
 .../hbase/ipc/MetricsHBaseServerSource.html     |    60 +-
 .../hbase/ipc/MetricsHBaseServerSourceImpl.html |     2 +-
 .../hbase/ipc/MetricsHBaseServerWrapper.html    |    33 +-
 .../ipc/MetricsHBaseServerWrapperImpl.html      |    81 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     8 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../replication/regionserver/package-tree.html  |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../hadoop/hbase/util/DirectMemoryUtils.html    |    39 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    10 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../hbase/ipc/MetricsHBaseServerSource.html     |    51 +-
 .../hbase/ipc/MetricsHBaseServerSourceImpl.html |    14 +-
 .../hbase/ipc/MetricsHBaseServerWrapper.html    |     4 +-
 .../ipc/MetricsHBaseServerWrapperImpl.html      |   312 +-
 .../hadoop/hbase/util/DirectMemoryUtils.html    |   234 +-
 downloads.html                                  |     4 +-
 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            |    14 +-
 testdevapidocs/allclasses-noframe.html          |    14 +-
 testdevapidocs/index-all.html                   |   119 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    68 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../ipc/MetricsHBaseServerWrapperStub.html      |    37 +-
 ...matBase.TableInputFormatForMergeTesting.html |     4 +-
 .../mapreduce/TestTableInputFormatScan.html     |   422 +
 .../mapreduce/TestTableInputFormatScan1.html    |   530 -
 .../mapreduce/TestTableInputFormatScan2.html    |   506 -
 ...TestTableInputFormatScanBase.ScanMapper.html |     6 +-
 ...estTableInputFormatScanBase.ScanReducer.html |    16 +-
 .../mapreduce/TestTableInputFormatScanBase.html |    87 +-
 .../TestTableInputFormatScanEmptyToAPP.html     |   354 +
 .../TestTableInputFormatScanEmptyToBBA.html     |   354 +
 .../TestTableInputFormatScanEmptyToBBB.html     |   354 +
 .../TestTableInputFormatScanEmptyToEmpty.html   |   354 +
 .../TestTableInputFormatScanEmptyToOPP.html     |   354 +
 .../TestTableInputFormatScanOBBToOPP.html       |   354 +
 .../TestTableInputFormatScanOBBToQPP.html       |   354 +
 .../TestTableInputFormatScanOPPToEmpty.html     |   354 +
 .../TestTableInputFormatScanYYXToEmpty.html     |   354 +
 .../TestTableInputFormatScanYYYToEmpty.html     |   354 +
 .../TestTableInputFormatScanYZYToEmpty.html     |   354 +
 .../hbase/mapreduce/TestTableMapReduce.html     |     4 +-
 .../class-use/TestTableInputFormatScan.html     |   125 +
 .../class-use/TestTableInputFormatScan1.html    |   125 -
 .../class-use/TestTableInputFormatScan2.html    |   125 -
 .../class-use/TestTableInputFormatScanBase.html |    48 +-
 .../TestTableInputFormatScanEmptyToAPP.html     |   125 +
 .../TestTableInputFormatScanEmptyToBBA.html     |   125 +
 .../TestTableInputFormatScanEmptyToBBB.html     |   125 +
 .../TestTableInputFormatScanEmptyToEmpty.html   |   125 +
 .../TestTableInputFormatScanEmptyToOPP.html     |   125 +
 .../TestTableInputFormatScanOBBToOPP.html       |   125 +
 .../TestTableInputFormatScanOBBToQPP.html       |   125 +
 .../TestTableInputFormatScanOPPToEmpty.html     |   125 +
 .../TestTableInputFormatScanYYXToEmpty.html     |   125 +
 .../TestTableInputFormatScanYYYToEmpty.html     |   125 +
 .../TestTableInputFormatScanYZYToEmpty.html     |   125 +
 .../hadoop/hbase/mapreduce/package-frame.html   |    14 +-
 .../hadoop/hbase/mapreduce/package-summary.html |    63 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    14 +-
 .../hadoop/hbase/mapreduce/package-use.html     |     3 +-
 .../assignment/TestRegionReplicaSplit.html      |    28 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure/package-tree.html    |     8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../regionserver/TestHRegion.Appender.html      |    18 +-
 .../regionserver/TestHRegion.FlushThread.html   |    16 +-
 .../TestHRegion.GetTillDoneOrException.html     |    14 +-
 .../TestHRegion.HRegionForTesting.html          |     8 +-
 .../TestHRegion.HRegionWithSeqId.html           |     6 +-
 .../TestHRegion.HStoreForTesting.html           |     6 +-
 .../regionserver/TestHRegion.Incrementer.html   |    18 +-
 .../TestHRegion.IsFlushWALMarker.html           |    10 +-
 .../regionserver/TestHRegion.PutThread.html     |    24 +-
 .../hadoop/hbase/regionserver/TestHRegion.html  |   246 +-
 .../hadoop/hbase/regionserver/package-tree.html |     6 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |    14 +-
 .../ipc/MetricsHBaseServerWrapperStub.html      |     7 +-
 .../mapreduce/TestTableInputFormatScan.html     |   139 +
 .../mapreduce/TestTableInputFormatScan1.html    |   211 -
 .../mapreduce/TestTableInputFormatScan2.html    |   194 -
 ...TestTableInputFormatScanBase.ScanMapper.html |   602 +-
 ...estTableInputFormatScanBase.ScanReducer.html |   602 +-
 .../mapreduce/TestTableInputFormatScanBase.html |   602 +-
 .../TestTableInputFormatScanEmptyToAPP.html     |   115 +
 .../TestTableInputFormatScanEmptyToBBA.html     |   115 +
 .../TestTableInputFormatScanEmptyToBBB.html     |   115 +
 .../TestTableInputFormatScanEmptyToEmpty.html   |   115 +
 .../TestTableInputFormatScanEmptyToOPP.html     |   115 +
 .../TestTableInputFormatScanOBBToOPP.html       |   114 +
 .../TestTableInputFormatScanOBBToQPP.html       |   114 +
 .../TestTableInputFormatScanOPPToEmpty.html     |   115 +
 .../TestTableInputFormatScanYYXToEmpty.html     |   115 +
 .../TestTableInputFormatScanYYYToEmpty.html     |   115 +
 .../TestTableInputFormatScanYZYToEmpty.html     |   115 +
 .../assignment/TestRegionReplicaSplit.html      |   255 +-
 .../regionserver/TestHRegion.Appender.html      | 11474 +++--
 .../regionserver/TestHRegion.FlushThread.html   | 11474 +++--
 .../TestHRegion.GetTillDoneOrException.html     | 11474 +++--
 .../TestHRegion.HRegionForTesting.html          | 11474 +++--
 .../TestHRegion.HRegionWithSeqId.html           | 11474 +++--
 .../TestHRegion.HStoreForTesting.html           | 11474 +++--
 .../regionserver/TestHRegion.Incrementer.html   | 11474 +++--
 .../TestHRegion.IsFlushWALMarker.html           | 11474 +++--
 .../regionserver/TestHRegion.PutThread.html     | 11474 +++--
 .../hadoop/hbase/regionserver/TestHRegion.html  | 11474 +++--
 159 files changed, 95012 insertions(+), 91661 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index d3105bf..f8ea534 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -601,7 +601,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 


[07/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo"

<TRUNCATED>

[17/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
index 38895c1..135e0fb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1314">TestHRegion.GetTillDoneOrException</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1298">TestHRegion.GetTillDoneOrException</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -254,7 +254,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>g</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.client.Get <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1315">g</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.client.Get <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1299">g</a></pre>
 </li>
 </ul>
 <a name="done">
@@ -263,7 +263,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1316">done</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1300">done</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -272,7 +272,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1317">count</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1301">count</a></pre>
 </li>
 </ul>
 <a name="e">
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>e</h4>
-<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1318">e</a></pre>
+<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1302">e</a></pre>
 </li>
 </ul>
 </li>
@@ -298,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>GetTillDoneOrException</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1320">GetTillDoneOrException</a>(int&nbsp;i,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1304">GetTillDoneOrException</a>(int&nbsp;i,
                        byte[]&nbsp;r,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a>&nbsp;d,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&nbsp;c)</pre>
@@ -318,7 +318,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1329">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html#line.1313">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
index b53d681..304bebc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6538">TestHRegion.HRegionForTesting</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6216">TestHRegion.HRegionForTesting</a>
 extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <div class="block">The same as HRegion class, the only difference is that instantiateHStore will
  create a different HStore - HStoreForTesting. [HBASE-8518]</div>
@@ -259,7 +259,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>HRegionForTesting</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6540">HRegionForTesting</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6218">HRegionForTesting</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
                          org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                          org.apache.hadoop.fs.FileSystem&nbsp;fs,
                          org.apache.hadoop.conf.Configuration&nbsp;confParam,
@@ -274,7 +274,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HRegionForTesting</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6547">HRegionForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegionFileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6225">HRegionForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegionFileSystem&nbsp;fs,
                          org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                          org.apache.hadoop.conf.Configuration&nbsp;confParam,
                          org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
@@ -295,7 +295,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>instantiateHStore</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6558">instantiateHStore</a>(org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;family)
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html#line.6236">instantiateHStore</a>(org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;family)
                                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create HStore instance.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
index 5a0b8a0..b6e8a5f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5929">TestHRegion.HRegionWithSeqId</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5617">TestHRegion.HRegionWithSeqId</a>
 extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 </li>
 </ul>
@@ -248,7 +248,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HRegionWithSeqId</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5930">HRegionWithSeqId</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5618">HRegionWithSeqId</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
                         org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                         org.apache.hadoop.fs.FileSystem&nbsp;fs,
                         org.apache.hadoop.conf.Configuration&nbsp;confParam,
@@ -271,7 +271,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextSequenceId</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5936">getNextSequenceId</a>(org.apache.hadoop.hbase.wal.WAL&nbsp;wal)
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.5624">getNextSequenceId</a>(org.apache.hadoop.hbase.wal.WAL&nbsp;wal)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
index 64ab43d..6b4d294 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6580">TestHRegion.HStoreForTesting</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6258">TestHRegion.HStoreForTesting</a>
 extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <div class="block">HStoreForTesting is merely the same as HStore, the difference is in the doCompaction method
  of HStoreForTesting there is a checkpoint "hbase.hstore.compaction.complete" which
@@ -234,7 +234,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HStoreForTesting</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6582">HStoreForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6260">HStoreForTesting</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                            org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;family,
                            org.apache.hadoop.conf.Configuration&nbsp;confParam)
                     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>
@@ -258,7 +258,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doCompaction</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.HStoreFile&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6589">doCompaction</a>(org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl&nbsp;cr,
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.HStoreFile&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html#line.6267">doCompaction</a>(org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl&nbsp;cr,
                                                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.hbase.regionserver.HStoreFile&gt;&nbsp;filesToCompact,
                                                                              org.apache.hadoop.hbase.security.User&nbsp;user,
                                                                              long&nbsp;compactionStartTime,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
index 9f69eeb..8829593 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4435">TestHRegion.Incrementer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4178">TestHRegion.Incrementer</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 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">TestCase for increment</div>
@@ -228,7 +228,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4436">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4179">region</a></pre>
 </li>
 </ul>
 <a name="incRow">
@@ -237,7 +237,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>incRow</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4437">incRow</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4180">incRow</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -246,7 +246,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4438">family</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4181">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -255,7 +255,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4439">qualifier</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4182">qualifier</a></pre>
 </li>
 </ul>
 <a name="ONE">
@@ -264,7 +264,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>ONE</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4440">ONE</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4183">ONE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestHRegion.Incrementer.ONE">Constant Field Values</a></dd>
@@ -277,7 +277,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>incCounter</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4441">incCounter</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4184">incCounter</a></pre>
 </li>
 </ul>
 </li>
@@ -294,7 +294,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Incrementer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4443">Incrementer</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4186">Incrementer</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                    int&nbsp;incCounter)</pre>
 </li>
 </ul>
@@ -312,7 +312,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4449">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#line.4192">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
index e1aeda8..e827be6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1103">TestHRegion.IsFlushWALMarker</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1098">TestHRegion.IsFlushWALMarker</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.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt;</pre>
 </li>
@@ -210,7 +210,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>actions</h4>
-<pre>volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1104">actions</a></pre>
+<pre>volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1099">actions</a></pre>
 </li>
 </ul>
 </li>
@@ -227,7 +227,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IsFlushWALMarker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1105">IsFlushWALMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1100">IsFlushWALMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
 </li>
 </ul>
 </li>
@@ -244,7 +244,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockList">
 <li class="blockList">
 <h4>matches</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1109">matches</a>(org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1104">matches</a>(org.apache.hadoop.hbase.wal.WALEdit&nbsp;edit)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>matches</code>&nbsp;in interface&nbsp;<code>org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt;</code></dd>
@@ -257,7 +257,7 @@ implements org.mockito.ArgumentMatcher&lt;org.apache.hadoop.hbase.wal.WALEdit&gt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.IsFlushWALMarker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1132">set</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.IsFlushWALMarker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html#line.1127">set</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.FlushAction...&nbsp;actions)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
index 0dc4d24..8a2e260 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3873">TestHRegion.PutThread</a>
+<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3642">TestHRegion.PutThread</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -277,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3874">done</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3643">done</a></pre>
 </li>
 </ul>
 <a name="numPutsFinished">
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>numPutsFinished</h4>
-<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3875">numPutsFinished</a></pre>
+<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3644">numPutsFinished</a></pre>
 </li>
 </ul>
 <a name="error">
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>error</h4>
-<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3877">error</a></pre>
+<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3646">error</a></pre>
 </li>
 </ul>
 <a name="numRows">
@@ -304,7 +304,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>numRows</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3878">numRows</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3647">numRows</a></pre>
 </li>
 </ul>
 <a name="families">
@@ -313,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>families</h4>
-<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3879">families</a></pre>
+<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3648">families</a></pre>
 </li>
 </ul>
 <a name="qualifiers">
@@ -322,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>qualifiers</h4>
-<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3880">qualifiers</a></pre>
+<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3649">qualifiers</a></pre>
 </li>
 </ul>
 </li>
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PutThread</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3882">PutThread</a>(int&nbsp;numRows,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3651">PutThread</a>(int&nbsp;numRows,
                   byte[][]&nbsp;families,
                   byte[][]&nbsp;qualifiers)</pre>
 </li>
@@ -358,7 +358,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForFirstPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3892">waitForFirstPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3661">waitForFirstPut</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Block calling thread until this instance of PutThread has put at least one row.</div>
 <dl>
@@ -373,7 +373,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3900">done</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3669">done</a>()</pre>
 </li>
 </ul>
 <a name="checkNoError--">
@@ -382,7 +382,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkNoError</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3907">checkNoError</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3676">checkNoError</a>()</pre>
 </li>
 </ul>
 <a name="run--">
@@ -391,7 +391,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3914">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html#line.3683">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>


[25/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
index 7fdfc9d..03f3a45 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
@@ -103,31 +103,36 @@
 <span class="sourceLineNo">095</span>  String NUM_LIFO_MODE_SWITCHES_NAME = "numLifoModeSwitches";<a name="line.95"></a>
 <span class="sourceLineNo">096</span>  String NUM_LIFO_MODE_SWITCHES_DESC = "Total number of calls in general queue which " +<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    "were served from the tail of the queue";<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  void authorizationSuccess();<a name="line.99"></a>
+<span class="sourceLineNo">098</span>  // Direct Memory Usage metrics<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  String NETTY_DM_USAGE_NAME = "nettyDirectMemoryUsage";<a name="line.99"></a>
 <span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  void authorizationFailure();<a name="line.101"></a>
+<span class="sourceLineNo">101</span>  String NETTY_DM_USAGE_DESC = "Current Netty direct memory usage.";<a name="line.101"></a>
 <span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  void authenticationSuccess();<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  void authenticationFailure();<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  void authenticationFallback();<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  void sentBytes(long count);<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  void receivedBytes(int count);<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  void sentResponse(long count);<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  void receivedRequest(long count);<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  void dequeuedCall(int qTime);<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  void processedCall(int processingTime);<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  void queuedAndProcessedCall(int totalTime);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>}<a name="line.122"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  void authorizationSuccess();<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  void authorizationFailure();<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  void authenticationSuccess();<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  void authenticationFailure();<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  void authenticationFallback();<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  void sentBytes(long count);<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  void receivedBytes(int count);<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  void sentResponse(long count);<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  void receivedRequest(long count);<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  void dequeuedCall(int qTime);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>  void processedCall(int processingTime);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  void queuedAndProcessedCall(int totalTime);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>}<a name="line.127"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
index 99da288..b7f73ed 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
@@ -187,12 +187,14 @@
 <span class="sourceLineNo">179</span>          .addGauge(Interns.info(NUM_ACTIVE_READ_HANDLER_NAME, NUM_ACTIVE_READ_HANDLER_DESC),<a name="line.179"></a>
 <span class="sourceLineNo">180</span>            wrapper.getActiveReadRpcHandlerCount())<a name="line.180"></a>
 <span class="sourceLineNo">181</span>          .addGauge(Interns.info(NUM_ACTIVE_SCAN_HANDLER_NAME, NUM_ACTIVE_SCAN_HANDLER_DESC),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            wrapper.getActiveScanRpcHandlerCount());<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    metricsRegistry.snapshot(mrb, all);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>}<a name="line.187"></a>
+<span class="sourceLineNo">182</span>            wrapper.getActiveScanRpcHandlerCount())<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          .addGauge(Interns.info(NETTY_DM_USAGE_NAME, NETTY_DM_USAGE_DESC),<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            wrapper.getNettyDmUsage());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>    metricsRegistry.snapshot(mrb, all);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>}<a name="line.189"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
index 2613786..375725c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
@@ -64,7 +64,9 @@
 <span class="sourceLineNo">056</span>  int getActiveReadRpcHandlerCount();<a name="line.56"></a>
 <span class="sourceLineNo">057</span><a name="line.57"></a>
 <span class="sourceLineNo">058</span>  int getActiveScanRpcHandlerCount();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>}<a name="line.59"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  long getNettyDmUsage();<a name="line.60"></a>
+<span class="sourceLineNo">061</span>}<a name="line.61"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
index 55c0b93..595c399 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html
@@ -27,157 +27,167 @@
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.ipc;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>@InterfaceAudience.Private<a name="line.24"></a>
-<span class="sourceLineNo">025</span>public class MetricsHBaseServerWrapperImpl implements MetricsHBaseServerWrapper {<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>  private RpcServer server;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>  MetricsHBaseServerWrapperImpl(RpcServer server) {<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    this.server = server;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  }<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>  private boolean isServerStarted() {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    return this.server != null &amp;&amp; this.server.isStarted();<a name="line.34"></a>
-<span class="sourceLineNo">035</span>  }<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  @Override<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  public long getTotalQueueSize() {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if (!isServerStarted()) {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>      return 0;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    }<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    return server.callQueueSizeInBytes.sum();<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  }<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  @Override<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  public int getGeneralQueueLength() {<a name="line.46"></a>
-<span class="sourceLineNo">047</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>      return 0;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    }<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    return server.getScheduler().getGeneralQueueLength();<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  @Override<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  public int getReplicationQueueLength() {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      return 0;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    }<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    return server.getScheduler().getReplicationQueueLength();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @Override<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public int getPriorityQueueLength() {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      return 0;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    }<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    return server.getScheduler().getPriorityQueueLength();<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  @Override<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  public int getNumOpenConnections() {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    if (!isServerStarted()) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      return 0;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    return server.getNumOpenConnections();<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  @Override<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public int getActiveRpcHandlerCount() {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      return 0;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    return server.getScheduler().getActiveRpcHandlerCount();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public int getActiveGeneralRpcHandlerCount() {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      return 0;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return server.getScheduler().getActiveGeneralRpcHandlerCount();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public int getActivePriorityRpcHandlerCount() {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      return 0;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    return server.getScheduler().getActivePriorityRpcHandlerCount();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  @Override<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public int getActiveReplicationRpcHandlerCount() {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      return 0;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    return server.getScheduler().getActiveReplicationRpcHandlerCount();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  @Override<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public long getNumGeneralCallsDropped() {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      return 0;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    return server.getScheduler().getNumGeneralCallsDropped();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  @Override<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public long getNumLifoModeSwitches() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return 0;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return server.getScheduler().getNumLifoModeSwitches();<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  @Override<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  public int getWriteQueueLength() {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      return 0;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return server.getScheduler().getWriteQueueLength();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public int getReadQueueLength() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      return 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    return server.getScheduler().getReadQueueLength();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public int getScanQueueLength() {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      return 0;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    return server.getScheduler().getScanQueueLength();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public int getActiveWriteRpcHandlerCount() {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return 0;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    return server.getScheduler().getActiveWriteRpcHandlerCount();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public int getActiveReadRpcHandlerCount() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      return 0;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    return server.getScheduler().getActiveReadRpcHandlerCount();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public int getActiveScanRpcHandlerCount() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      return 0;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return server.getScheduler().getActiveScanRpcHandlerCount();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>}<a name="line.172"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.util.DirectMemoryUtils;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>@InterfaceAudience.Private<a name="line.25"></a>
+<span class="sourceLineNo">026</span>public class MetricsHBaseServerWrapperImpl implements MetricsHBaseServerWrapper {<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>  private RpcServer server;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>  MetricsHBaseServerWrapperImpl(RpcServer server) {<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    this.server = server;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  }<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>  private boolean isServerStarted() {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>    return this.server != null &amp;&amp; this.server.isStarted();<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  }<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  @Override<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public long getTotalQueueSize() {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    if (!isServerStarted()) {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>      return 0;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    return server.callQueueSizeInBytes.sum();<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  @Override<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public int getGeneralQueueLength() {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      return 0;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    }<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    return server.getScheduler().getGeneralQueueLength();<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  @Override<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public int getReplicationQueueLength() {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      return 0;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    }<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    return server.getScheduler().getReplicationQueueLength();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Override<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public int getPriorityQueueLength() {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      return 0;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    }<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    return server.getScheduler().getPriorityQueueLength();<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  @Override<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public int getNumOpenConnections() {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    if (!isServerStarted()) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      return 0;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    return server.getNumOpenConnections();<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Override<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public int getActiveRpcHandlerCount() {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      return 0;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    return server.getScheduler().getActiveRpcHandlerCount();<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  @Override<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public int getActiveGeneralRpcHandlerCount() {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return 0;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    return server.getScheduler().getActiveGeneralRpcHandlerCount();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public int getActivePriorityRpcHandlerCount() {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return 0;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return server.getScheduler().getActivePriorityRpcHandlerCount();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  @Override<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public int getActiveReplicationRpcHandlerCount() {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      return 0;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return server.getScheduler().getActiveReplicationRpcHandlerCount();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  public long getNumGeneralCallsDropped() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      return 0;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    return server.getScheduler().getNumGeneralCallsDropped();<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>  @Override<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public long getNumLifoModeSwitches() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      return 0;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    return server.getScheduler().getNumLifoModeSwitches();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  @Override<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public int getWriteQueueLength() {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      return 0;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return server.getScheduler().getWriteQueueLength();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  @Override<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public int getReadQueueLength() {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      return 0;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return server.getScheduler().getReadQueueLength();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public int getScanQueueLength() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      return 0;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    return server.getScheduler().getScanQueueLength();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public int getActiveWriteRpcHandlerCount() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      return 0;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    return server.getScheduler().getActiveWriteRpcHandlerCount();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public int getActiveReadRpcHandlerCount() {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      return 0;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return server.getScheduler().getActiveReadRpcHandlerCount();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public int getActiveScanRpcHandlerCount() {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return 0;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return server.getScheduler().getActiveScanRpcHandlerCount();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public long getNettyDmUsage() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (!isServerStarted() || this.server.getScheduler() == null) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return 0L;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    return DirectMemoryUtils.getNettyDirectMemoryUsage();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>}<a name="line.182"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
index 56e5ef4..6d496bb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/DirectMemoryUtils.html
@@ -45,120 +45,134 @@
 <span class="sourceLineNo">037</span>import org.slf4j.Logger;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.slf4j.LoggerFactory;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>/**<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * Utilities for interacting with and monitoring DirectByteBuffer allocations.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> */<a name="line.43"></a>
-<span class="sourceLineNo">044</span>@InterfaceAudience.Private<a name="line.44"></a>
-<span class="sourceLineNo">045</span>@InterfaceStability.Evolving<a name="line.45"></a>
-<span class="sourceLineNo">046</span>public class DirectMemoryUtils {<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static final Logger LOG = LoggerFactory.getLogger(DirectMemoryUtils.class);<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final String MEMORY_USED = "MemoryUsed";<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private static final MBeanServer BEAN_SERVER;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  private static final ObjectName NIO_DIRECT_POOL;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  private static final boolean HAS_MEMORY_USED_ATTRIBUTE;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  static {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    // initialize singletons. Only maintain a reference to the MBeanServer if<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    // we're able to consume it -- hence convoluted logic.<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    ObjectName n = null;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    MBeanServer s = null;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    Object a = null;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    try {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      n = new ObjectName("java.nio:type=BufferPool,name=direct");<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    } catch (MalformedObjectNameException e) {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      LOG.warn("Unable to initialize ObjectName for DirectByteBuffer allocations.");<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    } finally {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      NIO_DIRECT_POOL = n;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    }<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    if (NIO_DIRECT_POOL != null) {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      s = ManagementFactory.getPlatformMBeanServer();<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    }<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    BEAN_SERVER = s;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    if (BEAN_SERVER != null) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      try {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        a = BEAN_SERVER.getAttribute(NIO_DIRECT_POOL, MEMORY_USED);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      } catch (JMException e) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        LOG.debug("Failed to retrieve nio.BufferPool direct MemoryUsed attribute: " + e);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      }<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    HAS_MEMORY_USED_ATTRIBUTE = a != null;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * @return the setting of -XX:MaxDirectMemorySize as a long. Returns 0 if<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   *         -XX:MaxDirectMemorySize is not set.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public static long getDirectMemorySize() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    RuntimeMXBean runtimemxBean = ManagementFactory.getRuntimeMXBean();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    List&lt;String&gt; arguments = runtimemxBean.getInputArguments();<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    long multiplier = 1; //for the byte case.<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    for (String s : arguments) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      if (s.contains("-XX:MaxDirectMemorySize=")) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        String memSize = s.toLowerCase(Locale.ROOT)<a name="line.90"></a>
-<span class="sourceLineNo">091</span>            .replace("-xx:maxdirectmemorysize=", "").trim();<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>        if (memSize.contains("k")) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>          multiplier = 1024;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        }<a name="line.95"></a>
+<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocatorMetric;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocatorMetricProvider;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.buffer.PooledByteBufAllocator;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * Utilities for interacting with and monitoring DirectByteBuffer allocations.<a name="line.46"></a>
+<span class="sourceLineNo">047</span> */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceAudience.Private<a name="line.48"></a>
+<span class="sourceLineNo">049</span>@InterfaceStability.Evolving<a name="line.49"></a>
+<span class="sourceLineNo">050</span>public class DirectMemoryUtils {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final Logger LOG = LoggerFactory.getLogger(DirectMemoryUtils.class);<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final String MEMORY_USED = "MemoryUsed";<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private static final MBeanServer BEAN_SERVER;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final ObjectName NIO_DIRECT_POOL;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final boolean HAS_MEMORY_USED_ATTRIBUTE;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  static {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    // initialize singletons. Only maintain a reference to the MBeanServer if<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    // we're able to consume it -- hence convoluted logic.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    ObjectName n = null;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    MBeanServer s = null;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    Object a = null;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    try {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      n = new ObjectName("java.nio:type=BufferPool,name=direct");<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    } catch (MalformedObjectNameException e) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      LOG.warn("Unable to initialize ObjectName for DirectByteBuffer allocations.");<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    } finally {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      NIO_DIRECT_POOL = n;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    if (NIO_DIRECT_POOL != null) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      s = ManagementFactory.getPlatformMBeanServer();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    BEAN_SERVER = s;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    if (BEAN_SERVER != null) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      try {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        a = BEAN_SERVER.getAttribute(NIO_DIRECT_POOL, MEMORY_USED);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      } catch (JMException e) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        LOG.debug("Failed to retrieve nio.BufferPool direct MemoryUsed attribute: " + e);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    HAS_MEMORY_USED_ATTRIBUTE = a != null;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  /**<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * @return the setting of -XX:MaxDirectMemorySize as a long. Returns 0 if<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   *         -XX:MaxDirectMemorySize is not set.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public static long getDirectMemorySize() {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    RuntimeMXBean runtimemxBean = ManagementFactory.getRuntimeMXBean();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    List&lt;String&gt; arguments = runtimemxBean.getInputArguments();<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    long multiplier = 1; //for the byte case.<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    for (String s : arguments) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      if (s.contains("-XX:MaxDirectMemorySize=")) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        String memSize = s.toLowerCase(Locale.ROOT)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>            .replace("-xx:maxdirectmemorysize=", "").trim();<a name="line.95"></a>
 <span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>        else if (memSize.contains("m")) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          multiplier = 1048576;<a name="line.98"></a>
+<span class="sourceLineNo">097</span>        if (memSize.contains("k")) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>          multiplier = 1024;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>        }<a name="line.99"></a>
 <span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>        else if (memSize.contains("g")) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>          multiplier = 1073741824;<a name="line.102"></a>
+<span class="sourceLineNo">101</span>        else if (memSize.contains("m")) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          multiplier = 1048576;<a name="line.102"></a>
 <span class="sourceLineNo">103</span>        }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        memSize = memSize.replaceAll("[^\\d]", "");<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>        long retValue = Long.parseLong(memSize);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        return retValue * multiplier;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    return 0;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @return the current amount of direct memory used.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static long getDirectMemoryUsage() {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if (BEAN_SERVER == null || NIO_DIRECT_POOL == null || !HAS_MEMORY_USED_ATTRIBUTE) return 0;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    try {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Long value = (Long) BEAN_SERVER.getAttribute(NIO_DIRECT_POOL, MEMORY_USED);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return value == null ? 0 : value;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    } catch (JMException e) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      // should print further diagnostic information?<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      return 0;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  /**<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * DirectByteBuffers are garbage collected by using a phantom reference and a<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * reference queue. Every once a while, the JVM checks the reference queue and<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * cleans the DirectByteBuffers. However, as this doesn't happen<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * immediately after discarding all references to a DirectByteBuffer, it's<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * easy to OutOfMemoryError yourself using DirectByteBuffers. This function<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * explicitly calls the Cleaner method of a DirectByteBuffer.<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * <a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * @param toBeDestroyed<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   *          The DirectByteBuffer that will be "cleaned". Utilizes reflection.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   *          <a name="line.137"></a>
-<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public static void destroyDirectByteBuffer(ByteBuffer toBeDestroyed)<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      throws IllegalArgumentException, IllegalAccessException,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      InvocationTargetException, SecurityException, NoSuchMethodException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    Preconditions.checkArgument(toBeDestroyed.isDirect(),<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        "toBeDestroyed isn't direct!");<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Method cleanerMethod = toBeDestroyed.getClass().getMethod("cleaner");<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    cleanerMethod.setAccessible(true);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    Object cleaner = cleanerMethod.invoke(toBeDestroyed);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    Method cleanMethod = cleaner.getClass().getMethod("clean");<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    cleanMethod.setAccessible(true);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    cleanMethod.invoke(cleaner);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>}<a name="line.153"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>        else if (memSize.contains("g")) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>          multiplier = 1073741824;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        memSize = memSize.replaceAll("[^\\d]", "");<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>        long retValue = Long.parseLong(memSize);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        return retValue * multiplier;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    return 0;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  }<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>   * @return the current amount of direct memory used.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public static long getDirectMemoryUsage() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    if (BEAN_SERVER == null || NIO_DIRECT_POOL == null || !HAS_MEMORY_USED_ATTRIBUTE) return 0;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    try {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Long value = (Long) BEAN_SERVER.getAttribute(NIO_DIRECT_POOL, MEMORY_USED);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      return value == null ? 0 : value;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    } catch (JMException e) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      // should print further diagnostic information?<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return 0;<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>  /**<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @return the current amount of direct memory used by netty module.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public static long getNettyDirectMemoryUsage() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    ByteBufAllocatorMetric metric = ((ByteBufAllocatorMetricProvider)<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        PooledByteBufAllocator.DEFAULT).metric();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    return metric.usedDirectMemory();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  /**<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * DirectByteBuffers are garbage collected by using a phantom reference and a<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * reference queue. Every once a while, the JVM checks the reference queue and<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * cleans the DirectByteBuffers. However, as this doesn't happen<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * immediately after discarding all references to a DirectByteBuffer, it's<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * easy to OutOfMemoryError yourself using DirectByteBuffers. This function<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * explicitly calls the Cleaner method of a DirectByteBuffer.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * <a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param toBeDestroyed<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *          The DirectByteBuffer that will be "cleaned". Utilizes reflection.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   *          <a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static void destroyDirectByteBuffer(ByteBuffer toBeDestroyed)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      throws IllegalArgumentException, IllegalAccessException,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      InvocationTargetException, SecurityException, NoSuchMethodException {<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Preconditions.checkArgument(toBeDestroyed.isDirect(),<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        "toBeDestroyed isn't direct!");<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>    Method cleanerMethod = toBeDestroyed.getClass().getMethod("cleaner");<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    cleanerMethod.setAccessible(true);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    Object cleaner = cleanerMethod.invoke(toBeDestroyed);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    Method cleanMethod = cleaner.getClass().getMethod("clean");<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    cleanMethod.setAccessible(true);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    cleanMethod.invoke(cleaner);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>}<a name="line.167"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index d9e6fa8..ad9bdc4 100644
--- a/downloads.html
+++ b/downloads.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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -395,7 +395,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index d292741..736274c 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -331,7 +331,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 0e24f7b..f5b9c5b 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -411,7 +411,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index caa6527..1c6e52c 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -291,7 +291,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index fef5643..964a98d 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -288,7 +288,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index a18c20e..ef84da4 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -491,7 +491,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 73c4393..a0d5058 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 3ec39cb..f94095e 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -459,7 +459,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 5f90925..5dd69ba 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -440,7 +440,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 46986a0..a103c09 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 825b532..c85ef27 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -375,7 +375,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index a07bff9..14a66ac 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -769,7 +769,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index bb9771b..8a0a334 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -335,7 +335,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index edd3c92..6eaccbe 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -305,7 +305,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 205fa0f..322b563 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 4daf0e7..490f6b1 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -308,7 +308,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 9363882..fee073a 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -303,7 +303,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 33201dd..ad707a7 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -331,7 +331,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index a2e6d65..0858483 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -299,7 +299,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 8ba0bfc..7d5fb7d 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -333,7 +333,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 44d464d..2745c18 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -520,7 +520,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 725eb63..332b960 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -754,7 +754,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
index 777fa33..862e6f5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
@@ -1267,10 +1267,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>tearDown</h4>
 <pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.249">tearDown</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>
+              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/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+<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>
@@ -1280,7 +1280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSequenceId</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.260">testSequenceId</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.262">testSequenceId</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">Test that I can use the max flushed sequence id after the close.</div>
 <dl>
@@ -1295,7 +1295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloseCarryingSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.295">testCloseCarryingSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.297">testCloseCarryingSnapshot</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">Test for Bug 2 of HBASE-10466.
  "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize
@@ -1316,7 +1316,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMemstoreSnapshotSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.321">testMemstoreSnapshotSize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.323">testMemstoreSnapshotSize</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>
@@ -1330,7 +1330,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createWALCompatibleWithFaultyFileSystem</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.wal.WAL&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.376">createWALCompatibleWithFaultyFileSystem</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
+<pre>private static&nbsp;org.apache.hadoop.hbase.wal.WAL&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.377">createWALCompatibleWithFaultyFileSystem</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                                                        org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                                        org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                                                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1352,7 +1352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMemstoreSizeAccountingWithFailedPostBatchMutate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.386">testMemstoreSizeAccountingWithFailedPostBatchMutate</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.387">testMemstoreSizeAccountingWithFailedPostBatchMutate</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>
@@ -1491,7 +1491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkipRecoveredEditsReplayTheLastFileIgnored</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.810">testSkipRecoveredEditsReplayTheLastFileIgnored</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.805">testSkipRecoveredEditsReplayTheLastFileIgnored</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>
@@ -1505,7 +1505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveredEditsReplayCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.873">testRecoveredEditsReplayCompaction</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.868">testRecoveredEditsReplayCompaction</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>
@@ -1519,7 +1519,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveredEditsReplayCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.878">testRecoveredEditsReplayCompaction</a>(boolean&nbsp;mismatchedRegionName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.873">testRecoveredEditsReplayCompaction</a>(boolean&nbsp;mismatchedRegionName)
                                         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>
@@ -1533,7 +1533,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushMarkers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.987">testFlushMarkers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.982">testFlushMarkers</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>
@@ -1547,7 +1547,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushMarkersWALFail</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1139">testFlushMarkersWALFail</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1134">testFlushMarkersWALFail</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>
@@ -1561,7 +1561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWhileRegionClose</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1256">testGetWhileRegionClose</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1245">testGetWhileRegionClose</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>
@@ -1575,7 +1575,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWeirdCacheBehaviour</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1346">testWeirdCacheBehaviour</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1330">testWeirdCacheBehaviour</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>
@@ -1589,7 +1589,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppendWithReadOnlyTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1389">testAppendWithReadOnlyTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1368">testAppendWithReadOnlyTable</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>
@@ -1603,7 +1603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testIncrWithReadOnlyTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1409">testIncrWithReadOnlyTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1385">testIncrWithReadOnlyTable</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>
@@ -1617,7 +1617,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteColumns</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1427">deleteColumns</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1400">deleteColumns</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyPrefix)
                     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>
@@ -1633,7 +1633,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumberOfRows</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1446">getNumberOfRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyPrefix,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1419">getNumberOfRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyPrefix,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                             org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)
                      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>
@@ -1649,7 +1649,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildScanner</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1465">buildScanner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyPrefix,
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1438">buildScanner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyPrefix,
                                                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                                                                           org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)
                                                                    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>
@@ -1665,7 +1665,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>putRows</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1485">putRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1458">putRows</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                      int&nbsp;numRows,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)
@@ -1682,7 +1682,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFamilyWithAndWithoutColon</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1501">testFamilyWithAndWithoutColon</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1474">testFamilyWithAndWithoutColon</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>
@@ -1696,7 +1696,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchPut_whileNoRowLocksHeld</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1522">testBatchPut_whileNoRowLocksHeld</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1490">testBatchPut_whileNoRowLocksHeld</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>
@@ -1710,7 +1710,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchPut_whileMultipleRowLocksHeld</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1552">testBatchPut_whileMultipleRowLocksHeld</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1515">testBatchPut_whileMultipleRowLocksHeld</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>
@@ -1724,7 +1724,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForCounter</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1630">waitForCounter</a>(org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1588">waitForCounter</a>(org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;metricName,
                             long&nbsp;expectedCount)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -1740,7 +1740,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAtomicBatchPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1644">testAtomicBatchPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1602">testAtomicBatchPut</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>
@@ -1754,7 +1754,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchPutWithTsSlop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1713">testBatchPutWithTsSlop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1666">testBatchPutWithTsSlop</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>
@@ -1768,7 +1768,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareRegionForBachPut</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1737">prepareRegionForBachPut</a>(org.apache.hadoop.hbase.client.Put[]&nbsp;puts,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1685">prepareRegionForBachPut</a>(org.apache.hadoop.hbase.client.Put[]&nbsp;puts,
                                      org.apache.hadoop.hbase.regionserver.wal.MetricsWALSource&nbsp;source,
                                      boolean&nbsp;slop)
                               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>
@@ -1786,7 +1786,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithEmptyRowValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1757">testCheckAndMutate_WithEmptyRowValue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1705">testCheckAndMutate_WithEmptyRowValue</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>
@@ -1800,7 +1800,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithWrongValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1831">testCheckAndMutate_WithWrongValue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1774">testCheckAndMutate_WithWrongValue</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>
@@ -1814,7 +1814,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithCorrectValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1885">testCheckAndMutate_WithCorrectValue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1823">testCheckAndMutate_WithCorrectValue</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>
@@ -1828,7 +1828,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate_WithNonEqualCompareOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1937">testCheckAndMutate_WithNonEqualCompareOp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1870">testCheckAndMutate_WithNonEqualCompareOp</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>
@@ -1842,7 +1842,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPut_ThatPutWasWritten</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2031">testCheckAndPut_ThatPutWasWritten</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.1959">testCheckAndPut_ThatPutWasWritten</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>
@@ -1856,7 +1856,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPut_wrongRowInPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2077">testCheckAndPut_wrongRowInPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2000">testCheckAndPut_wrongRowInPut</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>
@@ -1870,7 +1870,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndDelete_ThatDeleteWasWritten</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2096">testCheckAndDelete_ThatDeleteWasWritten</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2014">testCheckAndDelete_ThatDeleteWasWritten</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>
@@ -1884,7 +1884,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_multiDeleteColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2175">testDelete_multiDeleteColumn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2088">testDelete_multiDeleteColumn</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>
@@ -1898,7 +1898,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_CheckFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2206">testDelete_CheckFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2114">testDelete_CheckFamily</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>
@@ -1912,7 +1912,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_mixed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2247">testDelete_mixed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2146">testDelete_mixed</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>,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -1928,7 +1928,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteRowWithFutureTs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2314">testDeleteRowWithFutureTs</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2208">testDeleteRowWithFutureTs</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>
@@ -1942,7 +1942,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutWithLatestTS</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2356">testPutWithLatestTS</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2245">testPutWithLatestTS</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">Tests that the special LATEST_TIMESTAMP option for puts gets replaced by
  the actual timestamp</div>
@@ -1958,7 +1958,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutWithTsSlop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2407">testPutWithTsSlop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2290">testPutWithTsSlop</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">Tests that there is server-side filtering for invalid timestamp upper
  bound. Note that the timestamp lower bound is automatically handled for us
@@ -1975,7 +1975,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_DeleteOneFamilyNotAnother</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2435">testScanner_DeleteOneFamilyNotAnother</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2313">testScanner_DeleteOneFamilyNotAnother</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>
@@ -1989,7 +1989,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDataInMemoryWithoutWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2477">testDataInMemoryWithoutWAL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2350">testDataInMemoryWithoutWAL</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>
@@ -2003,7 +2003,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDataInMemoryWithoutWAL</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2526">testDataInMemoryWithoutWAL</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2399">testDataInMemoryWithoutWAL</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                                                org.apache.hadoop.hbase.client.Put&nbsp;originalPut,
                                                org.apache.hadoop.hbase.client.Put&nbsp;addPut,
                                                long&nbsp;delta)
@@ -2020,7 +2020,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteColumns_PostInsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2551">testDeleteColumns_PostInsert</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2424">testDeleteColumns_PostInsert</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>,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -2036,7 +2036,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testaddFamily_PostInsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2558">testaddFamily_PostInsert</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2431">testaddFamily_PostInsert</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>,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -2052,7 +2052,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestDelete_AndPostInsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2564">doTestDelete_AndPostInsert</a>(org.apache.hadoop.hbase.client.Delete&nbsp;delete)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2437">doTestDelete_AndPostInsert</a>(org.apache.hadoop.hbase.client.Delete&nbsp;delete)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -2068,7 +2068,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete_CheckTimestampUpdated</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2609">testDelete_CheckTimestampUpdated</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2477">testDelete_CheckTimestampUpdated</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>
@@ -2082,7 +2082,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_FamilyChecker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2649">testGet_FamilyChecker</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2512">testGet_FamilyChecker</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>
@@ -2096,7 +2096,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_Basic</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2676">testGet_Basic</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2533">testGet_Basic</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>
@@ -2110,7 +2110,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_Empty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2727">testGet_Empty</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2579">testGet_Empty</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>
@@ -2124,7 +2124,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWithFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2745">testGetWithFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2592">testGetWithFilter</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>,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -2140,7 +2140,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithOkFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2810">testGetScanner_WithOkFamilies</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2652">testGetScanner_WithOkFamilies</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>
@@ -2154,7 +2154,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithNotOkFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2834">testGetScanner_WithNotOkFamilies</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2671">testGetScanner_WithNotOkFamilies</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>
@@ -2168,7 +2168,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithNoFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2859">testGetScanner_WithNoFamilies</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2691">testGetScanner_WithNoFamilies</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>
@@ -2182,7 +2182,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScanner_WithRegionClosed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2907">testGetScanner_WithRegionClosed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2733">testGetScanner_WithRegionClosed</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">This method tests https://issues.apache.org/jira/browse/HBASE-2516.</div>
 <dl>
@@ -2197,7 +2197,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionScanner_Next</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2939">testRegionScanner_Next</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2760">testRegionScanner_Next</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>
@@ -2211,7 +2211,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_ExplicitColumns_FromMemStore_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3004">testScanner_ExplicitColumns_FromMemStore_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2820">testScanner_ExplicitColumns_FromMemStore_EnforceVersions</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>
@@ -2225,7 +2225,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3062">testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2873">testScanner_ExplicitColumns_FromFilesOnly_EnforceVersions</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>
@@ -2239,7 +2239,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3124">testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.2930">testScanner_ExplicitColumns_FromMemStoreAndFiles_EnforceVersions</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>
@@ -2253,7 +2253,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_Wildcard_FromMemStore_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3206">testScanner_Wildcard_FromMemStore_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3007">testScanner_Wildcard_FromMemStore_EnforceVersions</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>
@@ -2267,7 +2267,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_Wildcard_FromFilesOnly_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3266">testScanner_Wildcard_FromFilesOnly_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3062">testScanner_Wildcard_FromFilesOnly_EnforceVersions</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>
@@ -2281,7 +2281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_StopRow1542</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3326">testScanner_StopRow1542</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3117">testScanner_StopRow1542</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>
@@ -2295,7 +2295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3374">testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3160">testScanner_Wildcard_FromMemStoreAndFiles_EnforceVersions</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>
@@ -2309,7 +2309,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_JoinedScanners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3458">testScanner_JoinedScanners</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3239">testScanner_JoinedScanners</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">Added for HBASE-5416
 
@@ -2327,7 +2327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanner_JoinedScannersWithLimits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3526">testScanner_JoinedScannersWithLimits</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3302">testScanner_JoinedScannersWithLimits</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">HBASE-5416
 
@@ -2344,7 +2344,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testLongQualifier</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3625">testLongQualifier</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3396">testLongQualifier</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Write an HFile block full with Cells whose qualifier that are identical between
  0 and Short.MAX_VALUE. See HBASE-13329.</div>
@@ -2360,7 +2360,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushCacheWhileScanning</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3653">testFlushCacheWhileScanning</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3422">testFlushCacheWhileScanning</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>,
                                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Flushes the cache in a thread while scanning. The tests verify that the
@@ -2379,7 +2379,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWritesWhileScanning</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3784">testWritesWhileScanning</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3553">testWritesWhileScanning</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>,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Writes very wide records and scans for the latest every time.. Flushes and
@@ -2397,7 +2397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWritesWhileGetting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3961">testWritesWhileGetting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3730">testWritesWhileGetting</a>()
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Writes very wide records and gets the latest row every time.. Flushes and
  compacts the region aggressivly to catch issues.</div>
@@ -2415,7 +2415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testHolesInMeta</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4066">testHolesInMeta</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3835">testHolesInMeta</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>
@@ -2429,7 +2429,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testIndexesScanWithOneDeletedRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4089">testIndexesScanWithOneDeletedRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3853">testIndexesScanWithOneDeletedRow</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>
@@ -2443,7 +2443,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBloomFilterSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4130">testBloomFilterSize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3890">testBloomFilterSize</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>
@@ -2457,7 +2457,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAllColumnsWithBloomFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4189">testAllColumnsWithBloomFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3944">testAllColumnsWithBloomFilter</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>
@@ -2471,7 +2471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteRowWithBloomFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4237">testDeleteRowWithBloomFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3987">testDeleteRowWithBloomFilter</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">Testcase to cover bug-fix for HBASE-2823 Ensures correct delete when
  issuing delete row on columns with bloom filter set to row+col
@@ -2488,7 +2488,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testgetHDFSBlocksDistribution</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4275">testgetHDFSBlocksDistribution</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4020">testgetHDFSBlocksDistribution</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>
@@ -2502,7 +2502,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testStatusSettingToAbortIfAnyExceptionDuringRegionInitilization</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4354">testStatusSettingToAbortIfAnyExceptionDuringRegionInitilization</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4099">testStatusSettingToAbortIfAnyExceptionDuringRegionInitilization</a>()
                                                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Testcase to check state of region initialization task set to ABORTED or not
  if any exceptions during initialization</div>
@@ -2518,7 +2518,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionInfoFileCreation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4388">testRegionInfoFileCreation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4131">testRegionInfoFileCreation</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">Verifies that the .regioninfo file is written on region creation and that
  is recreated if missing during region opening.</div>
@@ -2534,7 +2534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testParallelIncrementWithMemStoreFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4470">testParallelIncrementWithMemStoreFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4213">testParallelIncrementWithMemStoreFlush</a>()
                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test case to check increment function with memstore flushing</div>
 <dl>
@@ -2549,7 +2549,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testParallelAppendWithMemStoreFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4557">testParallelAppendWithMemStoreFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4299">testParallelAppendWithMemStoreFlush</a>()
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test case to check append function with memstore flushing</div>
 <dl>
@@ -2564,7 +2564,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutWithMemStoreFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4617">testPutWithMemStoreFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4358">testPutWithMemStoreFlush</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test case to check put function with memstore flushing for same row, same ts</div>
 <dl>
@@ -2579,7 +2579,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDurability</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4672">testDurability</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4413">testDurability</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>
@@ -2593,7 +2593,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>durabilityTest</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4721">durabilityTest</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;method,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4462">durabilityTest</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;method,
                             org.apache.hadoop.hbase.client.Durability&nbsp;tableDurability,
                             org.apache.hadoop.hbase.client.Durability&nbsp;mutationDurability,
                             long&nbsp;timeout,
@@ -2613,7 +2613,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionReplicaSecondary</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4776">testRegionReplicaSecondary</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4517">testRegionReplicaSecondary</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>
@@ -2627,7 +2627,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionReplicaSecondaryIsReadOnly</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4826">testRegionReplicaSecondaryIsReadOnly</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4567">testRegionReplicaSecondaryIsReadOnly</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>
@@ -2641,7 +2641,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createWALFactory</h4>
-<pre>static&nbsp;org.apache.hadoop.hbase.wal.WALFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4880">createWALFactory</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>static&nbsp;org.apache.hadoop.hbase.wal.WALFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4621">createWALFactory</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                org.apache.hadoop.fs.Path&nbsp;rootDir)
                                                         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>
@@ -2656,7 +2656,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompactionFromPrimary</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4887">testCompactionFromPrimary</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4628">testCompactionFromPrimary</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>
@@ -2670,7 +2670,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>putData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4941">putData</a>(int&nbsp;startRow,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4682">putData</a>(int&nbsp;startRow,
                      int&nbsp;numRows,
                      byte[]&nbsp;qf,
                      byte[]...&nbsp;families)
@@ -2687,7 +2687,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>putData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4946">putData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4687">putData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                      int&nbsp;startRow,
                      int&nbsp;numRows,
                      byte[]&nbsp;qf,
@@ -2705,7 +2705,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>putData</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4951">putData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4692">putData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                     org.apache.hadoop.hbase.client.Durability&nbsp;durability,
                     int&nbsp;startRow,
                     int&nbsp;numRows,
@@ -2724,7 +2724,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyData</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4964">verifyData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;newReg,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4705">verifyData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;newReg,
                        int&nbsp;startRow,
                        int&nbsp;numRows,
                        byte[]&nbsp;qf,
@@ -2742,7 +2742,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertGet</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4983">assertGet</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4724">assertGet</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                       byte[]&nbsp;family,
                       byte[]&nbsp;k)
                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>
@@ -2758,7 +2758,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertScan</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5005">assertScan</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4746">assertScan</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
                           byte[]&nbsp;fs,
                           byte[]&nbsp;firstValue)
                    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>
@@ -2774,7 +2774,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushResult</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5037">testFlushResult</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4778">testFlushResult</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">Test that we get the expected flush results back</div>
 <dl>
@@ -2789,7 +2789,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>initSplit</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5066">initSplit</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4807">initSplit</a>()</pre>
 </li>
 </ul>
 <a name="initHRegion-org.apache.hadoop.hbase.TableName-java.lang.String-org.apache.hadoop.conf.Configuration-byte:A...-">
@@ -2798,7 +2798,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5085">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4826">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                                    org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                    byte[]...&nbsp;families)
@@ -2818,7 +2818,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5094">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4835">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                                    org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                    boolean&nbsp;isReadOnly,
@@ -2839,7 +2839,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5099">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4840">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                    byte[]&nbsp;startKey,
                                                                    byte[]&nbsp;stopKey,
                                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
@@ -2859,7 +2859,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5114">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4855">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                 byte[]&nbsp;startKey,
                                                                 byte[]&nbsp;stopKey,
                                                                 boolean&nbsp;isReadOnly,
@@ -2882,7 +2882,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkOneCell</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5124">checkOneCell</a>(org.apache.hadoop.hbase.Cell&nbsp;kv,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4865">checkOneCell</a>(org.apache.hadoop.hbase.Cell&nbsp;kv,
                           byte[]&nbsp;cf,
                           int&nbsp;rowIdx,
                           int&nbsp;colIdx,
@@ -2897,7 +2897,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStore_SingleCF_Normal</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5138">testReverseScanner_FromMemStore_SingleCF_Normal</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4879">testReverseScanner_FromMemStore_SingleCF_Normal</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>
@@ -2911,7 +2911,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStore_SingleCF_LargerKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5196">testReverseScanner_FromMemStore_SingleCF_LargerKey</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4932">testReverseScanner_FromMemStore_SingleCF_LargerKey</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>
@@ -2925,7 +2925,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStore_SingleCF_FullScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5255">testReverseScanner_FromMemStore_SingleCF_FullScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4986">testReverseScanner_FromMemStore_SingleCF_FullScan</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>
@@ -2939,7 +2939,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_moreRowsMayExistAfter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5311">testReverseScanner_moreRowsMayExistAfter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5037">testReverseScanner_moreRowsMayExistAfter</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>
@@ -2953,7 +2953,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_smaller_blocksize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5392">testReverseScanner_smaller_blocksize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5113">testReverseScanner_smaller_blocksize</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>
@@ -2967,7 +2967,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5475">testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5191">testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</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>
@@ -2981,7 +2981,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5643">testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5354">testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</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>
@@ -2995,7 +2995,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_StackOverflow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5723">testReverseScanner_StackOverflow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5429">testReverseScanner_StackOverflow</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">Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking</div>
 <dl>
@@ -3010,7 +3010,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <u

<TRUNCATED>

[27/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index a9c4698..aad9017 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3722,
-             Errors: 15335,
+      <title>File: 3732,
+             Errors: 15240,
              Warnings: 0,
              Infos: 0
       </title>
@@ -452,6 +452,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBA.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RetryingCallerInterceptorContext.java">org/apache/hadoop/hbase/client/RetryingCallerInterceptorContext.java</a>
                 </td>
                 <td>
@@ -4694,6 +4708,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToEmpty.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.FlushRegionCallable.java">org/apache/hadoop/hbase/client/FlushRegionCallable.java</a>
                 </td>
                 <td>
@@ -6262,6 +6290,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOPPToEmpty.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.HbaseHandlerMetricsProxy.java">org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.java</a>
                 </td>
                 <td>
@@ -7965,7 +8007,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  21
+                  6
                 </td>
               </tr>
                           <tr>
@@ -8684,20 +8726,6 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.java</a>
-                </td>
-                <td>
-                  0
-                </td>
-                <td>
-                  0
-                </td>
-                <td>
-                  30
-                </td>
-              </tr>
-                          <tr>
-                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.ReplicationPeerConfig.java">org/apache/hadoop/hbase/replication/ReplicationPeerConfig.java</a>
                 </td>
                 <td>
@@ -10882,6 +10910,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYYToEmpty.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestRegionSizeUse.java">org/apache/hadoop/hbase/quotas/TestRegionSizeUse.java</a>
                 </td>
                 <td>
@@ -15180,6 +15222,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MetricsSnapshotSource.java">org/apache/hadoop/hbase/master/MetricsSnapshotSource.java</a>
                 </td>
                 <td>
@@ -18876,6 +18932,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBB.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.backup.impl.IncrementalTableBackupClient.java">org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.java</a>
                 </td>
                 <td>
@@ -20136,6 +20206,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToOPP.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.trace.TraceUtil.java">org/apache/hadoop/hbase/trace/TraceUtil.java</a>
                 </td>
                 <td>
@@ -24112,20 +24196,6 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.java</a>
-                </td>
-                <td>
-                  0
-                </td>
-                <td>
-                  0
-                </td>
-                <td>
-                  25
-                </td>
-              </tr>
-                          <tr>
-                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.FlushNonSloppyStoresFirstPolicy.java">org/apache/hadoop/hbase/regionserver/FlushNonSloppyStoresFirstPolicy.java</a>
                 </td>
                 <td>
@@ -28984,6 +29054,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToOPP.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.UnknownSnapshotException.java">org/apache/hadoop/hbase/snapshot/UnknownSnapshotException.java</a>
                 </td>
                 <td>
@@ -30510,6 +30594,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYZYToEmpty.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost.java">org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.java</a>
                 </td>
                 <td>
@@ -31350,6 +31448,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYXToEmpty.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure2.store.wal.TestStressWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestStressWALProcedureStore.java</a>
                 </td>
                 <td>
@@ -31574,6 +31686,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToAPP.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rest.model.TestTableListModel.java">org/apache/hadoop/hbase/rest/model/TestTableListModel.java</a>
                 </td>
                 <td>
@@ -35004,6 +35130,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToQPP.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaFilter.java">org/apache/hadoop/hbase/quotas/TestQuotaFilter.java</a>
                 </td>
                 <td>
@@ -37953,7 +38093,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  51
+                  29
                 </td>
               </tr>
                           <tr>
@@ -49041,7 +49181,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 002be97..99b5cf4 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -375,7 +375,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-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index ac4a941..5e5112c 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index e276d77..58e23dc 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -879,7 +879,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 4db9dd1..75c3427 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index f4a40f6..3c09354 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="20180905" />
+    <meta name="Date-Revision-yyyymmdd" content="20180906" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1005,7 +1005,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-05</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-06</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index bde53e3..2839122 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3824,21 +3824,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Wed Sep  5 14:42:51 UTC 2018"</code></td>
+<td class="colLast"><code>"Thu Sep  6 14:44:09 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"bb657c2d2e824bd32f1df1fc8a8051bf875b2ff7"</code></td>
+<td class="colLast"><code>"f8b12805bbff18fc94e2ac6894f92276b1453350"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"df3c1648082bfdedfd87b66ce0000f42"</code></td>
+<td class="colLast"><code>"e6959349aa0db5aaa6ff1d2a92b23943"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -10733,6 +10733,20 @@
 <td class="colLast"><code>"numCallsInGeneralQueue"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.ipc.MetricsHBaseServerSource.NETTY_DM_USAGE_DESC">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_DESC">NETTY_DM_USAGE_DESC</a></code></td>
+<td class="colLast"><code>"Current Netty direct memory usage."</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.ipc.MetricsHBaseServerSource.NETTY_DM_USAGE_NAME">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_NAME">NETTY_DM_USAGE_NAME</a></code></td>
+<td class="colLast"><code>"nettyDirectMemoryUsage"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.ipc.MetricsHBaseServerSource.NUM_ACTIVE_GENERAL_HANDLER_DESC">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index ff9045b..e56180d 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -44031,6 +44031,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html#getNegotiatedQop--">getNegotiatedQop()</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/DirectMemoryUtils.html#getNettyDirectMemoryUsage--">getNettyDirectMemoryUsage()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/DirectMemoryUtils.html" title="class in org.apache.hadoop.hbase.util">DirectMemoryUtils</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNettyDmUsage--">getNettyDmUsage()</a></span> - Method in interface org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapper</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html#getNettyDmUsage--">getNettyDmUsage()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServerWrapperImpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/RegionPlacementMaintainer.html#getNewAssignmentPlan--">getNewAssignmentPlan()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/RegionPlacementMaintainer.html" title="class in org.apache.hadoop.hbase.master">RegionPlacementMaintainer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html#getNewExternalChunk-org.apache.hadoop.hbase.regionserver.ChunkCreator.ChunkType-">getNewExternalChunk(ChunkCreator.ChunkType)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableMemStoreLAB</a></dt>
@@ -77261,6 +77267,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#negotiateCryptoAes-org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta-">negotiateCryptoAes(RPCProtos.CryptoCipherMeta)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_DESC">NETTY_DM_USAGE_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_NAME">NETTY_DM_USAGE_NAME</a></span> - Static variable in interface org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/wal/NettyAsyncFSWALConfigHelper.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">NettyAsyncFSWALConfigHelper</span></a> - Class in <a href="org/apache/hadoop/hbase/wal/package-summary.html">org.apache.hadoop.hbase.wal</a></dt>
 <dd>
 <div class="block">Helper class for passing netty event loop config to <a href="org/apache/hadoop/hbase/wal/AsyncFSWALProvider.html" title="class in org.apache.hadoop.hbase.wal"><code>AsyncFSWALProvider</code></a>.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 d0d625a..2cd8945 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -168,9 +168,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/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/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/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/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 1accc69..2c80b72 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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.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/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/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/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/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/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/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/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/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/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index 329f62f..e67b778 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index ce950b0..ae0124e 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 3fdd2b3..5972a53 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/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/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/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/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/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/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/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.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/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 35dcf0c..ee33cbe 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -274,12 +274,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.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/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/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/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/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/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/06efc31c/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
index b3fddf3..74bc795 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html
@@ -180,6 +180,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_DESC">NETTY_DM_USAGE_DESC</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/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/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_NAME">NETTY_DM_USAGE_NAME</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_GENERAL_HANDLER_DESC">NUM_ACTIVE_GENERAL_HANDLER_DESC</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -1212,7 +1220,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <a name="NUM_LIFO_MODE_SWITCHES_DESC">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>NUM_LIFO_MODE_SWITCHES_DESC</h4>
 <pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.96">NUM_LIFO_MODE_SWITCHES_DESC</a></pre>
@@ -1222,6 +1230,32 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 </dl>
 </li>
 </ul>
+<a name="NETTY_DM_USAGE_NAME">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>NETTY_DM_USAGE_NAME</h4>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.99">NETTY_DM_USAGE_NAME</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.MetricsHBaseServerSource.NETTY_DM_USAGE_NAME">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="NETTY_DM_USAGE_DESC">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>NETTY_DM_USAGE_DESC</h4>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.101">NETTY_DM_USAGE_DESC</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.MetricsHBaseServerSource.NETTY_DM_USAGE_DESC">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ============ METHOD DETAIL ========== -->
@@ -1236,7 +1270,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>authorizationSuccess</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.99">authorizationSuccess</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.104">authorizationSuccess</a>()</pre>
 </li>
 </ul>
 <a name="authorizationFailure--">
@@ -1245,7 +1279,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>authorizationFailure</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.101">authorizationFailure</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.106">authorizationFailure</a>()</pre>
 </li>
 </ul>
 <a name="authenticationSuccess--">
@@ -1254,7 +1288,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>authenticationSuccess</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.103">authenticationSuccess</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.108">authenticationSuccess</a>()</pre>
 </li>
 </ul>
 <a name="authenticationFailure--">
@@ -1263,7 +1297,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>authenticationFailure</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.105">authenticationFailure</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.110">authenticationFailure</a>()</pre>
 </li>
 </ul>
 <a name="authenticationFallback--">
@@ -1272,7 +1306,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>authenticationFallback</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.107">authenticationFallback</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.112">authenticationFallback</a>()</pre>
 </li>
 </ul>
 <a name="sentBytes-long-">
@@ -1281,7 +1315,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>sentBytes</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.109">sentBytes</a>(long&nbsp;count)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.114">sentBytes</a>(long&nbsp;count)</pre>
 </li>
 </ul>
 <a name="receivedBytes-int-">
@@ -1290,7 +1324,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>receivedBytes</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.111">receivedBytes</a>(int&nbsp;count)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.116">receivedBytes</a>(int&nbsp;count)</pre>
 </li>
 </ul>
 <a name="sentResponse-long-">
@@ -1299,7 +1333,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>sentResponse</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.113">sentResponse</a>(long&nbsp;count)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.118">sentResponse</a>(long&nbsp;count)</pre>
 </li>
 </ul>
 <a name="receivedRequest-long-">
@@ -1308,7 +1342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>receivedRequest</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.115">receivedRequest</a>(long&nbsp;count)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.120">receivedRequest</a>(long&nbsp;count)</pre>
 </li>
 </ul>
 <a name="dequeuedCall-int-">
@@ -1317,7 +1351,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>dequeuedCall</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.117">dequeuedCall</a>(int&nbsp;qTime)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.122">dequeuedCall</a>(int&nbsp;qTime)</pre>
 </li>
 </ul>
 <a name="processedCall-int-">
@@ -1326,7 +1360,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockList">
 <li class="blockList">
 <h4>processedCall</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.119">processedCall</a>(int&nbsp;processingTime)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.124">processedCall</a>(int&nbsp;processingTime)</pre>
 </li>
 </ul>
 <a name="queuedAndProcessedCall-int-">
@@ -1335,7 +1369,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/metrics/ExceptionTrackin
 <ul class="blockListLast">
 <li class="blockList">
 <h4>queuedAndProcessedCall</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.121">queuedAndProcessedCall</a>(int&nbsp;totalTime)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#line.126">queuedAndProcessedCall</a>(int&nbsp;totalTime)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
index 894e4a9..f06f2c4 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.html
@@ -217,7 +217,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServe
 <!--   -->
 </a>
 <h3>Fields inherited from interface&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FAILURES_DESC">AUTHENTICATION_FAILURES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FAILURES_NAME">AUTHENTICATION_FAILURES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FALLBACKS_DESC">AUTHENTICATION_FALLBACKS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FALLBACKS_NAME">AUTHENTICATION_FALLBACKS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_SUCCESSES_DESC">AUTHENTICATION_SUCCESSES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_SUCCESSES_NAME">AUTHENTICATION_SUCCESSES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_FAILURES_DE
 SC">AUTHORIZATION_FAILURES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_FAILURES_NAME">AUTHORIZATION_FAILURES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_SUCCESSES_DESC">AUTHORIZATION_SUCCESSES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_SUCCESSES_NAME">AUTHORIZATION_SUCCESSES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#GENERAL_QUEUE_DESC">GENERAL_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#GENERAL_QUEUE_NAME">GENERAL_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_GENERAL_HANDLER_DESC">NUM_ACTIVE_GENERAL_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_GENERAL_HANDLER_NAME">NUM_A
 CTIVE_GENERAL_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_HANDLER_DESC">NUM_ACTIVE_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_HANDLER_NAME">NUM_ACTIVE_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_PRIORITY_HANDLER_DESC">NUM_ACTIVE_PRIORITY_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_PRIORITY_HANDLER_NAME">NUM_ACTIVE_PRIORITY_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_READ_HANDLER_DESC">NUM_ACTIVE_READ_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_READ_HANDLER_NAME">NUM_ACTIVE_READ_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_
 REPLICATION_HANDLER_DESC">NUM_ACTIVE_REPLICATION_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_REPLICATION_HANDLER_NAME">NUM_ACTIVE_REPLICATION_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_SCAN_HANDLER_DESC">NUM_ACTIVE_SCAN_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_SCAN_HANDLER_NAME">NUM_ACTIVE_SCAN_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_WRITE_HANDLER_DESC">NUM_ACTIVE_WRITE_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_WRITE_HANDLER_NAME">NUM_ACTIVE_WRITE_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_GENERAL_CALLS_DROPPED_DESC">NUM_GENERAL_CALLS_DROPPED_DESC</a>, <a href="../../../../../org/apac
 he/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_GENERAL_CALLS_DROPPED_NAME">NUM_GENERAL_CALLS_DROPPED_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_LIFO_MODE_SWITCHES_DESC">NUM_LIFO_MODE_SWITCHES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_LIFO_MODE_SWITCHES_NAME">NUM_LIFO_MODE_SWITCHES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_OPEN_CONNECTIONS_DESC">NUM_OPEN_CONNECTIONS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_OPEN_CONNECTIONS_NAME">NUM_OPEN_CONNECTIONS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#PRIORITY_QUEUE_DESC">PRIORITY_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#PRIORITY_QUEUE_NAME">PRIORITY_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/Met
 ricsHBaseServerSource.html#PROCESS_CALL_TIME_DESC">PROCESS_CALL_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#PROCESS_CALL_TIME_NAME">PROCESS_CALL_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_CALL_TIME_DESC">QUEUE_CALL_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_CALL_TIME_NAME">QUEUE_CALL_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_SIZE_DESC">QUEUE_SIZE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_SIZE_NAME">QUEUE_SIZE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#READ_QUEUE_DESC">READ_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#READ_QUEUE_NAME">READ_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hb
 ase/ipc/MetricsHBaseServerSource.html#RECEIVED_BYTES_DESC">RECEIVED_BYTES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RECEIVED_BYTES_NAME">RECEIVED_BYTES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REPLICATION_QUEUE_DESC">REPLICATION_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REPLICATION_QUEUE_NAME">REPLICATION_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REQUEST_SIZE_DESC">REQUEST_SIZE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REQUEST_SIZE_NAME">REQUEST_SIZE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RESPONSE_SIZE_DESC">RESPONSE_SIZE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RESPONSE_SIZE_NAME">RESPONSE_SIZE_NAME</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SCAN_QUEUE_DESC">SCAN_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SCAN_QUEUE_NAME">SCAN_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SENT_BYTES_DESC">SENT_BYTES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SENT_BYTES_NAME">SENT_BYTES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#TOTAL_CALL_TIME_DESC">TOTAL_CALL_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#TOTAL_CALL_TIME_NAME">TOTAL_CALL_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#WRITE_QUEUE_DESC">WRITE_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#WRITE_QUEUE_NAME">WRITE_QUEUE_NAME</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FAILURES_DESC">AUTHENTICATION_FAILURES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FAILURES_NAME">AUTHENTICATION_FAILURES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FALLBACKS_DESC">AUTHENTICATION_FALLBACKS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_FALLBACKS_NAME">AUTHENTICATION_FALLBACKS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_SUCCESSES_DESC">AUTHENTICATION_SUCCESSES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHENTICATION_SUCCESSES_NAME">AUTHENTICATION_SUCCESSES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_FAILURES_DE
 SC">AUTHORIZATION_FAILURES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_FAILURES_NAME">AUTHORIZATION_FAILURES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_SUCCESSES_DESC">AUTHORIZATION_SUCCESSES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#AUTHORIZATION_SUCCESSES_NAME">AUTHORIZATION_SUCCESSES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#GENERAL_QUEUE_DESC">GENERAL_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#GENERAL_QUEUE_NAME">GENERAL_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_DESC">NETTY_DM_USAGE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NETTY_DM_USAGE_NAME">NETTY_DM_USAGE_NAME</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_GENERAL_HANDLER_DESC">NUM_ACTIVE_GENERAL_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_GENERAL_HANDLER_NAME">NUM_ACTIVE_GENERAL_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_HANDLER_DESC">NUM_ACTIVE_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_HANDLER_NAME">NUM_ACTIVE_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_PRIORITY_HANDLER_DESC">NUM_ACTIVE_PRIORITY_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_PRIORITY_HANDLER_NAME">NUM_ACTIVE_PRIORITY_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_READ_HANDLER_DESC">NUM_ACTIVE_READ_H
 ANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_READ_HANDLER_NAME">NUM_ACTIVE_READ_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_REPLICATION_HANDLER_DESC">NUM_ACTIVE_REPLICATION_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_REPLICATION_HANDLER_NAME">NUM_ACTIVE_REPLICATION_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_SCAN_HANDLER_DESC">NUM_ACTIVE_SCAN_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_SCAN_HANDLER_NAME">NUM_ACTIVE_SCAN_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_WRITE_HANDLER_DESC">NUM_ACTIVE_WRITE_HANDLER_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSour
 ce.html#NUM_ACTIVE_WRITE_HANDLER_NAME">NUM_ACTIVE_WRITE_HANDLER_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_GENERAL_CALLS_DROPPED_DESC">NUM_GENERAL_CALLS_DROPPED_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_GENERAL_CALLS_DROPPED_NAME">NUM_GENERAL_CALLS_DROPPED_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_LIFO_MODE_SWITCHES_DESC">NUM_LIFO_MODE_SWITCHES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_LIFO_MODE_SWITCHES_NAME">NUM_LIFO_MODE_SWITCHES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_OPEN_CONNECTIONS_DESC">NUM_OPEN_CONNECTIONS_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_OPEN_CONNECTIONS_NAME">NUM_OPEN_CONNECTIONS_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/Met
 ricsHBaseServerSource.html#PRIORITY_QUEUE_DESC">PRIORITY_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#PRIORITY_QUEUE_NAME">PRIORITY_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#PROCESS_CALL_TIME_DESC">PROCESS_CALL_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#PROCESS_CALL_TIME_NAME">PROCESS_CALL_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_CALL_TIME_DESC">QUEUE_CALL_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_CALL_TIME_NAME">QUEUE_CALL_TIME_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_SIZE_DESC">QUEUE_SIZE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#QUEUE_SIZE_NAME">QUEUE_SIZE_NAME</a>, <a href="../../../../../org/
 apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#READ_QUEUE_DESC">READ_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#READ_QUEUE_NAME">READ_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RECEIVED_BYTES_DESC">RECEIVED_BYTES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RECEIVED_BYTES_NAME">RECEIVED_BYTES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REPLICATION_QUEUE_DESC">REPLICATION_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REPLICATION_QUEUE_NAME">REPLICATION_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REQUEST_SIZE_DESC">REQUEST_SIZE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#REQUEST_SIZE_NAME">REQUEST_SIZE_NAME</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RESPONSE_SIZE_DESC">RESPONSE_SIZE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#RESPONSE_SIZE_NAME">RESPONSE_SIZE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SCAN_QUEUE_DESC">SCAN_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SCAN_QUEUE_NAME">SCAN_QUEUE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SENT_BYTES_DESC">SENT_BYTES_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SENT_BYTES_NAME">SENT_BYTES_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#TOTAL_CALL_TIME_DESC">TOTAL_CALL_TIME_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#TOTAL_CALL_TIME_NAME">TOTAL_CALL_TIME_NAME</a>, <a href="../../../
 ../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#WRITE_QUEUE_DESC">WRITE_QUEUE_DESC</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#WRITE_QUEUE_NAME">WRITE_QUEUE_NAME</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.metrics.ExceptionTrackingSource">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
index aa1048a..bba815a 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -159,37 +159,41 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/Me
 </tr>
 <tr id="i8" class="altColor">
 <td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNettyDmUsage--">getNettyDmUsage</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumGeneralCallsDropped--">getNumGeneralCallsDropped</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumLifoModeSwitches--">getNumLifoModeSwitches</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getNumOpenConnections--">getNumOpenConnections</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getPriorityQueueLength--">getPriorityQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getReadQueueLength--">getReadQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getReplicationQueueLength--">getReplicationQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getScanQueueLength--">getScanQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getTotalQueueSize--">getTotalQueueSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#getWriteQueueLength--">getWriteQueueLength</a></span>()</code>&nbsp;</td>
 </tr>
@@ -355,12 +359,21 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/Me
 <a name="getActiveScanRpcHandlerCount--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getActiveScanRpcHandlerCount</h4>
 <pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#line.58">getActiveScanRpcHandlerCount</a>()</pre>
 </li>
 </ul>
+<a name="getNettyDmUsage--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNettyDmUsage</h4>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.html#line.60">getNettyDmUsage</a>()</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>


[09/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    } finally {<a n

<TRUNCATED>

[04/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    } finally {<a n

<TRUNCATED>

[02/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    } finally {<a name="line.

<TRUNCATED>

[19/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html
new file mode 100644
index 0000000..53b9c77
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanYYYToEmpty (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="TestTableInputFormatScanYYYToEmpty (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanYYYToEmpty.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/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanYYYToEmpty" class="title">Class TestTableInputFormatScanYYYToEmpty</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYYToEmpty</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#line.29">TestTableInputFormatScanYYYToEmpty</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanYYYToEmpty.html#TestTableInputFormatScanYYYToEmpty--">TestTableInputFormatScanYYYToEmpty</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#testScanYYYToEmpty--">testScanYYYToEmpty</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#line.32">CLASS_RULE</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="TestTableInputFormatScanYYYToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanYYYToEmpty</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#line.29">TestTableInputFormatScanYYYToEmpty</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="testScanYYYToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanYYYToEmpty</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html#line.39">testScanYYYToEmpty</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanYYYToEmpty.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/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html
new file mode 100644
index 0000000..101ad5b
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanYZYToEmpty (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="TestTableInputFormatScanYZYToEmpty (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanYZYToEmpty.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/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYZYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanYZYToEmpty" class="title">Class TestTableInputFormatScanYZYToEmpty</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYZYToEmpty</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#line.29">TestTableInputFormatScanYZYToEmpty</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanYZYToEmpty.html#TestTableInputFormatScanYZYToEmpty--">TestTableInputFormatScanYZYToEmpty</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#testScanYZYToEmpty--">testScanYZYToEmpty</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#line.32">CLASS_RULE</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="TestTableInputFormatScanYZYToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanYZYToEmpty</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#line.29">TestTableInputFormatScanYZYToEmpty</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="testScanYZYToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanYZYToEmpty</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html#line.39">testScanYZYToEmpty</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanYZYToEmpty.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/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYZYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html
index dce371b..a404d9d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.ProcessContentsMapper.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -409,7 +409,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapRe
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.ProcessContentsMapper.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan.html
new file mode 100644
index 0000000..07fe946
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan.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.TestTableInputFormatScan (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.TestTableInputFormatScan (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/TestTableInputFormatScan.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/TestTableInputFormatScan.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScan.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan</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/TestTableInputFormatScan.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/TestTableInputFormatScan.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScan.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan1.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan1.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan1.html
deleted file mode 100644
index c3d1f31..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan1.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!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.TestTableInputFormatScan1 (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.TestTableInputFormatScan1 (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/TestTableInputFormatScan1.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/TestTableInputFormatScan1.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan1.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1</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/TestTableInputFormatScan1.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/TestTableInputFormatScan1.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan1.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan2.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan2.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan2.html
deleted file mode 100644
index 7b8e1ca..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScan2.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!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.TestTableInputFormatScan2 (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.TestTableInputFormatScan2 (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/TestTableInputFormatScan2.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/TestTableInputFormatScan2.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan2.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2</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/TestTableInputFormatScan2.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/TestTableInputFormatScan2.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan2.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanBase.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanBase.html
index 7c559da..4990212 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanBase.html
@@ -104,15 +104,51 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a></span></code>
-<div class="block">TestTableInputFormatScan part 1.</div>
-</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></span></code>
-<div class="block">TestTableInputFormatScan part 2.</div>
-</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToAPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToAPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToAPP.html
new file mode 100644
index 0000000..4ee9c58
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToAPP.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.TestTableInputFormatScanEmptyToAPP (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.TestTableInputFormatScanEmptyToAPP (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/TestTableInputFormatScanEmptyToAPP.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/TestTableInputFormatScanEmptyToAPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToAPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToAPP" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToAPP</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToAPP</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/TestTableInputFormatScanEmptyToAPP.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/TestTableInputFormatScanEmptyToAPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToAPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBA.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBA.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBA.html
new file mode 100644
index 0000000..3ca42ea
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBA.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.TestTableInputFormatScanEmptyToBBA (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.TestTableInputFormatScanEmptyToBBA (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/TestTableInputFormatScanEmptyToBBA.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/TestTableInputFormatScanEmptyToBBA.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBA.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBA" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBA</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBA</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/TestTableInputFormatScanEmptyToBBA.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/TestTableInputFormatScanEmptyToBBA.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBA.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBB.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBB.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBB.html
new file mode 100644
index 0000000..6045276
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToBBB.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.TestTableInputFormatScanEmptyToBBB (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.TestTableInputFormatScanEmptyToBBB (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/TestTableInputFormatScanEmptyToBBB.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/TestTableInputFormatScanEmptyToBBB.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBB.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBB" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBB</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBB</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/TestTableInputFormatScanEmptyToBBB.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/TestTableInputFormatScanEmptyToBBB.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBB.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToEmpty.html
new file mode 100644
index 0000000..2ace45d
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToEmpty.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.TestTableInputFormatScanEmptyToEmpty (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.TestTableInputFormatScanEmptyToEmpty (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/TestTableInputFormatScanEmptyToEmpty.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/TestTableInputFormatScanEmptyToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToEmpty" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToEmpty</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToEmpty</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/TestTableInputFormatScanEmptyToEmpty.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/TestTableInputFormatScanEmptyToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[18/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToOPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToOPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToOPP.html
new file mode 100644
index 0000000..7a19114
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanEmptyToOPP.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.TestTableInputFormatScanEmptyToOPP (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.TestTableInputFormatScanEmptyToOPP (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/TestTableInputFormatScanEmptyToOPP.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/TestTableInputFormatScanEmptyToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToOPP" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToOPP</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToOPP</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/TestTableInputFormatScanEmptyToOPP.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/TestTableInputFormatScanEmptyToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToOPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToOPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToOPP.html
new file mode 100644
index 0000000..05fa343
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToOPP.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.TestTableInputFormatScanOBBToOPP (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.TestTableInputFormatScanOBBToOPP (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/TestTableInputFormatScanOBBToOPP.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/TestTableInputFormatScanOBBToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToOPP" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToOPP</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToOPP</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/TestTableInputFormatScanOBBToOPP.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/TestTableInputFormatScanOBBToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToQPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToQPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToQPP.html
new file mode 100644
index 0000000..75a479a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOBBToQPP.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.TestTableInputFormatScanOBBToQPP (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.TestTableInputFormatScanOBBToQPP (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/TestTableInputFormatScanOBBToQPP.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/TestTableInputFormatScanOBBToQPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToQPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToQPP" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToQPP</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOBBToQPP</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/TestTableInputFormatScanOBBToQPP.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/TestTableInputFormatScanOBBToQPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOBBToQPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOPPToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOPPToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOPPToEmpty.html
new file mode 100644
index 0000000..af8ebff
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanOPPToEmpty.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.TestTableInputFormatScanOPPToEmpty (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.TestTableInputFormatScanOPPToEmpty (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/TestTableInputFormatScanOPPToEmpty.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/TestTableInputFormatScanOPPToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOPPToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOPPToEmpty" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOPPToEmpty</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanOPPToEmpty</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/TestTableInputFormatScanOPPToEmpty.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/TestTableInputFormatScanOPPToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanOPPToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYXToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYXToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYXToEmpty.html
new file mode 100644
index 0000000..4661c10
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYXToEmpty.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.TestTableInputFormatScanYYXToEmpty (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.TestTableInputFormatScanYYXToEmpty (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/TestTableInputFormatScanYYXToEmpty.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/TestTableInputFormatScanYYXToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYXToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYXToEmpty" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYXToEmpty</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYXToEmpty</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/TestTableInputFormatScanYYXToEmpty.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/TestTableInputFormatScanYYXToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYXToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYYToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYYToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYYToEmpty.html
new file mode 100644
index 0000000..08b830f
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYYYToEmpty.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.TestTableInputFormatScanYYYToEmpty (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.TestTableInputFormatScanYYYToEmpty (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/TestTableInputFormatScanYYYToEmpty.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/TestTableInputFormatScanYYYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYYToEmpty" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYYToEmpty</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYYYToEmpty</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/TestTableInputFormatScanYYYToEmpty.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/TestTableInputFormatScanYYYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYYYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYZYToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYZYToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYZYToEmpty.html
new file mode 100644
index 0000000..79b6c87
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanYZYToEmpty.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.TestTableInputFormatScanYZYToEmpty (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.TestTableInputFormatScanYZYToEmpty (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/TestTableInputFormatScanYZYToEmpty.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/TestTableInputFormatScanYZYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYZYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYZYToEmpty" class="title">Uses of Class<br>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYZYToEmpty</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanYZYToEmpty</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/TestTableInputFormatScanYZYToEmpty.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/TestTableInputFormatScanYZYToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanYZYToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 341f932..4fbbb1d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-frame.html
@@ -79,11 +79,21 @@
 <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="TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScan</a></li>
 <li><a href="TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase</a></li>
 <li><a href="TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase.ScanMapper</a></li>
 <li><a href="TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanBase.ScanReducer</a></li>
+<li><a href="TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToAPP</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToBBA</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToBBB</a></li>
+<li><a href="TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToEmpty</a></li>
+<li><a href="TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanEmptyToOPP</a></li>
+<li><a href="TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanOBBToOPP</a></li>
+<li><a href="TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanOBBToQPP</a></li>
+<li><a href="TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanOPPToEmpty</a></li>
+<li><a href="TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanYYXToEmpty</a></li>
+<li><a href="TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanYYYToEmpty</a></li>
+<li><a href="TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableInputFormatScanYZYToEmpty</a></li>
 <li><a href="TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableMapReduce</a></li>
 <li><a href="TestTableMapReduce.ProcessContentsMapper.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableMapReduce.ProcessContentsMapper</a></li>
 <li><a href="TestTableMapReduceBase.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestTableMapReduceBase</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 93d9b5b..90cc92e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
@@ -425,36 +425,71 @@
 </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>
-</td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a></td>
+<td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></td>
-<td class="colLast">
-<div class="block">TestTableInputFormatScan part 2.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></td>
 <td class="colLast">
-<div class="block">
- Tests various scan start and stop row scenarios.</div>
+<div class="block">Tests various scan start and stop row scenarios.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a></td>
 <td class="colLast">
 <div class="block">Pass the key and value to reduce.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></td>
 <td class="colLast">
 <div class="block">Checks the last and first key seen against the scanner boundaries.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableMapReduce</a></td>
 <td class="colLast">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 da19535..b06a1b0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -217,8 +217,18 @@
 <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>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan2</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScan</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToAPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToBBA</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToBBB</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanEmptyToOPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOBBToOPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOBBToQPP</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanOPPToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYYXToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYYYToEmpty</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableInputFormatScanYZYToEmpty</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTableMapReduceBase</span></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
index 90a5f16..5df604b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-use.html
@@ -182,8 +182,7 @@
 </tr>
 <tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/class-use/TestTableInputFormatScanBase.html#org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a>
-<div class="block">
- Tests various scan start and stop row scenarios.</div>
+<div class="block">Tests various scan start and stop row scenarios.</div>
 </td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
index 08a0969..d9a087b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.58">TestRegionReplicaSplit</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.56">TestRegionReplicaSplit</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>
@@ -237,7 +237,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.60">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.58">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -246,7 +246,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.62">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.60">LOG</a></pre>
 </li>
 </ul>
 <a name="NB_SERVERS">
@@ -255,7 +255,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NB_SERVERS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.64">NB_SERVERS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.62">NB_SERVERS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.TestRegionReplicaSplit.NB_SERVERS">Constant Field Values</a></dd>
@@ -268,7 +268,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>table</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.65">table</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.63">table</a></pre>
 </li>
 </ul>
 <a name="HTU">
@@ -277,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HTU</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.67">HTU</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.65">HTU</a></pre>
 </li>
 </ul>
 <a name="f">
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>f</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.68">f</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.66">f</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.81">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.79">name</a></pre>
 </li>
 </ul>
 </li>
@@ -312,7 +312,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionReplicaSplit</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.58">TestRegionReplicaSplit</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.56">TestRegionReplicaSplit</a>()</pre>
 </li>
 </ul>
 </li>
@@ -329,7 +329,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.71">beforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.69">beforeClass</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>
@@ -343,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.83">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.81">createTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -357,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.92">getSplits</a>(int&nbsp;numRegions)</pre>
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.90">getSplits</a>(int&nbsp;numRegions)</pre>
 </li>
 </ul>
 <a name="afterClass--">
@@ -366,7 +366,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>afterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.100">afterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.98">afterClass</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>
@@ -380,7 +380,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testRegionReplicaSplitRegionAssignment</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.106">testRegionReplicaSplitRegionAssignment</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#line.105">testRegionReplicaSplitRegionAssignment</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/06efc31c/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 1800abf..e37ee9c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -578,15 +578,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/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/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/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/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/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/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/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
index a1c9b1d..28973e0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
@@ -81,14 +81,14 @@
 <ul>
 <li type="circle">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"><span class="typeNameLink">Object</span></a>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
+<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.procedure.ProcedureManager

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/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 6663202..5fc6b0a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -211,9 +211,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/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/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/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/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
index 9f2d175..1b6a2b3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4522">TestHRegion.Appender</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.4264">TestHRegion.Appender</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 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">TestCase for append</div>
@@ -228,7 +228,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4523">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4265">region</a></pre>
 </li>
 </ul>
 <a name="appendRow">
@@ -237,7 +237,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>appendRow</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4524">appendRow</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4266">appendRow</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -246,7 +246,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4525">family</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4267">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -255,7 +255,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4526">qualifier</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4268">qualifier</a></pre>
 </li>
 </ul>
 <a name="CHAR">
@@ -264,7 +264,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockList">
 <li class="blockList">
 <h4>CHAR</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4527">CHAR</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4269">CHAR</a></pre>
 </li>
 </ul>
 <a name="appendCounter">
@@ -273,7 +273,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>appendCounter</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4528">appendCounter</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4270">appendCounter</a></pre>
 </li>
 </ul>
 </li>
@@ -290,7 +290,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Appender</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4530">Appender</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4272">Appender</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                 int&nbsp;appendCounter)</pre>
 </li>
 </ul>
@@ -308,7 +308,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4536">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html#line.4278">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
index 5730fd9..3aff2af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3718">TestHRegion.FlushThread</a>
+<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.3487">TestHRegion.FlushThread</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -255,7 +255,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3719">done</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3488">done</a></pre>
 </li>
 </ul>
 <a name="error">
@@ -264,7 +264,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>error</h4>
-<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3720">error</a></pre>
+<pre>private&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3489">error</a></pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FlushThread</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3722">FlushThread</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3491">FlushThread</a>()</pre>
 </li>
 </ul>
 </li>
@@ -298,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>done</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3726">done</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3495">done</a>()</pre>
 </li>
 </ul>
 <a name="checkNoError--">
@@ -307,7 +307,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkNoError</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3733">checkNoError</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3502">checkNoError</a>()</pre>
 </li>
 </ul>
 <a name="run--">
@@ -316,7 +316,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3740">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3509">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -331,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3767">flush</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html#line.3536">flush</a>()</pre>
 </li>
 </ul>
 </li>


[10/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    } finally {<a name="line.973">

<TRUNCATED>

[11/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html
new file mode 100644
index 0000000..b3970cd
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html
@@ -0,0 +1,114 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanOBBToOPP extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanOBBToOPP.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanOBBToOPP() throws IOException, InterruptedException, ClassNotFoundException {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    testScan("obb", "opp", "opo");<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
+<span class="sourceLineNo">042</span>}<a name="line.42"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html
new file mode 100644
index 0000000..0c7355a
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html
@@ -0,0 +1,114 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanOBBToQPP extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanOBBToQPP.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanOBBToQPP() throws IOException, InterruptedException, ClassNotFoundException {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    testScan("obb", "qpp", "qpo");<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
+<span class="sourceLineNo">042</span>}<a name="line.42"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html
new file mode 100644
index 0000000..3f2701f
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanOPPToEmpty extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanOPPToEmpty.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanOPPToEmpty()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan("opp", null, "zzz");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html
new file mode 100644
index 0000000..24bc9d4
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanYYXToEmpty extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanYYXToEmpty.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanYYXToEmpty()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan("yyx", null, "zzz");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html
new file mode 100644
index 0000000..d8ea983
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanYYYToEmpty extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanYYYToEmpty.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanYYYToEmpty()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan("yyy", null, "zzz");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html
new file mode 100644
index 0000000..b6a5648
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanYZYToEmpty extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanYZYToEmpty.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanYZYToEmpty()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan("yzy", null, "zzz");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
index 63d0ce2..efe1531 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html
@@ -37,134 +37,133 @@
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HConstants;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ServerName;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.TableName;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Table;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.AfterClass;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.BeforeClass;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.ClassRule;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.Rule;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.Test;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.junit.experimental.categories.Category;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.rules.TestName;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>@Category({ RegionServerTests.class, LargeTests.class })<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class TestRegionReplicaSplit {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  @ClassRule<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      HBaseClassTestRule.forClass(TestRegionReplicaSplit.class);<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final Logger LOG = LoggerFactory.getLogger(TestRegionReplicaSplit.class);<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final int NB_SERVERS = 4;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static Table table;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final HBaseTestingUtility HTU = new HBaseTestingUtility();<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final byte[] f = HConstants.CATALOG_FAMILY;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  @BeforeClass<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  public static void beforeClass() throws Exception {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    HTU.getConfiguration().setInt("hbase.master.wait.on.regionservers.mintostart", 3);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    HTU.startMiniCluster(NB_SERVERS);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    final TableName tableName = TableName.valueOf(TestRegionReplicaSplit.class.getSimpleName());<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    // Create table then get the single region for our new table.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    createTable(tableName);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Rule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public TestName name = new TestName();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private static void createTable(final TableName tableName) throws IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableName);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    builder.setRegionReplication(3);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    // create a table with 3 replication<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    table = HTU.createTable(builder.build(), new byte[][] { f }, getSplits(2),<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      new Configuration(HTU.getConfiguration()));<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private static byte[][] getSplits(int numRegions) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    return split.split(numRegions);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  @AfterClass<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public static void afterClass() throws Exception {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    HRegionServer.TEST_SKIP_REPORTING_TRANSITION = false;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    table.close();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    HTU.shutdownMiniCluster();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void testRegionReplicaSplitRegionAssignment() throws Exception {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    HTU.loadNumericRows(table, f, 0, 3);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    // split the table<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    List&lt;RegionInfo&gt; regions = new ArrayList&lt;RegionInfo&gt;();<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    for (RegionServerThread rs : HTU.getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      for (Region r : rs.getRegionServer().getRegions(table.getName())) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        System.out.println("the region before split is is " + r.getRegionInfo()<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            + rs.getRegionServer().getServerName());<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        regions.add(r.getRegionInfo());<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    HTU.getAdmin().split(table.getName(), Bytes.toBytes(1));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    int count = 0;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    while (true) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      for (RegionServerThread rs : HTU.getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        for (Region r : rs.getRegionServer().getRegions(table.getName())) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          count++;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      if (count &gt;= 9) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        break;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      }<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      count = 0;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    List&lt;ServerName&gt; newRegionLocations = new ArrayList&lt;ServerName&gt;();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    for (RegionServerThread rs : HTU.getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      RegionInfo prevInfo = null;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      for (Region r : rs.getRegionServer().getRegions(table.getName())) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        if (!regions.contains(r.getRegionInfo())<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            &amp;&amp; !RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>          LOG.info("The region is " + r.getRegionInfo() + " the location is "<a name="line.136"></a>
-<span class="sourceLineNo">137</span>              + rs.getRegionServer().getServerName());<a name="line.137"></a>
-<span class="sourceLineNo">138</span>          if (!RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())<a name="line.138"></a>
-<span class="sourceLineNo">139</span>              &amp;&amp; newRegionLocations.contains(rs.getRegionServer().getServerName())<a name="line.139"></a>
-<span class="sourceLineNo">140</span>              &amp;&amp; prevInfo != null<a name="line.140"></a>
-<span class="sourceLineNo">141</span>              &amp;&amp; Bytes.equals(prevInfo.getStartKey(), r.getRegionInfo().getStartKey())<a name="line.141"></a>
-<span class="sourceLineNo">142</span>              &amp;&amp; Bytes.equals(prevInfo.getEndKey(), r.getRegionInfo().getEndKey())) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            fail("Splitted regions should not be assigned to same region server");<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          } else {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>            prevInfo = r.getRegionInfo();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>            if (!RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                &amp;&amp; !newRegionLocations.contains(rs.getRegionServer().getServerName())) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>              newRegionLocations.add(rs.getRegionServer().getServerName());<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>        }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // since we assign the daughter regions in round robin fashion, both the daugther region<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    // replicas will be assigned to two unique servers.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    assertEquals("The new regions should be assigned to 3 unique servers ", 3,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      newRegionLocations.size());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>}<a name="line.159"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.ServerName;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.TableName;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Table;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.junit.AfterClass;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.junit.BeforeClass;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.ClassRule;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.Rule;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.Test;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.experimental.categories.Category;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.rules.TestName;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>@Category({ RegionServerTests.class, LargeTests.class })<a name="line.55"></a>
+<span class="sourceLineNo">056</span>public class TestRegionReplicaSplit {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  @ClassRule<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      HBaseClassTestRule.forClass(TestRegionReplicaSplit.class);<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final Logger LOG = LoggerFactory.getLogger(TestRegionReplicaSplit.class);<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final int NB_SERVERS = 4;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static Table table;<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final HBaseTestingUtility HTU = new HBaseTestingUtility();<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final byte[] f = HConstants.CATALOG_FAMILY;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>  @BeforeClass<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public static void beforeClass() throws Exception {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    HTU.getConfiguration().setInt("hbase.master.wait.on.regionservers.mintostart", 3);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    HTU.startMiniCluster(NB_SERVERS);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    final TableName tableName = TableName.valueOf(TestRegionReplicaSplit.class.getSimpleName());<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // Create table then get the single region for our new table.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    createTable(tableName);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Rule<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public TestName name = new TestName();<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static void createTable(final TableName tableName) throws IOException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableName);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    builder.setRegionReplication(3);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    // create a table with 3 replication<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    table = HTU.createTable(builder.build(), new byte[][] { f }, getSplits(2),<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      new Configuration(HTU.getConfiguration()));<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private static byte[][] getSplits(int numRegions) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    return split.split(numRegions);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  @AfterClass<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public static void afterClass() throws Exception {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    HRegionServer.TEST_SKIP_REPORTING_TRANSITION = false;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    table.close();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    HTU.shutdownMiniCluster();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  @Test<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public void testRegionReplicaSplitRegionAssignment() throws Exception {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    HTU.loadNumericRows(table, f, 0, 3);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    // split the table<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    List&lt;RegionInfo&gt; regions = new ArrayList&lt;RegionInfo&gt;();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    for (RegionServerThread rs : HTU.getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      for (Region r : rs.getRegionServer().getRegions(table.getName())) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        System.out.println("the region before split is is " + r.getRegionInfo()<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            + rs.getRegionServer().getServerName());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        regions.add(r.getRegionInfo());<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    HTU.getAdmin().split(table.getName(), Bytes.toBytes(1));<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    int count = 0;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    while (true) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      for (RegionServerThread rs : HTU.getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        for (Region r : rs.getRegionServer().getRegions(table.getName())) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          count++;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      if (count &gt;= 9) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        break;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      count = 0;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    List&lt;ServerName&gt; newRegionLocations = new ArrayList&lt;ServerName&gt;();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    for (RegionServerThread rs : HTU.getMiniHBaseCluster().getRegionServerThreads()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      RegionInfo prevInfo = null;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      for (Region r : rs.getRegionServer().getRegions(table.getName())) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        if (!regions.contains(r.getRegionInfo())<a name="line.133"></a>
+<span class="sourceLineNo">134</span>            &amp;&amp; !RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          LOG.info("The region is " + r.getRegionInfo() + " the location is "<a name="line.135"></a>
+<span class="sourceLineNo">136</span>              + rs.getRegionServer().getServerName());<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          if (!RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())<a name="line.137"></a>
+<span class="sourceLineNo">138</span>              &amp;&amp; newRegionLocations.contains(rs.getRegionServer().getServerName())<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              &amp;&amp; prevInfo != null<a name="line.139"></a>
+<span class="sourceLineNo">140</span>              &amp;&amp; Bytes.equals(prevInfo.getStartKey(), r.getRegionInfo().getStartKey())<a name="line.140"></a>
+<span class="sourceLineNo">141</span>              &amp;&amp; Bytes.equals(prevInfo.getEndKey(), r.getRegionInfo().getEndKey())) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>            fail("Splitted regions should not be assigned to same region server");<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          } else {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>            prevInfo = r.getRegionInfo();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            if (!RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())<a name="line.145"></a>
+<span class="sourceLineNo">146</span>                &amp;&amp; !newRegionLocations.contains(rs.getRegionServer().getServerName())) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>              newRegionLocations.add(rs.getRegionServer().getServerName());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>            }<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>      }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    // since we assign the daughter regions in round robin fashion, both the daugther region<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    // replicas will be assigned to two unique servers.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    assertEquals("The new regions should be assigned to 3 unique servers ", 3,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      newRegionLocations.size());<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>}<a name="line.158"></a>
 
 
 


[21/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html
new file mode 100644
index 0000000..6a94220
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanEmptyToBBA (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="TestTableInputFormatScanEmptyToBBA (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanEmptyToBBA.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/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBA.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanEmptyToBBA" class="title">Class TestTableInputFormatScanEmptyToBBA</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBA</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#line.29">TestTableInputFormatScanEmptyToBBA</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanEmptyToBBA.html#TestTableInputFormatScanEmptyToBBA--">TestTableInputFormatScanEmptyToBBA</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#testScanEmptyToBBA--">testScanEmptyToBBA</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#line.32">CLASS_RULE</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="TestTableInputFormatScanEmptyToBBA--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanEmptyToBBA</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#line.29">TestTableInputFormatScanEmptyToBBA</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="testScanEmptyToBBA--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanEmptyToBBA</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html#line.39">testScanEmptyToBBA</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanEmptyToBBA.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/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBA.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html
new file mode 100644
index 0000000..f8056a4
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanEmptyToBBB (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="TestTableInputFormatScanEmptyToBBB (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanEmptyToBBB.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/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBB.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanEmptyToBBB" class="title">Class TestTableInputFormatScanEmptyToBBB</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToBBB</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#line.29">TestTableInputFormatScanEmptyToBBB</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanEmptyToBBB.html#TestTableInputFormatScanEmptyToBBB--">TestTableInputFormatScanEmptyToBBB</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#testScanEmptyToBBB--">testScanEmptyToBBB</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#line.32">CLASS_RULE</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="TestTableInputFormatScanEmptyToBBB--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanEmptyToBBB</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#line.29">TestTableInputFormatScanEmptyToBBB</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="testScanEmptyToBBB--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanEmptyToBBB</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html#line.39">testScanEmptyToBBB</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanEmptyToBBB.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/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToBBB.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html
new file mode 100644
index 0000000..244f35f
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanEmptyToEmpty (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="TestTableInputFormatScanEmptyToEmpty (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanEmptyToEmpty.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/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanEmptyToEmpty" class="title">Class TestTableInputFormatScanEmptyToEmpty</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToEmpty</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#line.29">TestTableInputFormatScanEmptyToEmpty</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanEmptyToEmpty.html#TestTableInputFormatScanEmptyToEmpty--">TestTableInputFormatScanEmptyToEmpty</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#testScanEmptyToEmpty--">testScanEmptyToEmpty</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#line.32">CLASS_RULE</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="TestTableInputFormatScanEmptyToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanEmptyToEmpty</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#line.29">TestTableInputFormatScanEmptyToEmpty</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="testScanEmptyToEmpty--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanEmptyToEmpty</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html#line.39">testScanEmptyToEmpty</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>,
+                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanEmptyToEmpty.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/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToEmpty.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html
new file mode 100644
index 0000000..3f31bb3
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanEmptyToOPP (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="TestTableInputFormatScanEmptyToOPP (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanEmptyToOPP.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/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanEmptyToOPP" class="title">Class TestTableInputFormatScanEmptyToOPP</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToOPP</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#line.29">TestTableInputFormatScanEmptyToOPP</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanEmptyToOPP.html#TestTableInputFormatScanEmptyToOPP--">TestTableInputFormatScanEmptyToOPP</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#testScanEmptyToOPP--">testScanEmptyToOPP</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#line.32">CLASS_RULE</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="TestTableInputFormatScanEmptyToOPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanEmptyToOPP</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#line.29">TestTableInputFormatScanEmptyToOPP</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="testScanEmptyToOPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanEmptyToOPP</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html#line.39">testScanEmptyToOPP</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanEmptyToOPP.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/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToOPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[08/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
index d696d8f..e272ef5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
@@ -254,182 +254,182 @@
 <span class="sourceLineNo">246</span>  }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
 <span class="sourceLineNo">248</span>  @After<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public void tearDown() throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TEST_UTIL.cleanupTestDir();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<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>   * Test that I can use the max flushed sequence id after the close.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @throws IOException<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Test<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public void testSequenceId() throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    region.close();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Open region again.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte [] value = Bytes.toBytes(method);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // Make a random put against our cf.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    Put put = new Put(value);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    region.put(put);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // No flush yet so init numbers should still be in place.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    region.flush(true);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long max = region.getMaxFlushedSeqId();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    region.close();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * flushes for region close."<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Test<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HRegion region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // Get some random bytes.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    byte [] value = Bytes.toBytes(method);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // Make a random put against our cf.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Put put = new Put(value);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    region.put(put);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    storeFlushCtx.prepare();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // Second put something in current memstore<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    region.put(put);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    region.close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /*<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * See HBASE-10845<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Test<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      StoreFlushContext storeFlushCtx;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          throws IOException {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        super(fs, rootDir, logName, conf);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public void sync(long txid) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        storeFlushCtx.prepare();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        super.sync(txid);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    faultyLog.init();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        COLUMN_FAMILY_BYTES);<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // Get some random bytes.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    byte [] value = Bytes.toBytes(method);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Put put = new Put(value);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    boolean threwIOE = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      region.put(put);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    } catch (IOException ioe) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      threwIOE = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    } finally {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mss.getDataSize() == 0);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Create a WAL outside of the usual helper in<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * {@code fs.file.impl}.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    final Configuration walConf = new Configuration(conf);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return new WALFactory(walConf, callingMethod)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Path rootDir = new Path(dir + testName);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    hLog.init();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    HRegion region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        COLUMN_FAMILY_BYTES);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Put one value<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    byte [] value = Bytes.toBytes(method);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Put put = new Put(value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    region.put(put);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    assertTrue(onePutSize &gt; 0);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    doThrow(new IOException())<a name="line.406"></a>
-<span class="sourceLineNo">407</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    put = new Put(value);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      region.put(put);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      fail("Should have failed with IOException");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    } catch (IOException expected) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long expectedSize = onePutSize * 2;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertEquals("memstoreSize should be incremented",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        expectedSize, region.getMemStoreDataSize());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals("flushable size should be incremented",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    region.setCoprocessorHost(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.424"></a>
+<span class="sourceLineNo">249</span>  public void tearDown() throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // Region may have been closed, but it is still no harm if we close it again here using HTU.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    EnvironmentEdgeManagerTestHelper.reset();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    LOG.info("Cleaning test directory: " + TEST_UTIL.getDataTestDir());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TEST_UTIL.cleanupTestDir();<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>  /**<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * Test that I can use the max flushed sequence id after the close.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testSequenceId() throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // Weird. This returns 0 if no store files or no edits. Afraid to change it.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    region.close();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Open region again.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    byte [] value = Bytes.toBytes(method);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // Make a random put against our cf.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    Put put = new Put(value);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    region.put(put);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // No flush yet so init numbers should still be in place.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    assertEquals(HConstants.NO_SEQNUM, region.getMaxFlushedSeqId());<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(0, (long)region.getMaxStoreSeqId().get(COLUMN_FAMILY_BYTES));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    region.flush(true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long max = region.getMaxFlushedSeqId();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    region.close();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertEquals(max, region.getMaxFlushedSeqId());<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>   * Test for Bug 2 of HBASE-10466.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * "Bug 2: Conditions for the first flush of region close (so-called pre-flush) If memstoreSize<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * is smaller than a certain value, or when region close starts a flush is ongoing, the first<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * flush is skipped and only the second flush takes place. However, two flushes are required in<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * case previous flush fails and leaves some data in snapshot. The bug could cause loss of data<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * in current memstore. The fix is removing all conditions except abort check so we ensure 2<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * flushes for region close."<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @throws IOException<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Test<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void testCloseCarryingSnapshot() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    region = initHRegion(tableName, method, CONF, COLUMN_FAMILY_BYTES);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Get some random bytes.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    byte [] value = Bytes.toBytes(method);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Make a random put against our cf.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Put put = new Put(value);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    put.addColumn(COLUMN_FAMILY_BYTES, null, value);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First put something in current memstore, which will be in snapshot after flusher.prepare()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    region.put(put);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    StoreFlushContext storeFlushCtx = store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    storeFlushCtx.prepare();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    // Second put something in current memstore<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    region.put(put);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // Close with something in memstore and something in the snapshot.  Make sure all is cleared.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    region.close();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /*<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * This test is for verifying memstore snapshot size is correctly updated in case of rollback<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * See HBASE-10845<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  @Test<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public void testMemstoreSnapshotSize() throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    class MyFaultyFSLog extends FaultyFSLog {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFlushContext storeFlushCtx;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      public MyFaultyFSLog(FileSystem fs, Path rootDir, String logName, Configuration conf)<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        super(fs, rootDir, logName, conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      void setStoreFlushCtx(StoreFlushContext storeFlushCtx) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        this.storeFlushCtx = storeFlushCtx;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      public void sync(long txid) throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        storeFlushCtx.prepare();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        super.sync(txid);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Path rootDir = new Path(dir + "testMemstoreSnapshotSize");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    faultyLog.init();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, faultyLog,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        COLUMN_FAMILY_BYTES);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Get some random bytes.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    byte [] value = Bytes.toBytes(method);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    faultyLog.setStoreFlushCtx(store.createFlushContext(12345, FlushLifeCycleTracker.DUMMY));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Put put = new Put(value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    faultyLog.setFailureType(FaultyFSLog.FailureType.SYNC);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    boolean threwIOE = false;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    try {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      region.put(put);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (IOException ioe) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      threwIOE = true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } finally {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      assertTrue("The regionserver should have thrown an exception", threwIOE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    MemStoreSize mss = store.getFlushableSize();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertTrue("flushable size should be zero, but it is " + mss,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        mss.getDataSize() == 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Create a WAL outside of the usual helper in<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * {@link HBaseTestingUtility#createWal(Configuration, Path, RegionInfo)} because that method<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * doesn't play nicely with FaultyFileSystem. Call this method before overriding<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * {@code fs.file.impl}.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param callingMethod a unique component for the path, probably the name of the test method.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private static WAL createWALCompatibleWithFaultyFileSystem(String callingMethod,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Configuration conf, TableName tableName) throws IOException {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    final Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final Configuration walConf = new Configuration(conf);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return new WALFactory(walConf, callingMethod)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate";<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    FileSystem fs = FileSystem.get(CONF);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Path rootDir = new Path(dir + testName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    hLog.init();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    region = initHRegion(tableName, null, null, false, Durability.SYNC_WAL, hLog,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        COLUMN_FAMILY_BYTES);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HStore store = region.getStore(COLUMN_FAMILY_BYTES);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(0, region.getMemStoreDataSize());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Put one value<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    byte [] value = Bytes.toBytes(method);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    Put put = new Put(value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("abc"), value);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    region.put(put);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long onePutSize = region.getMemStoreDataSize();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertTrue(onePutSize &gt; 0);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RegionCoprocessorHost mockedCPHost = Mockito.mock(RegionCoprocessorHost.class);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    doThrow(new IOException())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>       .when(mockedCPHost).postBatchMutate(Mockito.&lt;MiniBatchOperationInProgress&lt;Mutation&gt;&gt;any());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    region.setCoprocessorHost(mockedCPHost);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    put = new Put(value);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    put.addColumn(COLUMN_FAMILY_BYTES, Bytes.toBytes("dfg"), value);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    try {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      region.put(put);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      fail("Should have failed with IOException");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    } catch (IOException expected) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    long expectedSize = onePutSize * 2;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals("memstoreSize should be incremented",<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        expectedSize, region.getMemStoreDataSize());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals("flushable size should be incremented",<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        expectedSize, store.getFlushableSize().getDataSize());<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    region.setCoprocessorHost(null);<a name="line.424"></a>
 <span class="sourceLineNo">425</span>  }<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
 <span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
@@ -786,5835 +786,5513 @@
 <span class="sourceLineNo">778</span>  public void testSkipRecoveredEditsReplayAllIgnored() throws Exception {<a name="line.778"></a>
 <span class="sourceLineNo">779</span>    byte[] family = Bytes.toBytes("family");<a name="line.779"></a>
 <span class="sourceLineNo">780</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    try {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>        dos.writeInt(i);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        dos.close();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      long minSeqId = 2000;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      dos.close();<a name="line.795"></a>
-<span class="sourceLineNo">796</span><a name="line.796"></a>
-<span class="sourceLineNo">797</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      for (HStore store : region.getStores()) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      assertEquals(minSeqId, seqId);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } finally {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      this.region = null;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  @Test<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    byte[] family = Bytes.toBytes("family");<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    try {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.820"></a>
+<span class="sourceLineNo">781</span>    Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>    Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    for (int i = 1000; i &lt; 1050; i += 10) {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      dos.writeInt(i);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      dos.close();<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    long minSeqId = 2000;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", minSeqId - 1));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    FSDataOutputStream dos = fs.create(recoveredEdits);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    dos.close();<a name="line.794"></a>
+<span class="sourceLineNo">795</span><a name="line.795"></a>
+<span class="sourceLineNo">796</span>    Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    for (HStore store : region.getStores()) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), minSeqId);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, null);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    assertEquals(minSeqId, seqId);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>  @Test<a name="line.804"></a>
+<span class="sourceLineNo">805</span>  public void testSkipRecoveredEditsReplayTheLastFileIgnored() throws Exception {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    byte[] family = Bytes.toBytes("family");<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    try {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.810"></a>
+<span class="sourceLineNo">811</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      byte[][] columns = region.getTableDescriptor().getColumnFamilyNames().toArray(new byte[0][]);<a name="line.813"></a>
+<span class="sourceLineNo">814</span><a name="line.814"></a>
+<span class="sourceLineNo">815</span>      assertEquals(0, region.getStoreFileList(columns).size());<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.817"></a>
+<span class="sourceLineNo">818</span><a name="line.818"></a>
+<span class="sourceLineNo">819</span>      long maxSeqId = 1050;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      long minSeqId = 1000;<a name="line.820"></a>
 <span class="sourceLineNo">821</span><a name="line.821"></a>
-<span class="sourceLineNo">822</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>      long maxSeqId = 1050;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      long minSeqId = 1000;<a name="line.825"></a>
+<span class="sourceLineNo">822</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.823"></a>
+<span class="sourceLineNo">824</span>        fs.create(recoveredEdits);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.825"></a>
 <span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>      for (long i = minSeqId; i &lt;= maxSeqId; i += 10) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", i));<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        fs.create(recoveredEdits);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>        long time = System.nanoTime();<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        WALEdit edit = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        if (i == maxSeqId) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.835"></a>
-<span class="sourceLineNo">836</span>          CompactionDescriptor.newBuilder()<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.839"></a>
-<span class="sourceLineNo">840</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.841"></a>
-<span class="sourceLineNo">842</span>          .build());<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        } else {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          edit = new WALEdit();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.845"></a>
-<span class="sourceLineNo">846</span>            .toBytes(i)));<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        }<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        writer.close();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      long recoverSeqId = 1030;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      for (HStore store : region.getStores()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      assertEquals(maxSeqId, seqId);<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>      // assert that the files are flushed<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.863"></a>
-<span class="sourceLineNo">864</span><a name="line.864"></a>
-<span class="sourceLineNo">865</span>    } finally {<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      this.region = null;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      wals.close();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Test<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    testRecoveredEditsReplayCompaction(false);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    testRecoveredEditsReplayCompaction(true);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    byte[] family = Bytes.toBytes("family");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    try {<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>      long maxSeqId = 3;<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      long minSeqId = 0;<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        region.put(put);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        region.flush(true);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // this will create a region with 3 files<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>        storeFiles.add(sf.getPath());<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>      // disable compaction completion<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      region.compactStores();<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>      // ensure that nothing changed<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.915"></a>
-<span class="sourceLineNo">916</span>          + "from the compaction, could not find any";<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      assertNotNull(errorMsg, files);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>      assertEquals(errorMsg, 1, files.length);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      // move the file inside region dir<a name="line.919"></a>
-<span class="sourceLineNo">920</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          files[0].getPath());<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        // Mix the byte array to have a new encodedName<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      }<a name="line.928"></a>
+<span class="sourceLineNo">827</span>        long time = System.nanoTime();<a name="line.827"></a>
+<span class="sourceLineNo">828</span>        WALEdit edit = null;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>        if (i == maxSeqId) {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          edit = WALEdit.createCompaction(region.getRegionInfo(),<a name="line.830"></a>
+<span class="sourceLineNo">831</span>          CompactionDescriptor.newBuilder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>          .setTableName(ByteString.copyFrom(tableName.getName()))<a name="line.832"></a>
+<span class="sourceLineNo">833</span>          .setFamilyName(ByteString.copyFrom(regionName))<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          .setEncodedRegionName(ByteString.copyFrom(regionName))<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          .setStoreHomeDirBytes(ByteString.copyFrom(Bytes.toBytes(regiondir.toString())))<a name="line.835"></a>
+<span class="sourceLineNo">836</span>          .setRegionName(ByteString.copyFrom(region.getRegionInfo().getRegionName()))<a name="line.836"></a>
+<span class="sourceLineNo">837</span>          .build());<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        } else {<a name="line.838"></a>
+<span class="sourceLineNo">839</span>          edit = new WALEdit();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          edit.add(new KeyValue(row, family, Bytes.toBytes(i), time, KeyValue.Type.Put, Bytes<a name="line.840"></a>
+<span class="sourceLineNo">841</span>            .toBytes(i)));<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, i, time,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>            HConstants.DEFAULT_CLUSTER_ID), edit));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        writer.close();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>      long recoverSeqId = 1030;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      Map&lt;byte[], Long&gt; maxSeqIdInStores = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      MonitoredTask status = TaskMonitor.get().createStatus(method);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      for (HStore store : region.getStores()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        maxSeqIdInStores.put(Bytes.toBytes(store.getColumnFamilyName()), recoverSeqId - 1);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      long seqId = region.replayRecoveredEditsIfAny(regiondir, maxSeqIdInStores, null, status);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      assertEquals(maxSeqId, seqId);<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>      // assert that the files are flushed<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      assertEquals(1, region.getStoreFileList(columns).size());<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span>    } finally {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      this.region = null;<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      wals.close();<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
+<span class="sourceLineNo">868</span>  public void testRecoveredEditsReplayCompaction() throws Exception {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    testRecoveredEditsReplayCompaction(false);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    testRecoveredEditsReplayCompaction(true);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>  }<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void testRecoveredEditsReplayCompaction(boolean mismatchedRegionName) throws Exception {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CONF.setClass(HConstants.REGION_IMPL, HRegionForTesting.class, Region.class);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    byte[] family = Bytes.toBytes("family");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    this.region = initHRegion(tableName, method, CONF, family);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    final WALFactory wals = new WALFactory(CONF, method);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    try {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>      long maxSeqId = 3;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      long minSeqId = 0;<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        region.put(put);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        region.flush(true);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>      // this will create a region with 3 files<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;Path&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        storeFiles.add(sf.getPath());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>      // disable compaction completion<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      CONF.setBoolean("hbase.hstore.compaction.complete", false);<a name="line.901"></a>
+<span class="sourceLineNo">902</span>      region.compactStores();<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>      // ensure that nothing changed<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.905"></a>
+<span class="sourceLineNo">906</span><a name="line.906"></a>
+<span class="sourceLineNo">907</span>      // now find the compacted file, and manually add it to the recovered edits<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      Path tmpDir = new Path(region.getRegionFileSystem().getTempDir(), Bytes.toString(family));<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      FileStatus[] files = FSUtils.listStatus(fs, tmpDir);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      String errorMsg = "Expected to find 1 file in the region temp directory "<a name="line.910"></a>
+<span class="sourceLineNo">911</span>          + "from the compaction, could not find any";<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      assertNotNull(errorMsg, files);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      assertEquals(errorMsg, 1, files.length);<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      // move the file inside region dir<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family),<a name="line.915"></a>
+<span class="sourceLineNo">916</span>          files[0].getPath());<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>      byte[] encodedNameAsBytes = this.region.getRegionInfo().getEncodedNameAsBytes();<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      byte[] fakeEncodedNameAsBytes = new byte [encodedNameAsBytes.length];<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      for (int i=0; i &lt; encodedNameAsBytes.length; i++) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        // Mix the byte array to have a new encodedName<a name="line.921"></a>
+<span class="sourceLineNo">922</span>        fakeEncodedNameAsBytes[i] = (byte) (encodedNameAsBytes[i] + 1);<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      }<a name="line.923"></a>
+<span class="sourceLineNo">924</span><a name="line.924"></a>
+<span class="sourceLineNo">925</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.926"></a>
+<span class="sourceLineNo">927</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.927"></a>
+<span class="sourceLineNo">928</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.928"></a>
 <span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>      CompactionDescriptor compactionDescriptor = ProtobufUtil.toCompactionDescriptor(this.region<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        .getRegionInfo(), mismatchedRegionName ? fakeEncodedNameAsBytes : null, family,<a name="line.931"></a>
-<span class="sourceLineNo">932</span>            storeFiles, Lists.newArrayList(newFile),<a name="line.932"></a>
-<span class="sourceLineNo">933</span>            region.getRegionFileSystem().getStoreDir(Bytes.toString(family)));<a name="line.933"></a>
+<span class="sourceLineNo">930</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.930"></a>
+<span class="sourceLineNo">931</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.933"></a>
 <span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>      WALUtil.writeCompactionMarker(region.getWAL(), this.region.getReplicationScope(),<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          this.region.getRegionInfo(), compactionDescriptor, region.getMVCC());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>      Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.938"></a>
-<span class="sourceLineNo">939</span><a name="line.939"></a>
-<span class="sourceLineNo">940</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      fs.create(recoveredEdits);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>      long time = System.nanoTime();<a name="line.944"></a>
+<span class="sourceLineNo">935</span>      Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      fs.create(recoveredEdits);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>      long time = System.nanoTime();<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.942"></a>
+<span class="sourceLineNo">943</span>          compactionDescriptor)));<a name="line.943"></a>
+<span class="sourceLineNo">944</span>      writer.close();<a name="line.944"></a>
 <span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>      writer.append(new WAL.Entry(new WALKeyImpl(regionName, tableName, 10, time,<a name="line.946"></a>
-<span class="sourceLineNo">947</span>          HConstants.DEFAULT_CLUSTER_ID), WALEdit.createCompaction(region.getRegionInfo(),<a name="line.947"></a>
-<span class="sourceLineNo">948</span>          compactionDescriptor)));<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      writer.close();<a name="line.949"></a>
-<span class="sourceLineNo">950</span><a name="line.950"></a>
-<span class="sourceLineNo">951</span>      // close the region now, and reopen again<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      region.getTableDescriptor();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      region.getRegionInfo();<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      region.close();<a name="line.954"></a>
-<span class="sourceLineNo">955</span>      try {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>        region = HRegion.openHRegion(region, null);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      } catch (WrongRegionException wre) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      // now check whether we have only one store file, the compacted one<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      for (HStoreFile sf : sfs) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      }<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      if (!mismatchedRegionName) {<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Result result = region.get(get);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>      }<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    } finally {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      this.region = null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      wals.close();<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      CONF.setClass(HConstants.REGION_IMPL, HRegion.class, Region.class);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
-<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
-<span class="sourceLineNo">987</span>  public void testFlushMarkers() throws Exception {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    // tests that flush markers are written to WAL and handled at recovered edits<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    byte[] family = Bytes.toBytes("family");<a name="line.989"></a>
-<span class="sourceLineNo">990</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");<a name="line.990"></a>
-<span class="sourceLineNo">991</span>    final Configuration walConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    FSUtils.setRootDir(walConf, logDir);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    final WALFactory wals = new WALFactory(walConf, method);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    final WAL wal = wals.getWAL(RegionInfoBuilder.newBuilder(tableName).build());<a name="line.994"></a>
-<span class="sourceLineNo">995</span><a name="line.995"></a>
-<span class="sourceLineNo">996</span>    this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW,<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      HConstants.EMPTY_END_ROW, false, Durability.USE_DEFAULT, wal, family);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    try {<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      Path regiondir = region.getRegionFileSystem().getRegionDir();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      FileSystem fs = region.getRegionFileSystem().getFileSystem();<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>      byte[] regionName = region.getRegionInfo().getEncodedNameAsBytes();<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      long maxSeqId = 3;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      long minSeqId = 0;<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>        Put put = new Put(Bytes.toBytes(i));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        put.addColumn(family, Bytes.toBytes(i), Bytes.toBytes(i));<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        region.put(put);<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        region.flush(true);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // this will create a region with 3 files from flush<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      assertEquals(3, region.getStore(family).getStorefilesCount());<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      List&lt;String&gt; storeFiles = new ArrayList&lt;&gt;(3);<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      for (HStoreFile sf : region.getStore(family).getStorefiles()) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>        storeFiles.add(sf.getPath().getName());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // now verify that the flush markers are written<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      wal.shutdown();<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      WAL.Reader reader = WALFactory.createReader(fs, AbstractFSWALProvider.getCurrentFileName(wal),<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        TEST_UTIL.getConfiguration());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>      try {<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        List&lt;WAL.Entry&gt; flushDescriptors = new ArrayList&lt;&gt;();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>        long lastFlushSeqId = -1;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>        while (true) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>          WAL.Entry entry = reader.next();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (entry == null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            break;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>          }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          Cell cell = entry.getEdit().getCells().get(0);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          if (WALEdit.isMetaEditFamily(cell)) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>            FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(cell);<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            assertNotNull(flushDesc);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>            assertArrayEquals(tableName.getName(), flushDesc.getTableName().toByteArray());<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              assertTrue(flushDesc.getFlushSequenceNumber() &gt; lastFlushSeqId);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            } else if (flushDesc.getAction() == FlushAction.COMMIT_FLUSH) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>              assertTrue(flushDesc.getFlushSequenceNumber() == lastFlushSeqId);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>            lastFlushSeqId = flushDesc.getFlushSequenceNumber();<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>            assertArrayEquals(regionName, flushDesc.getEncodedRegionName().toByteArray());<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>            assertEquals(1, flushDesc.getStoreFlushesCount()); //only one store<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>            StoreFlushDescriptor storeFlushDesc = flushDesc.getStoreFlushes(0);<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            assertArrayEquals(family, storeFlushDesc.getFamilyName().toByteArray());<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            assertEquals("family", storeFlushDesc.getStoreHomeDir());<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>            if (flushDesc.getAction() == FlushAction.START_FLUSH) {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>              assertEquals(0, storeFlushDesc.getFlushOutputCount());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              assertEquals(1, storeFlushDesc.getFlushOutputCount()); //only one file from flush<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              assertTrue(storeFiles.contains(storeFlushDesc.getFlushOutput(0)));<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            flushDescriptors.add(entry);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>        }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        assertEquals(3 * 2, flushDescriptors.size()); // START_FLUSH and COMMIT_FLUSH per flush<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // now write those markers to the recovered edits again.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        Path recoveredEditsDir = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        Path recoveredEdits = new Path(recoveredEditsDir, String.format("%019d", 1000));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>        fs.create(recoveredEdits);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>        WALProvider.Writer writer = wals.createRecoveredEditsWriter(fs, recoveredEdits);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>        for (WAL.Entry entry : flushDescriptors) {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          writer.append(entry);<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>        }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        writer.close();<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      } finally {<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        if (null != reader) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>          try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>            reader.close();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>          } catch (IOException exception) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>            LOG.warn("Problem closing wal: " + exception.getMessage());<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>            LOG.debug("exception details", exception);<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>          }<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        }<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>      }<a name="line.1082"></a>
+<span class="sourceLineNo">946</span>      // close the region now, and reopen again<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      region.getTableDescriptor();<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      region.getRegionInfo();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      region.close();<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try {<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        region = HRegion.openHRegion(region, null);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (WrongRegionException wre) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        fail("Matching encoded region name should not have produced WrongRegionException");<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      }<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>      // now check whether we have only one store file, the compacted one<a name="line.956"></a>
+<span class="sourceLineNo">957</span>      Collection&lt;HStoreFile&gt; sfs = region.getStore(family).getStorefiles();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      for (HStoreFile sf : sfs) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>        LOG.info(Objects.toString(sf.getPath()));<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      if (!mismatchedRegionName) {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        assertEquals(1, region.getStore(family).getStorefilesCount());<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      files = FSUtils.listStatus(fs, tmpDir);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>      assertTrue("Expected to find 0 files inside " + tmpDir, files == null || files.length == 0);<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>      for (long i = minSeqId; i &lt; maxSeqId; i++) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        Get get = new Get(Bytes.toBytes(i));<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        Result result = region.get(get);<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        byte[] value = result.getValue(family, Bytes.toBytes(i));<a name="line.970"></a>
+<span class="sourceLineNo">971</span>        assertArrayEquals(Bytes.toBytes(i), value);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>      }<a name="line.972"></a>
+<

<TRUNCATED>

[13/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
index 9716afd..3253dec 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
@@ -31,319 +31,297 @@
 <span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.fs.Path;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Result;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Table;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.io.NullWritable;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapred.JobConf;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.mapreduce.Job;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.mapreduce.TaskCounter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.AfterClass;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.Assert;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.BeforeClass;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>/**<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * &lt;p&gt;<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * Tests various scan start and stop row scenarios. This is set in a scan and<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * tested in a MapReduce job to see if that is handed over and done properly<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * too.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * &lt;/p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;p&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * This test is broken into two parts in order to side-step the test timeout<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * period of 900, as documented in HBASE-8326.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * &lt;/p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public abstract class TestTableInputFormatScanBase {<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(TestTableInputFormatScanBase.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  static final TableName TABLE_NAME = TableName.valueOf("scantest");<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  static final byte[][] INPUT_FAMILYS = {Bytes.toBytes("content1"), Bytes.toBytes("content2")};<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  static final String KEY_STARTROW = "startRow";<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  static final String KEY_LASTROW = "stpRow";<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static Table table = null;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @BeforeClass<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public static void setUpBeforeClass() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    // test intermittently fails under hadoop2 (2.0.2-alpha) if shortcircuit-read (scr) is on.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    // this turns it off for this test.  TODO: Figure out why scr breaks recovery.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    System.setProperty("hbase.tests.use.shortcircuit.reads", "false");<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>    // switch TIF to log at DEBUG level<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    TEST_UTIL.enableDebug(TableInputFormat.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    TEST_UTIL.enableDebug(TableInputFormatBase.class);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // start mini hbase cluster<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    TEST_UTIL.startMiniCluster(3);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    // create and fill table<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, INPUT_FAMILYS);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    TEST_UTIL.loadTable(table, INPUT_FAMILYS, null, false);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  @AfterClass<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static void tearDownAfterClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    TEST_UTIL.shutdownMiniCluster();<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>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * Pass the key and value to reduce.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static class ScanMapper<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  extends TableMapper&lt;ImmutableBytesWritable, ImmutableBytesWritable&gt; {<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>     * Pass the key and value to reduce.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>     *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>     * @param key  The key, here "aaa", "aab" etc.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>     * @param value  The value is the same as the key.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>     * @param context  The task context.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>     * @throws IOException When reading the rows fails.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>     */<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @Override<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    public void map(ImmutableBytesWritable key, Result value,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      Context context)<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    throws IOException, InterruptedException {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (value.size() != 2) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        throw new IOException("There should be two input columns");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Map&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        cfMap = value.getMap();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (!cfMap.containsKey(INPUT_FAMILYS[0]) || !cfMap.containsKey(INPUT_FAMILYS[1])) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        throw new IOException("Wrong input columns. Missing: '" +<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          Bytes.toString(INPUT_FAMILYS[0]) + "' or '" + Bytes.toString(INPUT_FAMILYS[1]) + "'.");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>      String val0 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[0], null));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      String val1 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[1], null));<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.info("map: key -&gt; " + Bytes.toStringBinary(key.get()) +<a name="line.127"></a>
-<span class="sourceLineNo">128</span>               ", value -&gt; (" + val0 + ", " + val1 + ")");<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      context.write(key, key);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * Checks the last and first key seen against the scanner boundaries.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public static class ScanReducer<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  extends Reducer&lt;ImmutableBytesWritable, ImmutableBytesWritable,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>                    NullWritable, NullWritable&gt; {<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    private String first = null;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    private String last = null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    protected void reduce(ImmutableBytesWritable key,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        Iterable&lt;ImmutableBytesWritable&gt; values, Context context)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    throws IOException ,InterruptedException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      int count = 0;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      for (ImmutableBytesWritable value : values) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        String val = Bytes.toStringBinary(value.get());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        LOG.info("reduce: key[" + count + "] -&gt; " +<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          Bytes.toStringBinary(key.get()) + ", value -&gt; " + val);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        if (first == null) first = val;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        last = val;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        count++;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    protected void cleanup(Context context)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    throws IOException, InterruptedException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      Configuration c = context.getConfiguration();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      String startRow = c.get(KEY_STARTROW);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      String lastRow = c.get(KEY_LASTROW);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      LOG.info("cleanup: first -&gt; \"" + first + "\", start row -&gt; \"" + startRow + "\"");<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      LOG.info("cleanup: last -&gt; \"" + last + "\", last row -&gt; \"" + lastRow + "\"");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      if (startRow != null &amp;&amp; startRow.length() &gt; 0) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        assertEquals(startRow, first);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      if (lastRow != null &amp;&amp; lastRow.length() &gt; 0) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        assertEquals(lastRow, last);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  /**<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * Tests an MR Scan initialized from properties set in the Configuration.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   * @throws IOException<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   * @throws ClassNotFoundException<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * @throws InterruptedException<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  protected void testScanFromConfiguration(String start, String stop, String last)<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    String jobName = "ScanFromConfig" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    c.set(TableInputFormat.INPUT_TABLE, TABLE_NAME.getNameAsString());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    c.set(TableInputFormat.SCAN_COLUMN_FAMILY, Bytes.toString(INPUT_FAMILYS[0]) + ", "<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          + Bytes.toString(INPUT_FAMILYS[1]));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.190"></a>
+<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.List;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Locale;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.NavigableMap;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.Path;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.TableName;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Result;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Table;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.io.NullWritable;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.mapred.JobConf;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.Job;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.mapreduce.TaskCounter;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.AfterClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.Assert;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.BeforeClass;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * Tests various scan start and stop row scenarios. This is set in a scan and tested in a MapReduce<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * job to see if that is handed over and done properly too.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>public abstract class TestTableInputFormatScanBase {<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final Logger LOG = LoggerFactory.getLogger(TestTableInputFormatScanBase.class);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static final TableName TABLE_NAME = TableName.valueOf("scantest");<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  static final byte[][] INPUT_FAMILYS = {Bytes.toBytes("content1"), Bytes.toBytes("content2")};<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  static final String KEY_STARTROW = "startRow";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String KEY_LASTROW = "stpRow";<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static Table table = null;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  @BeforeClass<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static void setUpBeforeClass() throws Exception {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    // test intermittently fails under hadoop2 (2.0.2-alpha) if shortcircuit-read (scr) is on.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // this turns it off for this test.  TODO: Figure out why scr breaks recovery.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    System.setProperty("hbase.tests.use.shortcircuit.reads", "false");<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    // switch TIF to log at DEBUG level<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    TEST_UTIL.enableDebug(TableInputFormat.class);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    TEST_UTIL.enableDebug(TableInputFormatBase.class);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    // start mini hbase cluster<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    TEST_UTIL.startMiniCluster(3);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // create and fill table<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, INPUT_FAMILYS);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    TEST_UTIL.loadTable(table, INPUT_FAMILYS, null, false);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  @AfterClass<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public static void tearDownAfterClass() throws Exception {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  /**<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * Pass the key and value to reduce.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public static class ScanMapper<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  extends TableMapper&lt;ImmutableBytesWritable, ImmutableBytesWritable&gt; {<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>     * Pass the key and value to reduce.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>     *<a name="line.100"></a>
+<span class="sourceLineNo">101</span>     * @param key  The key, here "aaa", "aab" etc.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>     * @param value  The value is the same as the key.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>     * @param context  The task context.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>     * @throws IOException When reading the rows fails.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>     */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    @Override<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void map(ImmutableBytesWritable key, Result value,<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      Context context)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    throws IOException, InterruptedException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      if (value.size() != 2) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        throw new IOException("There should be two input columns");<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      Map&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        cfMap = value.getMap();<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (!cfMap.containsKey(INPUT_FAMILYS[0]) || !cfMap.containsKey(INPUT_FAMILYS[1])) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        throw new IOException("Wrong input columns. Missing: '" +<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          Bytes.toString(INPUT_FAMILYS[0]) + "' or '" + Bytes.toString(INPUT_FAMILYS[1]) + "'.");<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>      String val0 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[0], null));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      String val1 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[1], null));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      LOG.info("map: key -&gt; " + Bytes.toStringBinary(key.get()) +<a name="line.123"></a>
+<span class="sourceLineNo">124</span>               ", value -&gt; (" + val0 + ", " + val1 + ")");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      context.write(key, key);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<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>   * Checks the last and first key seen against the scanner boundaries.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static class ScanReducer<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  extends Reducer&lt;ImmutableBytesWritable, ImmutableBytesWritable,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>                    NullWritable, NullWritable&gt; {<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    private String first = null;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    private String last = null;<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    protected void reduce(ImmutableBytesWritable key,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        Iterable&lt;ImmutableBytesWritable&gt; values, Context context)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    throws IOException ,InterruptedException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      int count = 0;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      for (ImmutableBytesWritable value : values) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        String val = Bytes.toStringBinary(value.get());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("reduce: key[" + count + "] -&gt; " +<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          Bytes.toStringBinary(key.get()) + ", value -&gt; " + val);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        if (first == null) first = val;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        last = val;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        count++;<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><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    protected void cleanup(Context context)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    throws IOException, InterruptedException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Configuration c = context.getConfiguration();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      String startRow = c.get(KEY_STARTROW);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      String lastRow = c.get(KEY_LASTROW);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      LOG.info("cleanup: first -&gt; \"" + first + "\", start row -&gt; \"" + startRow + "\"");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      LOG.info("cleanup: last -&gt; \"" + last + "\", last row -&gt; \"" + lastRow + "\"");<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      if (startRow != null &amp;&amp; startRow.length() &gt; 0) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        assertEquals(startRow, first);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      if (lastRow != null &amp;&amp; lastRow.length() &gt; 0) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        assertEquals(lastRow, last);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><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>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Tests an MR Scan initialized from properties set in the Configuration.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected void testScanFromConfiguration(String start, String stop, String last)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    String jobName = "ScanFromConfig" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    c.set(TableInputFormat.INPUT_TABLE, TABLE_NAME.getNameAsString());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    c.set(TableInputFormat.SCAN_COLUMN_FAMILY,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      Bytes.toString(INPUT_FAMILYS[0]) + ", " + Bytes.toString(INPUT_FAMILYS[1]));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (start != null) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      c.set(TableInputFormat.SCAN_ROW_START, start);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (stop != null) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      c.set(TableInputFormat.SCAN_ROW_STOP, stop);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
 <span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    if (start != null) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      c.set(TableInputFormat.SCAN_ROW_START, start);<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>    if (stop != null) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      c.set(TableInputFormat.SCAN_ROW_STOP, stop);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    Job job = new Job(c, jobName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    job.setMapperClass(ScanMapper.class);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    job.setReducerClass(ScanReducer.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    job.setMapOutputValueClass(ImmutableBytesWritable.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    job.setInputFormatClass(TableInputFormat.class);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    job.setNumReduceTasks(1);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.addDependencyJars(job);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    assertTrue(job.waitForCompletion(true));<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>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * Tests a MR scan using specific start and stop rows.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @throws IOException<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws ClassNotFoundException<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @throws InterruptedException<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  protected void testScan(String start, String stop, String last)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String jobName = "Scan" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    Scan scan = new Scan();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (start != null) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      scan.setStartRow(Bytes.toBytes(start));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (stop != null) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      scan.setStopRow(Bytes.toBytes(stop));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    LOG.info("scan before: " + scan);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    Job job = new Job(c, jobName);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    TableMapReduceUtil.initTableMapperJob(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      TABLE_NAME, scan, ScanMapper.class,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    job.setReducerClass(ScanReducer.class);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    job.setNumReduceTasks(1); // one to get final "first" and "last" key<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LOG.info("Started " + job.getJobName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertTrue(job.waitForCompletion(true));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    LOG.info("After map/reduce completion - job " + jobName);<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><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  /**<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * This test does not run MR job<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   *<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @throws IOException<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @throws ClassNotFoundException<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * @throws InterruptedException<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  public void testNumOfSplits(int splitsPerRegion, int expectedNumOfSplits) throws IOException,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      InterruptedException,<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      ClassNotFoundException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String jobName = "TestJobForNumOfSplits";<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    Scan scan = new Scan();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    c.set(KEY_STARTROW, "");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    c.set(KEY_LASTROW, "");<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    Job job = new Job(c, jobName);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    TableInputFormat tif = new TableInputFormat();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    tif.setConf(job.getConfiguration());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    Assert.assertEquals(TABLE_NAME, table.getName());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    List&lt;InputSplit&gt; splits = tif.getSplits(job);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    Assert.assertEquals(expectedNumOfSplits, splits.size());<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>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Run MR job to check the number of mapper = expectedNumOfSplits<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @throws IOException<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * @throws InterruptedException<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @throws ClassNotFoundException<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public void testNumOfSplitsMR(int splitsPerRegion, int expectedNumOfSplits) throws IOException,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      InterruptedException,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      ClassNotFoundException {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    String jobName = "TestJobForNumOfSplits-MR";<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    JobConf c = new JobConf(TEST_UTIL.getConfiguration());<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    Scan scan = new Scan();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    c.set(KEY_STARTROW, "");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    c.set(KEY_LASTROW, "");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Job job = Job.getInstance(c, jobName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    job.setReducerClass(ScanReducer.class);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    job.setNumReduceTasks(1);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    job.setOutputFormatClass(NullOutputFormat.class);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertTrue("job failed!", job.waitForCompletion(true));<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // for some reason, hbase does not expose JobCounter.TOTAL_LAUNCHED_MAPS,<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // we use TaskCounter.SHUFFLED_MAPS to get total launched maps<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    assertEquals("Saw the wrong count of mappers per region", expectedNumOfSplits,<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        job.getCounters().findCounter(TaskCounter.SHUFFLED_MAPS).getValue());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Run MR job to test autobalance for setting number of mappers for TIF<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * This does not run real MR job<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void testAutobalanceNumOfSplit() throws IOException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    // set up splits for testing<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(5);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    int[] regionLen = {10, 20, 20, 40, 60};<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    for (int i = 0; i &lt; 5; i++) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      InputSplit split = new TableSplit(TABLE_NAME, new Scan(),<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          Bytes.toBytes(i), Bytes.toBytes(i + 1), "", "", regionLen[i] * 1048576);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      splits.add(split);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    TableInputFormat tif = new TableInputFormat();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    List&lt;InputSplit&gt; res = tif.calculateAutoBalancedSplits(splits, 1073741824);<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    assertEquals("Saw the wrong number of splits", 5, res.size());<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    TableSplit ts1 = (TableSplit) res.get(0);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    assertEquals("The first split end key should be", 2, Bytes.toInt(ts1.getEndRow()));<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    TableSplit ts2 = (TableSplit) res.get(1);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    assertEquals("The second split regionsize should be", 20 * 1048576, ts2.getLength());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    TableSplit ts3 = (TableSplit) res.get(2);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertEquals("The third split start key should be", 3, Bytes.toInt(ts3.getStartRow()));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    TableSplit ts4 = (TableSplit) res.get(4);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    assertNotEquals("The seventh split start key should not be", 4, Bytes.toInt(ts4.getStartRow()));<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>}<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">192</span>    Job job = Job.getInstance(c, jobName);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    job.setMapperClass(ScanMapper.class);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    job.setReducerClass(ScanReducer.class);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    job.setMapOutputValueClass(ImmutableBytesWritable.class);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    job.setInputFormatClass(TableInputFormat.class);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    job.setNumReduceTasks(1);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableMapReduceUtil.addDependencyJars(job);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    assertTrue(job.waitForCompletion(true));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Tests a MR scan using specific start and stop rows.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  protected void testScan(String start, String stop, String last)<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    String jobName = "Scan" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") + "To" +<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    Scan scan = new Scan();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    if (start != null) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      scan.withStartRow(Bytes.toBytes(start));<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (stop != null) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      scan.withStopRow(Bytes.toBytes(stop));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    LOG.info("scan before: " + scan);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Job job = Job.getInstance(c, jobName);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME, scan, ScanMapper.class,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    job.setReducerClass(ScanReducer.class);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    job.setNumReduceTasks(1); // one to get final "first" and "last" key<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    LOG.info("Started " + job.getJobName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    assertTrue(job.waitForCompletion(true));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    LOG.info("After map/reduce completion - job " + jobName);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  /**<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * This test does not run MR job<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  protected void testNumOfSplits(int splitsPerRegion, int expectedNumOfSplits)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    String jobName = "TestJobForNumOfSplits";<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Scan scan = new Scan();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    c.set(KEY_STARTROW, "");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    c.set(KEY_LASTROW, "");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    Job job = Job.getInstance(c, jobName);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    TableInputFormat tif = new TableInputFormat();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tif.setConf(job.getConfiguration());<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Assert.assertEquals(TABLE_NAME, table.getName());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    List&lt;InputSplit&gt; splits = tif.getSplits(job);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(expectedNumOfSplits, splits.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Run MR job to check the number of mapper = expectedNumOfSplits<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  protected void testNumOfSplitsMR(int splitsPerRegion, int expectedNumOfSplits)<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String jobName = "TestJobForNumOfSplits-MR";<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    JobConf c = new JobConf(TEST_UTIL.getConfiguration());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Scan scan = new Scan();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    c.set(KEY_STARTROW, "");<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    c.set(KEY_LASTROW, "");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    Job job = Job.getInstance(c, jobName);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setReducerClass(ScanReducer.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    job.setNumReduceTasks(1);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    job.setOutputFormatClass(NullOutputFormat.class);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    assertTrue("job failed!", job.waitForCompletion(true));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // for some reason, hbase does not expose JobCounter.TOTAL_LAUNCHED_MAPS,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // we use TaskCounter.SHUFFLED_MAPS to get total launched maps<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    assertEquals("Saw the wrong count of mappers per region", expectedNumOfSplits,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      job.getCounters().findCounter(TaskCounter.SHUFFLED_MAPS).getValue());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  }<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>   * Run MR job to test autobalance for setting number of mappers for TIF This does not run real MR<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * job<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  protected void testAutobalanceNumOfSplit() throws IOException {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    // set up splits for testing<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    int[] regionLen = { 10, 20, 20, 40, 60 };<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    for (int i = 0; i &lt; 5; i++) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      InputSplit split = new TableSplit(TABLE_NAME, new Scan(), Bytes.toBytes(i),<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        Bytes.toBytes(i + 1), "", "", regionLen[i] * 1048576);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      splits.add(split);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    TableInputFormat tif = new TableInputFormat();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    List&lt;InputSplit&gt; res = tif.calculateAutoBalancedSplits(splits, 1073741824);<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    assertEquals("Saw the wrong number of splits", 5, res.size());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    TableSplit ts1 = (TableSplit) res.get(0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals("The first split end key should be", 2, Bytes.toInt(ts1.getEndRow()));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    TableSplit ts2 = (TableSplit) res.get(1);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    assertEquals("The second split regionsize should be", 20 * 1048576, ts2.getLength());<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableSplit ts3 = (TableSplit) res.get(2);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    assertEquals("The third split start key should be", 3, Bytes.toInt(ts3.getStartRow()));<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TableSplit ts4 = (TableSplit) res.get(4);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertNotEquals("The seventh split start key should not be", 4, Bytes.toInt(ts4.getStartRow()));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>}<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
 
 
 


[22/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html
deleted file mode 100644
index 689c120b..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html
+++ /dev/null
@@ -1,506 +0,0 @@
-<!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>TestTableInputFormatScan2 (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="TestTableInputFormatScan2 (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};
-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/TestTableInputFormatScan2.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/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan2.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
-<h2 title="Class TestTableInputFormatScan2" class="title">Class TestTableInputFormatScan2</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<hr>
-<br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.33">TestTableInputFormatScan2</a>
-extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
-<div class="block">TestTableInputFormatScan part 2.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>TestTableInputFormatScanBase</code></a></dd>
-</dl>
-</li>
-</ul>
-</div>
-<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>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
-</ul>
-</li>
-</ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
-<!--   -->
-</a>
-<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
-</ul>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="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/TestTableInputFormatScan2.html#TestTableInputFormatScan2--">TestTableInputFormatScan2</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanFromConfiguration--">testScanFromConfiguration</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanOBBToOPP--">testScanOBBToOPP</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanOBBToQPP--">testScanOBBToQPP</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanOPPToEmpty--">testScanOPPToEmpty</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanYYXToEmpty--">testScanYYXToEmpty</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanYYYToEmpty--">testScanYYYToEmpty</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#testScanYZYToEmpty--">testScanYZYToEmpty</a></span>()</code>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="CLASS_RULE">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.36">CLASS_RULE</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="TestTableInputFormatScan2--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>TestTableInputFormatScan2</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.33">TestTableInputFormatScan2</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="testScanOBBToOPP--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanOBBToOPP</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.47">testScanOBBToOPP</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>,
-                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanOBBToQPP--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanOBBToQPP</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.60">testScanOBBToQPP</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>,
-                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanOPPToEmpty--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanOPPToEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.73">testScanOPPToEmpty</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanYYXToEmpty--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanYYXToEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.86">testScanYYXToEmpty</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanYYYToEmpty--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanYYYToEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.99">testScanYYYToEmpty</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanYZYToEmpty--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testScanYZYToEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.112">testScanYZYToEmpty</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>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<div class="block">Tests a MR scan using specific start and stop rows.</div>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="testScanFromConfiguration--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>testScanFromConfiguration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html#line.118">testScanFromConfiguration</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>,
-                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScan2.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/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" target="_top">Frames</a></li>
-<li><a href="TestTableInputFormatScan2.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
index 6d3dbfa..fcfb2d1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.99">TestTableInputFormatScanBase.ScanMapper</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.95">TestTableInputFormatScanBase.ScanMapper</a>
 extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.io.ImmutableBytesWritable&gt;</pre>
 <div class="block">Pass the key and value to reduce.</div>
 </li>
@@ -219,7 +219,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;org.apache.hadoop.hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ScanMapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html#line.99">ScanMapper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html#line.95">ScanMapper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -236,7 +236,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;org.apache.hadoop.hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>map</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html#line.111">map</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html#line.107">map</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
                 org.apache.hadoop.hbase.client.Result&nbsp;value,
                 org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
index 50afd19..8972411 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" target="_top">Frames</a></li>
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.136">TestTableInputFormatScanBase.ScanReducer</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.132">TestTableInputFormatScanBase.ScanReducer</a>
 extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.io.NullWritable,org.apache.hadoop.io.NullWritable&gt;</pre>
 <div class="block">Checks the last and first key seen against the scanner boundaries.</div>
 </li>
@@ -239,7 +239,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockList">
 <li class="blockList">
 <h4>first</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.140">first</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.136">first</a></pre>
 </li>
 </ul>
 <a name="last">
@@ -248,7 +248,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockListLast">
 <li class="blockList">
 <h4>last</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.141">last</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.137">last</a></pre>
 </li>
 </ul>
 </li>
@@ -265,7 +265,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ScanReducer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.136">ScanReducer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.132">ScanReducer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -282,7 +282,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockList">
 <li class="blockList">
 <h4>reduce</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.143">reduce</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.139">reduce</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable&gt;&nbsp;values,
                       org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -302,7 +302,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cleanup</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.157">cleanup</a>(org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html#line.153">cleanup</a>(org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -343,7 +343,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
index 2a2c5b1..acd727a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -109,21 +109,14 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan1</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan2</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToAPP</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBA</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToBBB</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/T
 estTableInputFormatScanEmptyToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanEmptyToOPP</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToOPP</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOBBToQPP</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanOPPToEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYXToEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.html" title="class in
  org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYYYToEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanYZYToEmpty</a></dd>
 </dl>
 <hr>
 <br>
-<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.63">TestTableInputFormatScanBase</a>
+<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.59">TestTableInputFormatScanBase</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>
-<div class="block"><p>
- Tests various scan start and stop row scenarios. This is set in a scan and
- tested in a MapReduce job to see if that is handed over and done properly
- too.
- </p>
- <p>
- This test is broken into two parts in order to side-step the test timeout
- period of 900, as documented in HBASE-8326.
- </p></div>
+<div class="block">Tests various scan start and stop row scenarios. This is set in a scan and tested in a MapReduce
+ job to see if that is handed over and done properly too.</div>
 </li>
 </ul>
 </div>
@@ -238,14 +231,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a></span>()</code>
-<div class="block">Run MR job to test autobalance for setting number of mappers for TIF
- This does not run real MR job</div>
+<div class="block">Run MR job to test autobalance for setting number of mappers for TIF This does not run real MR
+ job</div>
 </td>
 </tr>
 <tr id="i3" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a></span>(int&nbsp;splitsPerRegion,
                int&nbsp;expectedNumOfSplits)</code>
 <div class="block">Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX
@@ -253,7 +246,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr id="i4" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a></span>(int&nbsp;splitsPerRegion,
                  int&nbsp;expectedNumOfSplits)</code>
 <div class="block">Run MR job to check the number of mapper = expectedNumOfSplits</div>
@@ -303,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.65">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.61">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -312,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.66">TEST_UTIL</a></pre>
+<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.62">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="TABLE_NAME">
@@ -321,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME</h4>
-<pre>static final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.68">TABLE_NAME</a></pre>
+<pre>static final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.64">TABLE_NAME</a></pre>
 </li>
 </ul>
 <a name="INPUT_FAMILYS">
@@ -330,7 +323,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>INPUT_FAMILYS</h4>
-<pre>static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.69">INPUT_FAMILYS</a></pre>
+<pre>static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.65">INPUT_FAMILYS</a></pre>
 </li>
 </ul>
 <a name="KEY_STARTROW">
@@ -339,7 +332,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEY_STARTROW</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.70">KEY_STARTROW</a></pre>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.66">KEY_STARTROW</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase.KEY_STARTROW">Constant Field Values</a></dd>
@@ -352,7 +345,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEY_LASTROW</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.71">KEY_LASTROW</a></pre>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.67">KEY_LASTROW</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase.KEY_LASTROW">Constant Field Values</a></dd>
@@ -365,7 +358,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>table</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.73">table</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Table <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.69">table</a></pre>
 </li>
 </ul>
 </li>
@@ -382,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestTableInputFormatScanBase</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.63">TestTableInputFormatScanBase</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.59">TestTableInputFormatScanBase</a>()</pre>
 </li>
 </ul>
 </li>
@@ -399,7 +392,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.76">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.72">setUpBeforeClass</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>
@@ -413,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.92">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.88">tearDownAfterClass</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>
@@ -427,7 +420,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanFromConfiguration</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.181">testScanFromConfiguration</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;start,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.173">testScanFromConfiguration</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;start,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;stop,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;last)
                                   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>,
@@ -437,8 +430,8 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -448,7 +441,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScan</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.219">testScan</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;start,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.207">testScan</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;start,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;stop,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;last)
                  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>,
@@ -458,8 +451,8 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -469,18 +462,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testNumOfSplits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.258">testNumOfSplits</a>(int&nbsp;splitsPerRegion,
-                            int&nbsp;expectedNumOfSplits)
-                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.241">testNumOfSplits</a>(int&nbsp;splitsPerRegion,
+                               int&nbsp;expectedNumOfSplits)
+                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
 <div class="block">Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX
  This test does not run MR job</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -490,11 +483,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testNumOfSplitsMR</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.286">testNumOfSplitsMR</a>(int&nbsp;splitsPerRegion,
-                              int&nbsp;expectedNumOfSplits)
-                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.265">testNumOfSplitsMR</a>(int&nbsp;splitsPerRegion,
+                                 int&nbsp;expectedNumOfSplits)
+                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
 <div class="block">Run MR job to check the number of mapper = expectedNumOfSplits</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -510,10 +503,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testAutobalanceNumOfSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.315">testAutobalanceNumOfSplit</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">Run MR job to test autobalance for setting number of mappers for TIF
- This does not run real MR job</div>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#line.293">testAutobalanceNumOfSplit</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">Run MR job to test autobalance for setting number of mappers for TIF This does not run real MR
+ job</div>
 <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>
@@ -548,7 +541,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html
new file mode 100644
index 0000000..8225b51
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html
@@ -0,0 +1,354 @@
+<!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>TestTableInputFormatScanEmptyToAPP (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="TestTableInputFormatScanEmptyToAPP (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":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/TestTableInputFormatScanEmptyToAPP.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/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToAPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.mapreduce</div>
+<h2 title="Class TestTableInputFormatScanEmptyToAPP" class="title">Class TestTableInputFormatScanEmptyToAPP</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><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanEmptyToAPP</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#line.29">TestTableInputFormatScanEmptyToAPP</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></pre>
+</li>
+</ul>
+</div>
+<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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanMapper</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase.ScanReducer</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#INPUT_FAMILYS">INPUT_FAMILYS</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_LASTROW">KEY_LASTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#KEY_STARTROW">KEY_STARTROW</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TABLE_NAME">TABLE_NAME</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="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/TestTableInputFormatScanEmptyToAPP.html#TestTableInputFormatScanEmptyToAPP--">TestTableInputFormatScanEmptyToAPP</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#testScanEmptyToAPP--">testScanEmptyToAPP</a></span>()</code>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableInputFormatScanBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testAutobalanceNumOfSplit--">testAutobalanceNumOfSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplits-int-int-">testNumOfSplits</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testNumOfSplitsMR-int-int-">testNumOfSplitsMR</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScan-java.lang.String-java.lang.String-java.lang.String-">testScan</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html#testScanFromConfiguration
 -java.lang.String-java.lang.String-java.lang.String-">testScanFromConfiguration</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#line.32">CLASS_RULE</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="TestTableInputFormatScanEmptyToAPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestTableInputFormatScanEmptyToAPP</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#line.29">TestTableInputFormatScanEmptyToAPP</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="testScanEmptyToAPP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanEmptyToAPP</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html#line.39">testScanEmptyToAPP</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>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
+<div class="block">Tests a MR scan using specific start and stop rows.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</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/TestTableInputFormatScanEmptyToAPP.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/TestTableInputFormatScanBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html" target="_top">Frames</a></li>
+<li><a href="TestTableInputFormatScanEmptyToAPP.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[14/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
index 9716afd..3253dec 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.ScanMapper.html
@@ -31,319 +31,297 @@
 <span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.fs.Path;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Result;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Table;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.io.NullWritable;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapred.JobConf;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.mapreduce.Job;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.mapreduce.TaskCounter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.AfterClass;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.Assert;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.BeforeClass;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>/**<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * &lt;p&gt;<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * Tests various scan start and stop row scenarios. This is set in a scan and<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * tested in a MapReduce job to see if that is handed over and done properly<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * too.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * &lt;/p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;p&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * This test is broken into two parts in order to side-step the test timeout<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * period of 900, as documented in HBASE-8326.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * &lt;/p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public abstract class TestTableInputFormatScanBase {<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(TestTableInputFormatScanBase.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  static final TableName TABLE_NAME = TableName.valueOf("scantest");<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  static final byte[][] INPUT_FAMILYS = {Bytes.toBytes("content1"), Bytes.toBytes("content2")};<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  static final String KEY_STARTROW = "startRow";<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  static final String KEY_LASTROW = "stpRow";<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static Table table = null;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @BeforeClass<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public static void setUpBeforeClass() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    // test intermittently fails under hadoop2 (2.0.2-alpha) if shortcircuit-read (scr) is on.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    // this turns it off for this test.  TODO: Figure out why scr breaks recovery.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    System.setProperty("hbase.tests.use.shortcircuit.reads", "false");<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>    // switch TIF to log at DEBUG level<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    TEST_UTIL.enableDebug(TableInputFormat.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    TEST_UTIL.enableDebug(TableInputFormatBase.class);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // start mini hbase cluster<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    TEST_UTIL.startMiniCluster(3);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    // create and fill table<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, INPUT_FAMILYS);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    TEST_UTIL.loadTable(table, INPUT_FAMILYS, null, false);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  @AfterClass<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static void tearDownAfterClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    TEST_UTIL.shutdownMiniCluster();<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>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * Pass the key and value to reduce.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static class ScanMapper<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  extends TableMapper&lt;ImmutableBytesWritable, ImmutableBytesWritable&gt; {<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>     * Pass the key and value to reduce.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>     *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>     * @param key  The key, here "aaa", "aab" etc.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>     * @param value  The value is the same as the key.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>     * @param context  The task context.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>     * @throws IOException When reading the rows fails.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>     */<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @Override<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    public void map(ImmutableBytesWritable key, Result value,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      Context context)<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    throws IOException, InterruptedException {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (value.size() != 2) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        throw new IOException("There should be two input columns");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Map&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        cfMap = value.getMap();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (!cfMap.containsKey(INPUT_FAMILYS[0]) || !cfMap.containsKey(INPUT_FAMILYS[1])) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        throw new IOException("Wrong input columns. Missing: '" +<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          Bytes.toString(INPUT_FAMILYS[0]) + "' or '" + Bytes.toString(INPUT_FAMILYS[1]) + "'.");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>      String val0 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[0], null));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      String val1 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[1], null));<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.info("map: key -&gt; " + Bytes.toStringBinary(key.get()) +<a name="line.127"></a>
-<span class="sourceLineNo">128</span>               ", value -&gt; (" + val0 + ", " + val1 + ")");<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      context.write(key, key);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * Checks the last and first key seen against the scanner boundaries.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public static class ScanReducer<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  extends Reducer&lt;ImmutableBytesWritable, ImmutableBytesWritable,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>                    NullWritable, NullWritable&gt; {<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    private String first = null;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    private String last = null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    protected void reduce(ImmutableBytesWritable key,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        Iterable&lt;ImmutableBytesWritable&gt; values, Context context)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    throws IOException ,InterruptedException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      int count = 0;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      for (ImmutableBytesWritable value : values) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        String val = Bytes.toStringBinary(value.get());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        LOG.info("reduce: key[" + count + "] -&gt; " +<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          Bytes.toStringBinary(key.get()) + ", value -&gt; " + val);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        if (first == null) first = val;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        last = val;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        count++;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    protected void cleanup(Context context)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    throws IOException, InterruptedException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      Configuration c = context.getConfiguration();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      String startRow = c.get(KEY_STARTROW);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      String lastRow = c.get(KEY_LASTROW);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      LOG.info("cleanup: first -&gt; \"" + first + "\", start row -&gt; \"" + startRow + "\"");<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      LOG.info("cleanup: last -&gt; \"" + last + "\", last row -&gt; \"" + lastRow + "\"");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      if (startRow != null &amp;&amp; startRow.length() &gt; 0) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        assertEquals(startRow, first);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      if (lastRow != null &amp;&amp; lastRow.length() &gt; 0) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        assertEquals(lastRow, last);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  /**<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * Tests an MR Scan initialized from properties set in the Configuration.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   * @throws IOException<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   * @throws ClassNotFoundException<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * @throws InterruptedException<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  protected void testScanFromConfiguration(String start, String stop, String last)<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    String jobName = "ScanFromConfig" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    c.set(TableInputFormat.INPUT_TABLE, TABLE_NAME.getNameAsString());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    c.set(TableInputFormat.SCAN_COLUMN_FAMILY, Bytes.toString(INPUT_FAMILYS[0]) + ", "<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          + Bytes.toString(INPUT_FAMILYS[1]));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.190"></a>
+<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.List;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Locale;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.NavigableMap;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.Path;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.TableName;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Result;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Table;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.io.NullWritable;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.mapred.JobConf;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.Job;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.mapreduce.TaskCounter;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.AfterClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.Assert;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.BeforeClass;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * Tests various scan start and stop row scenarios. This is set in a scan and tested in a MapReduce<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * job to see if that is handed over and done properly too.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>public abstract class TestTableInputFormatScanBase {<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final Logger LOG = LoggerFactory.getLogger(TestTableInputFormatScanBase.class);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static final TableName TABLE_NAME = TableName.valueOf("scantest");<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  static final byte[][] INPUT_FAMILYS = {Bytes.toBytes("content1"), Bytes.toBytes("content2")};<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  static final String KEY_STARTROW = "startRow";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String KEY_LASTROW = "stpRow";<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static Table table = null;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  @BeforeClass<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static void setUpBeforeClass() throws Exception {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    // test intermittently fails under hadoop2 (2.0.2-alpha) if shortcircuit-read (scr) is on.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // this turns it off for this test.  TODO: Figure out why scr breaks recovery.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    System.setProperty("hbase.tests.use.shortcircuit.reads", "false");<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    // switch TIF to log at DEBUG level<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    TEST_UTIL.enableDebug(TableInputFormat.class);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    TEST_UTIL.enableDebug(TableInputFormatBase.class);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    // start mini hbase cluster<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    TEST_UTIL.startMiniCluster(3);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // create and fill table<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, INPUT_FAMILYS);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    TEST_UTIL.loadTable(table, INPUT_FAMILYS, null, false);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  @AfterClass<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public static void tearDownAfterClass() throws Exception {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  /**<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * Pass the key and value to reduce.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public static class ScanMapper<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  extends TableMapper&lt;ImmutableBytesWritable, ImmutableBytesWritable&gt; {<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>     * Pass the key and value to reduce.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>     *<a name="line.100"></a>
+<span class="sourceLineNo">101</span>     * @param key  The key, here "aaa", "aab" etc.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>     * @param value  The value is the same as the key.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>     * @param context  The task context.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>     * @throws IOException When reading the rows fails.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>     */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    @Override<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void map(ImmutableBytesWritable key, Result value,<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      Context context)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    throws IOException, InterruptedException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      if (value.size() != 2) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        throw new IOException("There should be two input columns");<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      Map&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        cfMap = value.getMap();<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (!cfMap.containsKey(INPUT_FAMILYS[0]) || !cfMap.containsKey(INPUT_FAMILYS[1])) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        throw new IOException("Wrong input columns. Missing: '" +<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          Bytes.toString(INPUT_FAMILYS[0]) + "' or '" + Bytes.toString(INPUT_FAMILYS[1]) + "'.");<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>      String val0 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[0], null));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      String val1 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[1], null));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      LOG.info("map: key -&gt; " + Bytes.toStringBinary(key.get()) +<a name="line.123"></a>
+<span class="sourceLineNo">124</span>               ", value -&gt; (" + val0 + ", " + val1 + ")");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      context.write(key, key);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<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>   * Checks the last and first key seen against the scanner boundaries.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static class ScanReducer<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  extends Reducer&lt;ImmutableBytesWritable, ImmutableBytesWritable,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>                    NullWritable, NullWritable&gt; {<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    private String first = null;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    private String last = null;<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    protected void reduce(ImmutableBytesWritable key,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        Iterable&lt;ImmutableBytesWritable&gt; values, Context context)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    throws IOException ,InterruptedException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      int count = 0;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      for (ImmutableBytesWritable value : values) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        String val = Bytes.toStringBinary(value.get());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("reduce: key[" + count + "] -&gt; " +<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          Bytes.toStringBinary(key.get()) + ", value -&gt; " + val);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        if (first == null) first = val;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        last = val;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        count++;<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><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    protected void cleanup(Context context)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    throws IOException, InterruptedException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Configuration c = context.getConfiguration();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      String startRow = c.get(KEY_STARTROW);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      String lastRow = c.get(KEY_LASTROW);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      LOG.info("cleanup: first -&gt; \"" + first + "\", start row -&gt; \"" + startRow + "\"");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      LOG.info("cleanup: last -&gt; \"" + last + "\", last row -&gt; \"" + lastRow + "\"");<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      if (startRow != null &amp;&amp; startRow.length() &gt; 0) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        assertEquals(startRow, first);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      if (lastRow != null &amp;&amp; lastRow.length() &gt; 0) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        assertEquals(lastRow, last);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><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>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Tests an MR Scan initialized from properties set in the Configuration.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected void testScanFromConfiguration(String start, String stop, String last)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    String jobName = "ScanFromConfig" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    c.set(TableInputFormat.INPUT_TABLE, TABLE_NAME.getNameAsString());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    c.set(TableInputFormat.SCAN_COLUMN_FAMILY,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      Bytes.toString(INPUT_FAMILYS[0]) + ", " + Bytes.toString(INPUT_FAMILYS[1]));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (start != null) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      c.set(TableInputFormat.SCAN_ROW_START, start);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (stop != null) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      c.set(TableInputFormat.SCAN_ROW_STOP, stop);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
 <span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    if (start != null) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      c.set(TableInputFormat.SCAN_ROW_START, start);<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>    if (stop != null) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      c.set(TableInputFormat.SCAN_ROW_STOP, stop);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    Job job = new Job(c, jobName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    job.setMapperClass(ScanMapper.class);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    job.setReducerClass(ScanReducer.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    job.setMapOutputValueClass(ImmutableBytesWritable.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    job.setInputFormatClass(TableInputFormat.class);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    job.setNumReduceTasks(1);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.addDependencyJars(job);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    assertTrue(job.waitForCompletion(true));<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>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * Tests a MR scan using specific start and stop rows.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @throws IOException<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws ClassNotFoundException<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @throws InterruptedException<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  protected void testScan(String start, String stop, String last)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String jobName = "Scan" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    Scan scan = new Scan();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (start != null) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      scan.setStartRow(Bytes.toBytes(start));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (stop != null) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      scan.setStopRow(Bytes.toBytes(stop));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    LOG.info("scan before: " + scan);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    Job job = new Job(c, jobName);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    TableMapReduceUtil.initTableMapperJob(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      TABLE_NAME, scan, ScanMapper.class,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    job.setReducerClass(ScanReducer.class);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    job.setNumReduceTasks(1); // one to get final "first" and "last" key<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LOG.info("Started " + job.getJobName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertTrue(job.waitForCompletion(true));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    LOG.info("After map/reduce completion - job " + jobName);<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><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  /**<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * This test does not run MR job<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   *<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @throws IOException<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @throws ClassNotFoundException<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * @throws InterruptedException<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  public void testNumOfSplits(int splitsPerRegion, int expectedNumOfSplits) throws IOException,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      InterruptedException,<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      ClassNotFoundException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String jobName = "TestJobForNumOfSplits";<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    Scan scan = new Scan();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    c.set(KEY_STARTROW, "");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    c.set(KEY_LASTROW, "");<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    Job job = new Job(c, jobName);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    TableInputFormat tif = new TableInputFormat();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    tif.setConf(job.getConfiguration());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    Assert.assertEquals(TABLE_NAME, table.getName());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    List&lt;InputSplit&gt; splits = tif.getSplits(job);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    Assert.assertEquals(expectedNumOfSplits, splits.size());<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>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Run MR job to check the number of mapper = expectedNumOfSplits<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @throws IOException<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * @throws InterruptedException<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @throws ClassNotFoundException<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public void testNumOfSplitsMR(int splitsPerRegion, int expectedNumOfSplits) throws IOException,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      InterruptedException,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      ClassNotFoundException {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    String jobName = "TestJobForNumOfSplits-MR";<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    JobConf c = new JobConf(TEST_UTIL.getConfiguration());<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    Scan scan = new Scan();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    c.set(KEY_STARTROW, "");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    c.set(KEY_LASTROW, "");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Job job = Job.getInstance(c, jobName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    job.setReducerClass(ScanReducer.class);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    job.setNumReduceTasks(1);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    job.setOutputFormatClass(NullOutputFormat.class);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertTrue("job failed!", job.waitForCompletion(true));<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // for some reason, hbase does not expose JobCounter.TOTAL_LAUNCHED_MAPS,<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // we use TaskCounter.SHUFFLED_MAPS to get total launched maps<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    assertEquals("Saw the wrong count of mappers per region", expectedNumOfSplits,<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        job.getCounters().findCounter(TaskCounter.SHUFFLED_MAPS).getValue());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Run MR job to test autobalance for setting number of mappers for TIF<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * This does not run real MR job<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void testAutobalanceNumOfSplit() throws IOException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    // set up splits for testing<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(5);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    int[] regionLen = {10, 20, 20, 40, 60};<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    for (int i = 0; i &lt; 5; i++) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      InputSplit split = new TableSplit(TABLE_NAME, new Scan(),<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          Bytes.toBytes(i), Bytes.toBytes(i + 1), "", "", regionLen[i] * 1048576);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      splits.add(split);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    TableInputFormat tif = new TableInputFormat();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    List&lt;InputSplit&gt; res = tif.calculateAutoBalancedSplits(splits, 1073741824);<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    assertEquals("Saw the wrong number of splits", 5, res.size());<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    TableSplit ts1 = (TableSplit) res.get(0);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    assertEquals("The first split end key should be", 2, Bytes.toInt(ts1.getEndRow()));<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    TableSplit ts2 = (TableSplit) res.get(1);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    assertEquals("The second split regionsize should be", 20 * 1048576, ts2.getLength());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    TableSplit ts3 = (TableSplit) res.get(2);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertEquals("The third split start key should be", 3, Bytes.toInt(ts3.getStartRow()));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    TableSplit ts4 = (TableSplit) res.get(4);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    assertNotEquals("The seventh split start key should not be", 4, Bytes.toInt(ts4.getStartRow()));<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>}<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">192</span>    Job job = Job.getInstance(c, jobName);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    job.setMapperClass(ScanMapper.class);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    job.setReducerClass(ScanReducer.class);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    job.setMapOutputValueClass(ImmutableBytesWritable.class);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    job.setInputFormatClass(TableInputFormat.class);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    job.setNumReduceTasks(1);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableMapReduceUtil.addDependencyJars(job);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    assertTrue(job.waitForCompletion(true));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Tests a MR scan using specific start and stop rows.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  protected void testScan(String start, String stop, String last)<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    String jobName = "Scan" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") + "To" +<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    Scan scan = new Scan();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    if (start != null) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      scan.withStartRow(Bytes.toBytes(start));<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (stop != null) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      scan.withStopRow(Bytes.toBytes(stop));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    LOG.info("scan before: " + scan);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Job job = Job.getInstance(c, jobName);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME, scan, ScanMapper.class,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    job.setReducerClass(ScanReducer.class);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    job.setNumReduceTasks(1); // one to get final "first" and "last" key<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    LOG.info("Started " + job.getJobName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    assertTrue(job.waitForCompletion(true));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    LOG.info("After map/reduce completion - job " + jobName);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  /**<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * This test does not run MR job<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  protected void testNumOfSplits(int splitsPerRegion, int expectedNumOfSplits)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    String jobName = "TestJobForNumOfSplits";<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Scan scan = new Scan();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    c.set(KEY_STARTROW, "");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    c.set(KEY_LASTROW, "");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    Job job = Job.getInstance(c, jobName);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    TableInputFormat tif = new TableInputFormat();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tif.setConf(job.getConfiguration());<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Assert.assertEquals(TABLE_NAME, table.getName());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    List&lt;InputSplit&gt; splits = tif.getSplits(job);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(expectedNumOfSplits, splits.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Run MR job to check the number of mapper = expectedNumOfSplits<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  protected void testNumOfSplitsMR(int splitsPerRegion, int expectedNumOfSplits)<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String jobName = "TestJobForNumOfSplits-MR";<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    JobConf c = new JobConf(TEST_UTIL.getConfiguration());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Scan scan = new Scan();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    c.set(KEY_STARTROW, "");<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    c.set(KEY_LASTROW, "");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    Job job = Job.getInstance(c, jobName);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setReducerClass(ScanReducer.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    job.setNumReduceTasks(1);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    job.setOutputFormatClass(NullOutputFormat.class);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    assertTrue("job failed!", job.waitForCompletion(true));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // for some reason, hbase does not expose JobCounter.TOTAL_LAUNCHED_MAPS,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // we use TaskCounter.SHUFFLED_MAPS to get total launched maps<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    assertEquals("Saw the wrong count of mappers per region", expectedNumOfSplits,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      job.getCounters().findCounter(TaskCounter.SHUFFLED_MAPS).getValue());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  }<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>   * Run MR job to test autobalance for setting number of mappers for TIF This does not run real MR<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * job<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  protected void testAutobalanceNumOfSplit() throws IOException {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    // set up splits for testing<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    int[] regionLen = { 10, 20, 20, 40, 60 };<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    for (int i = 0; i &lt; 5; i++) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      InputSplit split = new TableSplit(TABLE_NAME, new Scan(), Bytes.toBytes(i),<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        Bytes.toBytes(i + 1), "", "", regionLen[i] * 1048576);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      splits.add(split);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    TableInputFormat tif = new TableInputFormat();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    List&lt;InputSplit&gt; res = tif.calculateAutoBalancedSplits(splits, 1073741824);<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    assertEquals("Saw the wrong number of splits", 5, res.size());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    TableSplit ts1 = (TableSplit) res.get(0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals("The first split end key should be", 2, Bytes.toInt(ts1.getEndRow()));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    TableSplit ts2 = (TableSplit) res.get(1);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    assertEquals("The second split regionsize should be", 20 * 1048576, ts2.getLength());<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableSplit ts3 = (TableSplit) res.get(2);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    assertEquals("The third split start key should be", 3, Bytes.toInt(ts3.getStartRow()));<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TableSplit ts4 = (TableSplit) res.get(4);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertNotEquals("The seventh split start key should not be", 4, Bytes.toInt(ts4.getStartRow()));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>}<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
 
 
 


[12/31] hbase-site git commit: Published site at f8b12805bbff18fc94e2ac6894f92276b1453350.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
index 9716afd..3253dec 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.html
@@ -31,319 +31,297 @@
 <span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.fs.Path;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Result;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Table;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.io.NullWritable;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapred.JobConf;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.mapreduce.Job;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.mapreduce.TaskCounter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.AfterClass;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.Assert;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.BeforeClass;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>/**<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * &lt;p&gt;<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * Tests various scan start and stop row scenarios. This is set in a scan and<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * tested in a MapReduce job to see if that is handed over and done properly<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * too.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * &lt;/p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;p&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * This test is broken into two parts in order to side-step the test timeout<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * period of 900, as documented in HBASE-8326.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * &lt;/p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public abstract class TestTableInputFormatScanBase {<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(TestTableInputFormatScanBase.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  static final TableName TABLE_NAME = TableName.valueOf("scantest");<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  static final byte[][] INPUT_FAMILYS = {Bytes.toBytes("content1"), Bytes.toBytes("content2")};<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  static final String KEY_STARTROW = "startRow";<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  static final String KEY_LASTROW = "stpRow";<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static Table table = null;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @BeforeClass<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public static void setUpBeforeClass() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    // test intermittently fails under hadoop2 (2.0.2-alpha) if shortcircuit-read (scr) is on.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    // this turns it off for this test.  TODO: Figure out why scr breaks recovery.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    System.setProperty("hbase.tests.use.shortcircuit.reads", "false");<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>    // switch TIF to log at DEBUG level<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    TEST_UTIL.enableDebug(TableInputFormat.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    TEST_UTIL.enableDebug(TableInputFormatBase.class);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // start mini hbase cluster<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    TEST_UTIL.startMiniCluster(3);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    // create and fill table<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, INPUT_FAMILYS);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    TEST_UTIL.loadTable(table, INPUT_FAMILYS, null, false);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  @AfterClass<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static void tearDownAfterClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    TEST_UTIL.shutdownMiniCluster();<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>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * Pass the key and value to reduce.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static class ScanMapper<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  extends TableMapper&lt;ImmutableBytesWritable, ImmutableBytesWritable&gt; {<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>     * Pass the key and value to reduce.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>     *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>     * @param key  The key, here "aaa", "aab" etc.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>     * @param value  The value is the same as the key.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>     * @param context  The task context.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>     * @throws IOException When reading the rows fails.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>     */<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @Override<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    public void map(ImmutableBytesWritable key, Result value,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      Context context)<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    throws IOException, InterruptedException {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (value.size() != 2) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        throw new IOException("There should be two input columns");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Map&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        cfMap = value.getMap();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (!cfMap.containsKey(INPUT_FAMILYS[0]) || !cfMap.containsKey(INPUT_FAMILYS[1])) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        throw new IOException("Wrong input columns. Missing: '" +<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          Bytes.toString(INPUT_FAMILYS[0]) + "' or '" + Bytes.toString(INPUT_FAMILYS[1]) + "'.");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>      String val0 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[0], null));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      String val1 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[1], null));<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.info("map: key -&gt; " + Bytes.toStringBinary(key.get()) +<a name="line.127"></a>
-<span class="sourceLineNo">128</span>               ", value -&gt; (" + val0 + ", " + val1 + ")");<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      context.write(key, key);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * Checks the last and first key seen against the scanner boundaries.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public static class ScanReducer<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  extends Reducer&lt;ImmutableBytesWritable, ImmutableBytesWritable,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>                    NullWritable, NullWritable&gt; {<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    private String first = null;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    private String last = null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    protected void reduce(ImmutableBytesWritable key,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        Iterable&lt;ImmutableBytesWritable&gt; values, Context context)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    throws IOException ,InterruptedException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      int count = 0;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      for (ImmutableBytesWritable value : values) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        String val = Bytes.toStringBinary(value.get());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        LOG.info("reduce: key[" + count + "] -&gt; " +<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          Bytes.toStringBinary(key.get()) + ", value -&gt; " + val);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        if (first == null) first = val;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        last = val;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        count++;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    protected void cleanup(Context context)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    throws IOException, InterruptedException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      Configuration c = context.getConfiguration();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      String startRow = c.get(KEY_STARTROW);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      String lastRow = c.get(KEY_LASTROW);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      LOG.info("cleanup: first -&gt; \"" + first + "\", start row -&gt; \"" + startRow + "\"");<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      LOG.info("cleanup: last -&gt; \"" + last + "\", last row -&gt; \"" + lastRow + "\"");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      if (startRow != null &amp;&amp; startRow.length() &gt; 0) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        assertEquals(startRow, first);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      if (lastRow != null &amp;&amp; lastRow.length() &gt; 0) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        assertEquals(lastRow, last);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  /**<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * Tests an MR Scan initialized from properties set in the Configuration.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   * @throws IOException<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   * @throws ClassNotFoundException<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * @throws InterruptedException<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  protected void testScanFromConfiguration(String start, String stop, String last)<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    String jobName = "ScanFromConfig" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    c.set(TableInputFormat.INPUT_TABLE, TABLE_NAME.getNameAsString());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    c.set(TableInputFormat.SCAN_COLUMN_FAMILY, Bytes.toString(INPUT_FAMILYS[0]) + ", "<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          + Bytes.toString(INPUT_FAMILYS[1]));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.190"></a>
+<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.List;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Locale;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.NavigableMap;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.Path;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.TableName;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Result;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Table;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.io.NullWritable;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.mapred.JobConf;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.Job;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.mapreduce.TaskCounter;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.AfterClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.Assert;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.BeforeClass;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * Tests various scan start and stop row scenarios. This is set in a scan and tested in a MapReduce<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * job to see if that is handed over and done properly too.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>public abstract class TestTableInputFormatScanBase {<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final Logger LOG = LoggerFactory.getLogger(TestTableInputFormatScanBase.class);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static final TableName TABLE_NAME = TableName.valueOf("scantest");<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  static final byte[][] INPUT_FAMILYS = {Bytes.toBytes("content1"), Bytes.toBytes("content2")};<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  static final String KEY_STARTROW = "startRow";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String KEY_LASTROW = "stpRow";<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static Table table = null;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  @BeforeClass<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static void setUpBeforeClass() throws Exception {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    // test intermittently fails under hadoop2 (2.0.2-alpha) if shortcircuit-read (scr) is on.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // this turns it off for this test.  TODO: Figure out why scr breaks recovery.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    System.setProperty("hbase.tests.use.shortcircuit.reads", "false");<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    // switch TIF to log at DEBUG level<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    TEST_UTIL.enableDebug(TableInputFormat.class);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    TEST_UTIL.enableDebug(TableInputFormatBase.class);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    // start mini hbase cluster<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    TEST_UTIL.startMiniCluster(3);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // create and fill table<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    table = TEST_UTIL.createMultiRegionTable(TABLE_NAME, INPUT_FAMILYS);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    TEST_UTIL.loadTable(table, INPUT_FAMILYS, null, false);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  @AfterClass<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public static void tearDownAfterClass() throws Exception {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  /**<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * Pass the key and value to reduce.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public static class ScanMapper<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  extends TableMapper&lt;ImmutableBytesWritable, ImmutableBytesWritable&gt; {<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>     * Pass the key and value to reduce.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>     *<a name="line.100"></a>
+<span class="sourceLineNo">101</span>     * @param key  The key, here "aaa", "aab" etc.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>     * @param value  The value is the same as the key.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>     * @param context  The task context.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>     * @throws IOException When reading the rows fails.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>     */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    @Override<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void map(ImmutableBytesWritable key, Result value,<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      Context context)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    throws IOException, InterruptedException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      if (value.size() != 2) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        throw new IOException("There should be two input columns");<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      Map&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        cfMap = value.getMap();<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (!cfMap.containsKey(INPUT_FAMILYS[0]) || !cfMap.containsKey(INPUT_FAMILYS[1])) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        throw new IOException("Wrong input columns. Missing: '" +<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          Bytes.toString(INPUT_FAMILYS[0]) + "' or '" + Bytes.toString(INPUT_FAMILYS[1]) + "'.");<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>      String val0 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[0], null));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      String val1 = Bytes.toStringBinary(value.getValue(INPUT_FAMILYS[1], null));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      LOG.info("map: key -&gt; " + Bytes.toStringBinary(key.get()) +<a name="line.123"></a>
+<span class="sourceLineNo">124</span>               ", value -&gt; (" + val0 + ", " + val1 + ")");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      context.write(key, key);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<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>   * Checks the last and first key seen against the scanner boundaries.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static class ScanReducer<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  extends Reducer&lt;ImmutableBytesWritable, ImmutableBytesWritable,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>                    NullWritable, NullWritable&gt; {<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    private String first = null;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    private String last = null;<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    protected void reduce(ImmutableBytesWritable key,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        Iterable&lt;ImmutableBytesWritable&gt; values, Context context)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    throws IOException ,InterruptedException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      int count = 0;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      for (ImmutableBytesWritable value : values) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        String val = Bytes.toStringBinary(value.get());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("reduce: key[" + count + "] -&gt; " +<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          Bytes.toStringBinary(key.get()) + ", value -&gt; " + val);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        if (first == null) first = val;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        last = val;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        count++;<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><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    protected void cleanup(Context context)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    throws IOException, InterruptedException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Configuration c = context.getConfiguration();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      String startRow = c.get(KEY_STARTROW);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      String lastRow = c.get(KEY_LASTROW);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      LOG.info("cleanup: first -&gt; \"" + first + "\", start row -&gt; \"" + startRow + "\"");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      LOG.info("cleanup: last -&gt; \"" + last + "\", last row -&gt; \"" + lastRow + "\"");<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      if (startRow != null &amp;&amp; startRow.length() &gt; 0) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        assertEquals(startRow, first);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      if (lastRow != null &amp;&amp; lastRow.length() &gt; 0) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        assertEquals(lastRow, last);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><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>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Tests an MR Scan initialized from properties set in the Configuration.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected void testScanFromConfiguration(String start, String stop, String last)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    String jobName = "ScanFromConfig" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    c.set(TableInputFormat.INPUT_TABLE, TABLE_NAME.getNameAsString());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    c.set(TableInputFormat.SCAN_COLUMN_FAMILY,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      Bytes.toString(INPUT_FAMILYS[0]) + ", " + Bytes.toString(INPUT_FAMILYS[1]));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (start != null) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      c.set(TableInputFormat.SCAN_ROW_START, start);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (stop != null) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      c.set(TableInputFormat.SCAN_ROW_STOP, stop);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
 <span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    if (start != null) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      c.set(TableInputFormat.SCAN_ROW_START, start);<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>    if (stop != null) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      c.set(TableInputFormat.SCAN_ROW_STOP, stop);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    Job job = new Job(c, jobName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    job.setMapperClass(ScanMapper.class);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    job.setReducerClass(ScanReducer.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    job.setMapOutputValueClass(ImmutableBytesWritable.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    job.setInputFormatClass(TableInputFormat.class);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    job.setNumReduceTasks(1);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.addDependencyJars(job);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    assertTrue(job.waitForCompletion(true));<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>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * Tests a MR scan using specific start and stop rows.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @throws IOException<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws ClassNotFoundException<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @throws InterruptedException<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  protected void testScan(String start, String stop, String last)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  throws IOException, InterruptedException, ClassNotFoundException {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String jobName = "Scan" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") +<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      "To" + (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    Scan scan = new Scan();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (start != null) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      scan.setStartRow(Bytes.toBytes(start));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (stop != null) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      scan.setStopRow(Bytes.toBytes(stop));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    LOG.info("scan before: " + scan);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    Job job = new Job(c, jobName);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    TableMapReduceUtil.initTableMapperJob(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      TABLE_NAME, scan, ScanMapper.class,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    job.setReducerClass(ScanReducer.class);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    job.setNumReduceTasks(1); // one to get final "first" and "last" key<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LOG.info("Started " + job.getJobName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertTrue(job.waitForCompletion(true));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    LOG.info("After map/reduce completion - job " + jobName);<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><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  /**<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * This test does not run MR job<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   *<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @throws IOException<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @throws ClassNotFoundException<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * @throws InterruptedException<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  public void testNumOfSplits(int splitsPerRegion, int expectedNumOfSplits) throws IOException,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      InterruptedException,<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      ClassNotFoundException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String jobName = "TestJobForNumOfSplits";<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    Scan scan = new Scan();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    c.set(KEY_STARTROW, "");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    c.set(KEY_LASTROW, "");<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    Job job = new Job(c, jobName);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    TableInputFormat tif = new TableInputFormat();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    tif.setConf(job.getConfiguration());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    Assert.assertEquals(TABLE_NAME, table.getName());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    List&lt;InputSplit&gt; splits = tif.getSplits(job);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    Assert.assertEquals(expectedNumOfSplits, splits.size());<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>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Run MR job to check the number of mapper = expectedNumOfSplits<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @throws IOException<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * @throws InterruptedException<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @throws ClassNotFoundException<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public void testNumOfSplitsMR(int splitsPerRegion, int expectedNumOfSplits) throws IOException,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      InterruptedException,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      ClassNotFoundException {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    String jobName = "TestJobForNumOfSplits-MR";<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    JobConf c = new JobConf(TEST_UTIL.getConfiguration());<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    Scan scan = new Scan();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    c.set(KEY_STARTROW, "");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    c.set(KEY_LASTROW, "");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Job job = Job.getInstance(c, jobName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    job.setReducerClass(ScanReducer.class);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    job.setNumReduceTasks(1);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    job.setOutputFormatClass(NullOutputFormat.class);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertTrue("job failed!", job.waitForCompletion(true));<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // for some reason, hbase does not expose JobCounter.TOTAL_LAUNCHED_MAPS,<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // we use TaskCounter.SHUFFLED_MAPS to get total launched maps<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    assertEquals("Saw the wrong count of mappers per region", expectedNumOfSplits,<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        job.getCounters().findCounter(TaskCounter.SHUFFLED_MAPS).getValue());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Run MR job to test autobalance for setting number of mappers for TIF<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * This does not run real MR job<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void testAutobalanceNumOfSplit() throws IOException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    // set up splits for testing<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(5);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    int[] regionLen = {10, 20, 20, 40, 60};<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    for (int i = 0; i &lt; 5; i++) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      InputSplit split = new TableSplit(TABLE_NAME, new Scan(),<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          Bytes.toBytes(i), Bytes.toBytes(i + 1), "", "", regionLen[i] * 1048576);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      splits.add(split);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    TableInputFormat tif = new TableInputFormat();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    List&lt;InputSplit&gt; res = tif.calculateAutoBalancedSplits(splits, 1073741824);<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    assertEquals("Saw the wrong number of splits", 5, res.size());<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    TableSplit ts1 = (TableSplit) res.get(0);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    assertEquals("The first split end key should be", 2, Bytes.toInt(ts1.getEndRow()));<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    TableSplit ts2 = (TableSplit) res.get(1);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    assertEquals("The second split regionsize should be", 20 * 1048576, ts2.getLength());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    TableSplit ts3 = (TableSplit) res.get(2);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertEquals("The third split start key should be", 3, Bytes.toInt(ts3.getStartRow()));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    TableSplit ts4 = (TableSplit) res.get(4);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    assertNotEquals("The seventh split start key should not be", 4, Bytes.toInt(ts4.getStartRow()));<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>}<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">192</span>    Job job = Job.getInstance(c, jobName);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    job.setMapperClass(ScanMapper.class);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    job.setReducerClass(ScanReducer.class);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    job.setMapOutputValueClass(ImmutableBytesWritable.class);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    job.setInputFormatClass(TableInputFormat.class);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    job.setNumReduceTasks(1);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableMapReduceUtil.addDependencyJars(job);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    assertTrue(job.waitForCompletion(true));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Tests a MR scan using specific start and stop rows.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  protected void testScan(String start, String stop, String last)<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    String jobName = "Scan" + (start != null ? start.toUpperCase(Locale.ROOT) : "Empty") + "To" +<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      (stop != null ? stop.toUpperCase(Locale.ROOT) : "Empty");<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    Scan scan = new Scan();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    if (start != null) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      scan.withStartRow(Bytes.toBytes(start));<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    c.set(KEY_STARTROW, start != null ? start : "");<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (stop != null) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      scan.withStopRow(Bytes.toBytes(stop));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    c.set(KEY_LASTROW, last != null ? last : "");<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    LOG.info("scan before: " + scan);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    Job job = Job.getInstance(c, jobName);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME, scan, ScanMapper.class,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    job.setReducerClass(ScanReducer.class);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    job.setNumReduceTasks(1); // one to get final "first" and "last" key<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    FileOutputFormat.setOutputPath(job, new Path(job.getJobName()));<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    LOG.info("Started " + job.getJobName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    assertTrue(job.waitForCompletion(true));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    LOG.info("After map/reduce completion - job " + jobName);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  /**<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * Tests Number of inputSplits for MR job when specify number of mappers for TableInputFormatXXX<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * This test does not run MR job<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  protected void testNumOfSplits(int splitsPerRegion, int expectedNumOfSplits)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    String jobName = "TestJobForNumOfSplits";<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Configuration c = new Configuration(TEST_UTIL.getConfiguration());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Scan scan = new Scan();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    c.set(KEY_STARTROW, "");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    c.set(KEY_LASTROW, "");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    Job job = Job.getInstance(c, jobName);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    TableInputFormat tif = new TableInputFormat();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tif.setConf(job.getConfiguration());<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Assert.assertEquals(TABLE_NAME, table.getName());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    List&lt;InputSplit&gt; splits = tif.getSplits(job);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(expectedNumOfSplits, splits.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Run MR job to check the number of mapper = expectedNumOfSplits<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  protected void testNumOfSplitsMR(int splitsPerRegion, int expectedNumOfSplits)<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String jobName = "TestJobForNumOfSplits-MR";<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    LOG.info("Before map/reduce startup - job " + jobName);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    JobConf c = new JobConf(TEST_UTIL.getConfiguration());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Scan scan = new Scan();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    scan.addFamily(INPUT_FAMILYS[0]);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    scan.addFamily(INPUT_FAMILYS[1]);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    c.setInt("hbase.mapreduce.tableinput.mappers.per.region", splitsPerRegion);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    c.set(KEY_STARTROW, "");<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    c.set(KEY_LASTROW, "");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    Job job = Job.getInstance(c, jobName);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    TableMapReduceUtil.initTableMapperJob(TABLE_NAME.getNameAsString(), scan, ScanMapper.class,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ImmutableBytesWritable.class, ImmutableBytesWritable.class, job);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setReducerClass(ScanReducer.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    job.setNumReduceTasks(1);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    job.setOutputFormatClass(NullOutputFormat.class);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    assertTrue("job failed!", job.waitForCompletion(true));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // for some reason, hbase does not expose JobCounter.TOTAL_LAUNCHED_MAPS,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // we use TaskCounter.SHUFFLED_MAPS to get total launched maps<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    assertEquals("Saw the wrong count of mappers per region", expectedNumOfSplits,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      job.getCounters().findCounter(TaskCounter.SHUFFLED_MAPS).getValue());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  }<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>   * Run MR job to test autobalance for setting number of mappers for TIF This does not run real MR<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * job<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  protected void testAutobalanceNumOfSplit() throws IOException {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    // set up splits for testing<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    List&lt;InputSplit&gt; splits = new ArrayList&lt;&gt;(5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    int[] regionLen = { 10, 20, 20, 40, 60 };<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    for (int i = 0; i &lt; 5; i++) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      InputSplit split = new TableSplit(TABLE_NAME, new Scan(), Bytes.toBytes(i),<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        Bytes.toBytes(i + 1), "", "", regionLen[i] * 1048576);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      splits.add(split);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    TableInputFormat tif = new TableInputFormat();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    List&lt;InputSplit&gt; res = tif.calculateAutoBalancedSplits(splits, 1073741824);<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    assertEquals("Saw the wrong number of splits", 5, res.size());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    TableSplit ts1 = (TableSplit) res.get(0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals("The first split end key should be", 2, Bytes.toInt(ts1.getEndRow()));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    TableSplit ts2 = (TableSplit) res.get(1);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    assertEquals("The second split regionsize should be", 20 * 1048576, ts2.getLength());<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableSplit ts3 = (TableSplit) res.get(2);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    assertEquals("The third split start key should be", 3, Bytes.toInt(ts3.getStartRow()));<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TableSplit ts4 = (TableSplit) res.get(4);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertNotEquals("The seventh split start key should not be", 4, Bytes.toInt(ts4.getStartRow()));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>}<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html
new file mode 100644
index 0000000..f35fea9
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanEmptyToAPP extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanEmptyToAPP.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanEmptyToAPP()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan(null, "app", "apo");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html
new file mode 100644
index 0000000..b265ffc
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanEmptyToBBA extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanEmptyToBBA.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanEmptyToBBA()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan(null, "bba", "baz");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html
new file mode 100644
index 0000000..2bb7f4c
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanEmptyToBBB extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanEmptyToBBB.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanEmptyToBBB()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan(null, "bbb", "bba");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html
new file mode 100644
index 0000000..710d615
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanEmptyToEmpty extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanEmptyToEmpty.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanEmptyToEmpty()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan(null, null, null);<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/06efc31c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html
new file mode 100644
index 0000000..71ef05c
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.html
@@ -0,0 +1,115 @@
+<!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 java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.MapReduceTests;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.junit.ClassRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Test;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>@Category({ MapReduceTests.class, MediumTests.class })<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class TestTableInputFormatScanEmptyToOPP extends TestTableInputFormatScanBase {<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  @ClassRule<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.32"></a>
+<span class="sourceLineNo">033</span>    HBaseClassTestRule.forClass(TestTableInputFormatScanEmptyToOPP.class);<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Tests a MR scan using specific start and stop rows.<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 testScanEmptyToOPP()<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      throws IOException, InterruptedException, ClassNotFoundException {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    testScan(null, "opp", "opo");<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>}<a name="line.43"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>